+158
-30
lines changedFilter options
+158
-30
lines changed Original file line number Diff line number Diff line change
@@ -152,7 +152,7 @@ def self.activate(gem, *version_requirements)
152
152
@loaded_specs[spec.name] = spec
153
153
154
154
# Load dependent gems first
155
-
spec.dependencies.each do |dep_gem|
155
+
spec.runtime_dependencies.each do |dep_gem|
156
156
activate dep_gem
157
157
end
158
158
Original file line number Diff line number Diff line change
@@ -62,7 +62,8 @@ def execute
62
62
:install_dir => options[:install_dir],
63
63
:security_policy => options[:security_policy],
64
64
:wrappers => options[:wrappers],
65
-
:bin_dir => options[:bin_dir]
65
+
:bin_dir => options[:bin_dir],
66
+
:development => options[:development],
66
67
}
67
68
68
69
exit_code = 0
Original file line number Diff line number Diff line change
@@ -80,7 +80,7 @@ def execute
80
80
say "gem '#{spec.name}', '= #{spec.version}'" unless locked[spec.name]
81
81
locked[spec.name] = true
82
82
83
-
spec.dependencies.each do |dep|
83
+
spec.runtime_dependencies.each do |dep|
84
84
next if locked[dep.name]
85
85
candidates = Gem.source_index.search dep.name, dep.requirement_list
86
86
Original file line number Diff line number Diff line change
@@ -26,7 +26,7 @@ module Kernel
26
26
def require(path) # :nodoc:
27
27
gem_original_require path
28
28
rescue LoadError => load_error
29
-
if load_error.message =~ /\A[Nn]o such file to load -- #{Regexp.escape path}\z/ and
29
+
if load_error.message =~ /#{Regexp.escape path}\z/ and
30
30
spec = Gem.searcher.find(path) then
31
31
Gem.activate(spec.name, "= #{spec.version}")
32
32
gem_original_require path
Original file line number Diff line number Diff line change
@@ -9,9 +9,15 @@
9
9
##
10
10
# The Dependency class holds a Gem name and a Gem::Requirement
11
11
class Gem::Dependency
12
+
TYPES = [
13
+
:runtime,
14
+
:development
15
+
]
12
16
13
17
attr_accessor :name
14
18
19
+
attr_reader :type
20
+
15
21
attr_writer :version_requirements
16
22
17
23
def <=>(other)
@@ -24,8 +30,15 @@ def <=>(other)
24
30
# name:: [String] name of the Gem
25
31
# version_requirements:: [String Array] version requirement (e.g. ["> 1.2"])
26
32
#
27
-
def initialize(name, version_requirements)
33
+
def initialize(name, version_requirements, type=:runtime)
28
34
@name = name
35
+
36
+
unless TYPES.include? type
37
+
raise ArgumentError, "Valid types are #{TYPES.inspect}, not #{@type.inspect}"
38
+
end
39
+
40
+
@type = type
41
+
29
42
@version_requirements = Gem::Requirement.create version_requirements
30
43
@version_requirement = nil # Avoid warnings.
31
44
end
@@ -48,17 +61,18 @@ def normalize
48
61
end
49
62
50
63
def to_s # :nodoc:
51
-
"#{name} (#{version_requirements})"
64
+
"#{name} (#{version_requirements}#{", #{type}" if type != :runtime})"
52
65
end
53
66
54
67
def ==(other) # :nodoc:
55
68
self.class === other &&
56
69
self.name == other.name &&
70
+
self.type == other.type &&
57
71
self.version_requirements == other.version_requirements
58
72
end
59
73
60
74
def hash
61
-
name.hash + version_requirements.hash
75
+
name.hash + type.hash + version_requirements.hash
62
76
end
63
77
64
78
end
Original file line number Diff line number Diff line change
@@ -44,6 +44,7 @@ def initialize(options = {})
44
44
options = DEFAULT_OPTIONS.merge options
45
45
46
46
@bin_dir = options[:bin_dir]
47
+
@development = options[:development]
47
48
@domain = options[:domain]
48
49
@env_shebang = options[:env_shebang]
49
50
@force = options[:force]
@@ -120,7 +121,10 @@ def gather_dependencies
120
121
next if spec.nil? or seen[spec.name]
121
122
seen[spec.name] = true
122
123
123
-
spec.dependencies.each do |dep|
124
+
deps = spec.runtime_dependencies
125
+
deps |= spec.development_dependencies if @development
126
+
127
+
deps.each do |dep|
124
128
results = find_gems_with_sources(dep).reverse # local gems first
125
129
126
130
results.each do |dep_spec, source_uri|
@@ -222,7 +226,8 @@ def install dep_or_name, version = Gem::Requirement.default
222
226
:install_dir => @install_dir,
223
227
:security_policy => @security_policy,
224
228
:wrappers => @wrappers,
225
-
:bin_dir => @bin_dir
229
+
:bin_dir => @bin_dir,
230
+
:development => @development
226
231
227
232
spec = inst.install
228
233
Original file line number Diff line number Diff line change
@@ -69,7 +69,7 @@ def find_name(full_name)
69
69
# Are all the dependencies in the list satisfied?
70
70
def ok?
71
71
@specs.all? do |spec|
72
-
spec.dependencies.all? do |dep|
72
+
spec.runtime_dependencies.all? do |dep|
73
73
@specs.find { |s| s.satisfies_requirement? dep }
74
74
end
75
75
end
Original file line number Diff line number Diff line change
@@ -89,6 +89,12 @@ def add_install_update_options
89
89
'foo_exec18') do |value, options|
90
90
options[:format_executable] = value
91
91
end
92
+
93
+
add_option(:"Install/Update", "--development",
94
+
"Install any additional development",
95
+
"dependencies") do |value, options|
96
+
options[:development] = true
97
+
end
92
98
end
93
99
94
100
# Default options for the gem install command.
Original file line number Diff line number Diff line change
@@ -76,6 +76,7 @@ def initialize(gem, options={})
76
76
@security_policy = options[:security_policy]
77
77
@wrappers = options[:wrappers]
78
78
@bin_dir = options[:bin_dir]
79
+
@development = options[:development]
79
80
80
81
begin
81
82
@format = Gem::Format.from_file_by_path @gem, @security_policy
@@ -119,7 +120,10 @@ def install
119
120
end
120
121
121
122
unless @ignore_dependencies then
122
-
@spec.dependencies.each do |dep_gem|
123
+
deps = @spec.runtime_dependencies
124
+
deps |= @spec.development_dependencies if @development
125
+
126
+
deps.each do |dep_gem|
123
127
ensure_dependency @spec, dep_gem
124
128
end
125
129
end
Original file line number Diff line number Diff line change
@@ -421,6 +421,7 @@ def run
421
421
total_file_count += spec.files.size
422
422
deps = spec.dependencies.collect { |dep|
423
423
{ "name" => dep.name,
424
+
"type" => dep.type,
424
425
"version" => dep.version_requirements.to_s, }
425
426
}
426
427
deps = deps.sort_by { |dep| [dep["name"].downcase, dep["version"]] }
You can’t perform that action at this time.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4