Sha256: f543a5a7d07b62e5b3a434c7cd927a96b12fb6f01682653b4da2c41491fb5cee

Contents?: true

Size: 739 Bytes

Versions: 30

Compression:

Stored size: 739 Bytes

Contents

require "zeitwerk"

module Ufo
  class Autoloader
    class Inflector < Zeitwerk::Inflector
      def camelize(basename, _abspath)
        map = { cli: "CLI", dsl: "DSL", version: "VERSION" }
        map[basename.to_sym] || super
      end
    end

    class << self
      def setup
        loader = Zeitwerk::Loader.new
        loader.inflector = Inflector.new
        loader.push_dir(File.dirname(__dir__)) # lib

        helpers = "#{ufo_root}/.ufo/helpers"
        loader.push_dir(helpers) if File.exist?(helpers) # project helpers

        loader.setup
      end

      # Autoloader runs so early that Ufo.root is not available, so we must declare it here
      def ufo_root
        ENV['UFO_ROOT'] || '.'
      end
    end
  end
end

Version data entries

30 entries across 30 versions & 1 rubygems

Version Path
ufo-6.2.5 lib/ufo/autoloader.rb
ufo-6.2.4 lib/ufo/autoloader.rb
ufo-6.2.3 lib/ufo/autoloader.rb
ufo-6.2.2 lib/ufo/autoloader.rb
ufo-6.2.1 lib/ufo/autoloader.rb
ufo-6.2.0 lib/ufo/autoloader.rb
ufo-6.1.5 lib/ufo/autoloader.rb
ufo-6.1.4 lib/ufo/autoloader.rb
ufo-6.1.3 lib/ufo/autoloader.rb
ufo-6.1.2 lib/ufo/autoloader.rb
ufo-6.1.1 lib/ufo/autoloader.rb
ufo-6.1.0 lib/ufo/autoloader.rb
ufo-6.0.9 lib/ufo/autoloader.rb
ufo-6.0.8 lib/ufo/autoloader.rb
ufo-6.0.7 lib/ufo/autoloader.rb
ufo-6.0.6 lib/ufo/autoloader.rb
ufo-6.0.5 lib/ufo/autoloader.rb
ufo-6.0.4 lib/ufo/autoloader.rb
ufo-6.0.3 lib/ufo/autoloader.rb
ufo-6.0.2 lib/ufo/autoloader.rb