Sha256: b4f4dbd93bf1c82aa48298f1796983f5c7b36e9442f2bcca063e78663e20562b

Contents?: true

Size: 1.79 KB

Versions: 57

Compression:

Stored size: 1.79 KB

Contents

module ShopifyCLI
  class ProjectType
    extend Feature::Set

    class << self
      attr_accessor :project_type,
        :project_name,
        :project_load_shallow

      def repository
        @repository ||= []
      end
      alias_method :all_loaded, :repository

      def inherited(klass)
        super
        repository << klass
        klass.project_type = @current_type
        klass.project_load_shallow = @shallow_load
      end

      def load_type(current_type, shallow = false)
        filepath = File.join(ShopifyCLI::ROOT, "lib", "project_types", current_type.to_s, "cli.rb")
        return unless File.exist?(filepath)
        @shallow_load = shallow
        @current_type = current_type
        load(filepath)
        @current_type = nil
        @shallow_load = false
        for_app_type(current_type)
      end

      def load_all
        Dir.glob(File.join(ShopifyCLI::ROOT, "lib", "project_types", "*", "cli.rb")).map do |filepath|
          load_type(filepath.split(File::Separator)[-2].to_sym, true)
        end
      end

      def for_app_type(type)
        repository.find { |k| k.project_type.to_s == type.to_s }
      end

      def project_filepath(path)
        File.join(ShopifyCLI::PROJECT_TYPES_DIR, project_type.to_s, path)
      end

      def title(name)
        @project_name = name
      end

      def register_task(task, name)
        return if project_load_shallow
        ShopifyCLI::Tasks.register(task, name)
      end

      def register_messages(messages)
        # Make sure we don't attempt to register a file more than once as that will fail
        @registered_message_files ||= {}
        return if @registered_message_files.key?(@project_type)
        @registered_message_files[@project_type] = true

        Context.load_messages(messages)
      end
    end
  end
end

Version data entries

57 entries across 57 versions & 1 rubygems

Version Path
shopify-cli-2.19.0 lib/shopify_cli/project_type.rb
shopify-cli-2.18.1 lib/shopify_cli/project_type.rb
shopify-cli-2.18.0 lib/shopify_cli/project_type.rb
shopify-cli-2.17.0 lib/shopify_cli/project_type.rb
shopify-cli-2.16.1 lib/shopify_cli/project_type.rb
shopify-cli-2.16.0 lib/shopify_cli/project_type.rb
shopify-cli-2.15.6 lib/shopify_cli/project_type.rb
shopify-cli-2.15.5 lib/shopify_cli/project_type.rb
shopify-cli-2.15.4 lib/shopify_cli/project_type.rb
shopify-cli-2.15.3 lib/shopify_cli/project_type.rb
shopify-cli-2.15.2 lib/shopify_cli/project_type.rb
shopify-cli-2.15.1 lib/shopify_cli/project_type.rb
shopify-cli-2.15.0 lib/shopify_cli/project_type.rb
shopify-cli-2.14.0 lib/shopify_cli/project_type.rb
shopify-cli-2.13.0 lib/shopify_cli/project_type.rb
shopify-cli-2.12.0 lib/shopify_cli/project_type.rb
shopify-cli-2.11.2 lib/shopify_cli/project_type.rb
shopify-cli-2.11.1 lib/shopify_cli/project_type.rb
shopify-cli-2.11.0 lib/shopify_cli/project_type.rb
shopify-cli-2.10.2 lib/shopify_cli/project_type.rb