Project

General

Profile

« Previous | Next » 

Revision b4562a3a

Added by Evgeni Golov about 4 years ago

make get-gemfile-deps smarter when it comes to non-grouped gems

View differences:

get-gemfile-deps
HEADER = ARGV.shift || 'specfile'
EXCLUDED_GROUPS = [:test, :development]
EXCLUDED_REQUIRES = {
'BuildRequires' => ['strscan', 'stringio'],
'Requires' => ['strscan', 'stringio', 'activerecord-nulldb-adapter']
}
SCL_PREFIXES = JSON.load(File.read(File.join(__dir__, 'scl_prefixes.json')))
@requires = {}
@group = 'main'
def package(gem)
return "%{?scl_prefix#{SCL_PREFIXES[gem]}}rubygem(#{gem})"
end
......
end
def gem(name, *requirements)
return if ['strscan', 'stringio'].include?(name)
return if EXCLUDED_REQUIRES[$require].include?(name)
@requires[@group] = {} unless @requires.key?(@group)
@requires[@group][$require] = [] unless @requires[@group].key?($require)
requirements.pop if requirements.last.kind_of?(Hash)
if requirements.empty?
puts "#{$require}: #{package(name)}"
@requires[@group][$require] << "#{package(name)}"
else
requirement = Gem::Requirement.create(requirements)
requirement.requirements.each do |op, version|
if op == '~>'
puts "#{$require}: #{package(name)} >= #{version}"
puts "#{$require}: #{package(name)} < #{version.bump}.0"
@requires[@group][$require] << "#{package(name)} >= #{version}"
@requires[@group][$require] << "#{package(name)} < #{version.bump}.0"
else
puts "#{$require}: #{package(name)} #{op} #{version}"
@requires[@group][$require] << "#{package(name)} #{op} #{version}"
end
end
end
end
def group(name, &block)
if $open_group
puts "# end #{HEADER} #{$open_group} #{$require}"
$open_group = nil
end
unless EXCLUDED_GROUPS.include?(name)
puts ""
puts "# start #{HEADER} #{name} #{$require}"
@group = name
block.call
puts "# end #{HEADER} #{name} #{$require}"
@group = 'main'
end
end
['BuildRequires', 'Requires'].each do |req|
$require = req
$open_group = 'main'
puts "# start #{HEADER} #{$open_group} #{$require}"
load filename
end
@requires.each do |group, reqs|
reqs.each do |req, lines|
puts "# start #{HEADER} #{group} #{req}"
lines.each do |line|
puts "#{req}: #{line}"
end
puts "# end #{HEADER} #{group} #{req}"
end
end

Also available in: Unified diff