Sha256: ee3e751650637d129c58915505aa188b0c9b7f29bdfa8e04a79332a86585dac4

Contents?: true

Size: 1.4 KB

Versions: 101

Compression:

Stored size: 1.4 KB

Contents

require 'delegate'

module Generator
  class Repository
    include Files::TrackFiles
    include Files::MetadataFiles
    include TemplateValuesFactory

    def initialize(paths:, exercise_name:)
      @paths = paths
      @exercise_name = exercise_name
    end

    attr_reader :paths, :exercise_name

    def version
      tests_version.to_i
    end

    def update_tests_version
      tests_version.increment
    end

    def update_example_solution
      example_solution.update_version(version)
    end

    def create_tests_file
      minitest_tests.generate(
        template: tests_template.to_s,
        values: template_values
      )
    end
  end

  # This exists to give us a clue as to what we are delegating to.
  class RepositoryDelegator < SimpleDelegator
  end

  # A repository that also logs its progress.
  class LoggingRepository < RepositoryDelegator
    def initialize(repository:, logger:)
      __setobj__ @repository = repository
      @logger = logger
    end

    def update_tests_version
      @repository.update_tests_version
      @logger.debug "Incremented tests version to #{version}"
    end

    def update_example_solution
      @repository.update_example_solution
      @logger.debug "Updated version in example solution to #{version}"
    end

    def create_tests_file
      @repository.create_tests_file
      @logger.info "Generated #{exercise_name} tests version #{version}"
    end
  end
end

Version data entries

101 entries across 101 versions & 1 rubygems

Version Path
trackler-2.1.0.11 tracks/ruby/lib/generator/repository.rb
trackler-2.1.0.10 tracks/ruby/lib/generator/repository.rb
trackler-2.1.0.9 tracks/ruby/lib/generator/repository.rb
trackler-2.1.0.8 tracks/ruby/lib/generator/repository.rb
trackler-2.1.0.7 tracks/ruby/lib/generator/repository.rb
trackler-2.1.0.6 tracks/ruby/lib/generator/repository.rb
trackler-2.1.0.5 tracks/ruby/lib/generator/repository.rb
trackler-2.1.0.4 tracks/ruby/lib/generator/repository.rb
trackler-2.1.0.3 tracks/ruby/lib/generator/repository.rb
trackler-2.1.0.2 tracks/ruby/lib/generator/repository.rb
trackler-2.1.0.1 tracks/ruby/lib/generator/repository.rb
trackler-2.1.0.0 tracks/ruby/lib/generator/repository.rb
trackler-2.0.8.55 tracks/ruby/lib/generator/repository.rb
trackler-2.0.8.54 tracks/ruby/lib/generator/repository.rb
trackler-2.0.8.53 tracks/ruby/lib/generator/repository.rb
trackler-2.0.8.52 tracks/ruby/lib/generator/repository.rb
trackler-2.0.8.51 tracks/ruby/lib/generator/repository.rb
trackler-2.0.8.50 tracks/ruby/lib/generator/repository.rb
trackler-2.0.8.49 tracks/ruby/lib/generator/repository.rb
trackler-2.0.8.48 tracks/ruby/lib/generator/repository.rb