Sha256: 619b6a51fff015261ec0e15371031a2603213777c6270d825e90addb868f22ec

Contents?: true

Size: 1.25 KB

Versions: 90

Compression:

Stored size: 1.25 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
      update? ? UpdateVersionAndGenerateTests : GenerateTests
    end

    def update?
      @options[:update]
    end

    def implementation(slug)
      exercise = Exercise.new(slug: slug)
      repository = Repository.new(paths: paths, slug: slug)
      LoggingImplementation.new(
        implementation: Implementation.new(repository: repository, exercise: exercise),
        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

90 entries across 90 versions & 1 rubygems

Version Path
trackler-2.2.1.137 tracks/ruby/lib/generator/command_line.rb
trackler-2.2.1.136 tracks/ruby/lib/generator/command_line.rb
trackler-2.2.1.135 tracks/ruby/lib/generator/command_line.rb
trackler-2.2.1.134 tracks/ruby/lib/generator/command_line.rb
trackler-2.2.1.133 tracks/ruby/lib/generator/command_line.rb
trackler-2.2.1.132 tracks/ruby/lib/generator/command_line.rb
trackler-2.2.1.131 tracks/ruby/lib/generator/command_line.rb
trackler-2.2.1.130 tracks/ruby/lib/generator/command_line.rb
trackler-2.2.1.129 tracks/ruby/lib/generator/command_line.rb
trackler-2.2.1.128 tracks/ruby/lib/generator/command_line.rb
trackler-2.2.1.127 tracks/ruby/lib/generator/command_line.rb
trackler-2.2.1.126 tracks/ruby/lib/generator/command_line.rb
trackler-2.2.1.125 tracks/ruby/lib/generator/command_line.rb
trackler-2.2.1.124 tracks/ruby/lib/generator/command_line.rb
trackler-2.2.1.123 tracks/ruby/lib/generator/command_line.rb
trackler-2.2.1.122 tracks/ruby/lib/generator/command_line.rb
trackler-2.2.1.121 tracks/ruby/lib/generator/command_line.rb
trackler-2.2.1.120 tracks/ruby/lib/generator/command_line.rb
trackler-2.2.1.119 tracks/ruby/lib/generator/command_line.rb
trackler-2.2.1.118 tracks/ruby/lib/generator/command_line.rb