Sha256: 45db22d316d0789b83211768579dc014fca1e2c81f44f25450fa6fa66c4bef99

Contents?: true

Size: 1.15 KB

Versions: 24

Compression:

Stored size: 1.15 KB

Contents

require 'logger'

module Generator
  class CommandLine
    def initialize(paths)
      @paths = paths
    end

    def parse(args)
      parser = GeneratorOptparser.new(args, paths)
      @options = parser.options
      generators if parser.options_valid?
    end

    private
    attr_reader :paths

    def generators
      implementations.map { |slug| generator(implementation(slug)) }
    end

    def implementations
      @options[:all] ? Files::GeneratorCases.available(paths.track) : [@options[:slug]]
    end

    def generator(implementation)
      generator_class.new(implementation)
    end

    def generator_class
      freeze? ? GenerateTests : UpdateVersionAndGenerateTests
    end

    def freeze?
      @options[:freeze] || @options[:all]
    end

    def implementation(slug)
      LoggingImplementation.new(
        implementation: Implementation.new(paths: paths, slug: slug),
        logger: logger
      )
    end

    def logger
      logger = Logger.new($stdout)
      logger.formatter = proc { |_severity, _datetime, _progname, msg| "#{msg}\n" }
      logger.level = @options[:verbose] ? Logger::DEBUG : Logger::INFO
      logger
    end
  end
end

Version data entries

24 entries across 24 versions & 1 rubygems

Version Path
trackler-2.1.0.36 tracks/ruby/lib/generator/command_line.rb
trackler-2.1.0.34 tracks/ruby/lib/generator/command_line.rb
trackler-2.1.0.33 tracks/ruby/lib/generator/command_line.rb
trackler-2.1.0.32 tracks/ruby/lib/generator/command_line.rb
trackler-2.1.0.31 tracks/ruby/lib/generator/command_line.rb
trackler-2.1.0.30 tracks/ruby/lib/generator/command_line.rb
trackler-2.1.0.29 tracks/ruby/lib/generator/command_line.rb
trackler-2.1.0.28 tracks/ruby/lib/generator/command_line.rb
trackler-2.1.0.27 tracks/ruby/lib/generator/command_line.rb
trackler-2.1.0.26 tracks/ruby/lib/generator/command_line.rb
trackler-2.1.0.25 tracks/ruby/lib/generator/command_line.rb
trackler-2.1.0.24 tracks/ruby/lib/generator/command_line.rb
trackler-2.1.0.23 tracks/ruby/lib/generator/command_line.rb
trackler-2.1.0.22 tracks/ruby/lib/generator/command_line.rb
trackler-2.1.0.21 tracks/ruby/lib/generator/command_line.rb
trackler-2.1.0.20 tracks/ruby/lib/generator/command_line.rb
trackler-2.1.0.19 tracks/ruby/lib/generator/command_line.rb
trackler-2.1.0.18 tracks/ruby/lib/generator/command_line.rb
trackler-2.1.0.17 tracks/ruby/lib/generator/command_line.rb
trackler-2.1.0.16 tracks/ruby/lib/generator/command_line.rb