mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
Merge branch 'add_conflicts' of https://github.com/take-cheeze/mruby into take-cheeze-add_conflicts
This commit is contained in:
+16
-2
@@ -32,7 +32,7 @@ module MRuby
|
||||
attr_accessor :bins
|
||||
|
||||
attr_accessor :requirements
|
||||
attr_reader :dependencies
|
||||
attr_reader :dependencies, :conflicts
|
||||
|
||||
attr_accessor :export_include_paths
|
||||
|
||||
@@ -72,7 +72,7 @@ module MRuby
|
||||
@bins = []
|
||||
|
||||
@requirements = []
|
||||
@dependencies = []
|
||||
@dependencies, @conflicts = [], []
|
||||
@export_include_paths = []
|
||||
@export_include_paths << "#{dir}/include" if File.directory? "#{dir}/include"
|
||||
|
||||
@@ -102,6 +102,14 @@ module MRuby
|
||||
@dependencies << {:gem => name, :requirements => requirements, :default => default_gem}
|
||||
end
|
||||
|
||||
def add_conflicts(*names)
|
||||
@conflicts += names.map { |n| {:gem => n} }
|
||||
end
|
||||
|
||||
def add_conflict(name, *req)
|
||||
@conflicts << {:gem => name, :requirements => req.empty? ? nil : req}
|
||||
end
|
||||
|
||||
def self.bin=(bin)
|
||||
@bins = [bin].flatten
|
||||
end
|
||||
@@ -323,6 +331,12 @@ module MRuby
|
||||
fail "#{name} version should be #{req_versions.join(' and ')} but was '#{dep_g.version}'"
|
||||
end
|
||||
end
|
||||
|
||||
cfls = g.conflicts.select { |c|
|
||||
cfl_g = gem_table[c[:gem]]
|
||||
cfl_g and cfl_g.version_ok?(c[:requirements] || ['>= 0.0.0'])
|
||||
}.map { |c| "#{c[:gem]}(#{gem_table[c[:gem]].version})" }
|
||||
fail "Conflicts of gem `#{g.name}` found: #{cfls.join ', '}" unless cfls.empty?
|
||||
end
|
||||
|
||||
class << gem_table
|
||||
|
||||
Reference in New Issue
Block a user