Class: Qor::Test::Gemfile

Inherits:
Object
  • Object
show all
Defined in:
lib/qor_test/gemfile.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Gemfile

Returns a new instance of Gemfile.



6
7
8
# File 'lib/qor_test/gemfile.rb', line 6

def initialize options={}
  self.options = options
end

Instance Attribute Details

#optionsObject

Returns the value of attribute options.



4
5
6
# File 'lib/qor_test/gemfile.rb', line 4

def options
  @options
end

Instance Method Details

#generate_gemfilesObject



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/qor_test/gemfile.rb', line 19

def generate_gemfiles
  gems_set_from_config = Qor::Test::Configuration.gems_set_from_config(options)
  gems_hash_from_gemfile = Qor::Test::Configuration.gems_hash_from_gemfile(options)
  gemfile_length = [gems_set_from_config.length, 1].max

  gemfile_dir = File.join(Qor::Test::CLI.temp_directory, Qor::Test::Configuration.configuration_digest(options))

  if File.exist?(gemfile_dir)
    Dir[File.join(gemfile_dir, '*')].select {|x| x !~ /.lock$/ }
  else
    FileUtils.mkdir_p(gemfile_dir)

    (0...gemfile_length).map do |index|
      filename = File.join(gemfile_dir, "Gemfile.#{index}")
      write_gemfile(gems_set_from_config[index] || {}, gems_hash_from_gemfile, filename)
    end
  end
end

#generate_gems_entry(gems_from_config, gems_from_gemfile) ⇒ Object



38
39
40
41
42
43
44
# File 'lib/qor_test/gemfile.rb', line 38

def generate_gems_entry(gems_from_config, gems_from_gemfile)
  gem_names = [gems_from_config.keys, gems_from_gemfile.keys].flatten.compact.uniq

  gem_names.map do |name|
    gems_from_config[name] || gems_from_gemfile[name]
  end.compact.map(&:to_s).join("\n")
end

#group_nameObject



15
16
17
# File 'lib/qor_test/gemfile.rb', line 15

def group_name
  Qor::Test::Configuration.envs(options)[0]
end

#ruby_versionsObject



10
11
12
13
# File 'lib/qor_test/gemfile.rb', line 10

def ruby_versions
  versions = Qor::Test::Configuration.ruby_versions(options)
  versions.empty? ? [RUBY_VERSION] : versions
end

#write_gemfile(gems_from_config, gems_from_gemfile, filename) ⇒ Object



46
47
48
49
50
51
52
# File 'lib/qor_test/gemfile.rb', line 46

def write_gemfile(gems_from_config, gems_from_gemfile, filename)
  File.open(filename, "w+") do |f|
    f << Qor::Test::Configuration.combined_sources(options)
    f << Qor::Test::Configuration.combined_gemspecs(options)
    f << generate_gems_entry(gems_from_config, gems_from_gemfile)
  end.path
end