nix 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/nix/gem-nix-command.rb +26 -24
- data/lib/nix/version.rb +1 -1
- metadata +4 -4
data/lib/nix/gem-nix-command.rb
CHANGED
@@ -55,12 +55,8 @@ class Gem::Specification
|
|
55
55
|
@@sha256_cache = {} unless self.class_variable_defined?(:@@sha256_cache)
|
56
56
|
def sha256
|
57
57
|
cache_file = "#{ENV['HOME']}/.gem/nix-sha256.cache"
|
58
|
-
if @@sha256_cache.empty?
|
59
|
-
|
60
|
-
File.open(cache_file,'r') do |f|
|
61
|
-
@@sha256_cache = Marshal.load(f)
|
62
|
-
end
|
63
|
-
end
|
58
|
+
if @@sha256_cache.empty? and FileTest.exists?(cache_file)
|
59
|
+
File.open(cache_file,'r') { |f| @@sha256_cache = Marshal.load(f) }
|
64
60
|
end
|
65
61
|
|
66
62
|
unless @@sha256_cache.key?(src_url)
|
@@ -107,7 +103,7 @@ class Gem::Commands::NixCommand < Gem::Command
|
|
107
103
|
@seen = {}
|
108
104
|
|
109
105
|
# args to dep informations
|
110
|
-
args.
|
106
|
+
args.each { |arg|
|
111
107
|
if arg =~ /(.+)-?(.*)?/ then
|
112
108
|
gem_name = $1
|
113
109
|
version = $2.empty? ? Gem::Requirement.default : Gem::Version.new($2)
|
@@ -115,12 +111,10 @@ class Gem::Commands::NixCommand < Gem::Command
|
|
115
111
|
raise Gem::CommandLineError, "couldn't parse arg. expected: name or name-version"
|
116
112
|
end
|
117
113
|
|
118
|
-
warn "adding #{gem_name}\n"
|
119
|
-
|
120
114
|
adddep(Gem::Dependency.new gem_name, version)
|
121
115
|
}
|
122
116
|
|
123
|
-
|
117
|
+
say " total: #{@gems_with_deps.length}" if Gem.configuration.really_verbose
|
124
118
|
|
125
119
|
print <<-EOF
|
126
120
|
# WARNING: automatically generated file
|
@@ -160,6 +154,7 @@ g: # Get dependencies from patched gems
|
|
160
154
|
# helper funtions ================
|
161
155
|
|
162
156
|
def adddep(dep)
|
157
|
+
say "adding dep #{dep.name}." if Gem.configuration.really_verbose
|
163
158
|
gem = find_gem_with_source(dep)
|
164
159
|
raise Gem::CommandLineError, "couldn't find #{dep}" if gem.nil?
|
165
160
|
full_name = gem[0].full_name
|
@@ -170,12 +165,10 @@ g: # Get dependencies from patched gems
|
|
170
165
|
# development deps can't be found. Some are old. Thus only add rutime dependencies
|
171
166
|
deps = gem[0].dependencies.find_all { |d| d.type == :runtime }
|
172
167
|
|
173
|
-
|
168
|
+
say " total deps of #{full_name}: #{deps.length}" if Gem.configuration.really_verbose
|
174
169
|
|
175
|
-
dep_specs = []
|
176
170
|
# recurse while collecting deps
|
177
|
-
deps.
|
178
|
-
|
171
|
+
dep_specs = deps.map { |dep| adddep(dep) }
|
179
172
|
|
180
173
|
@gems_with_deps[full_name] = [
|
181
174
|
gem[0], # spec
|
@@ -186,18 +179,27 @@ g: # Get dependencies from patched gems
|
|
186
179
|
end
|
187
180
|
|
188
181
|
|
189
|
-
# copied from
|
182
|
+
# copied from various rubygems sources, added caching to speedup subsequent executions
|
183
|
+
# TODO: develop a patch to rubygems sources that will increase speed for all users
|
190
184
|
def find_gem_with_source(dep)
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
185
|
+
if @specs_by_name.nil? or @specs_by_name.empty?
|
186
|
+
@specs_by_name = { }
|
187
|
+
f = Gem::SpecFetcher.fetcher
|
188
|
+
f.list(true, @prerelease).map do |source_uri, specs|
|
189
|
+
specs.each do |spec_name, version, spec_platform|
|
190
|
+
if Gem::Platform.match(spec_platform)
|
191
|
+
@specs_by_name[spec_name] = [] unless @specs_by_name.key?(spec_name)
|
192
|
+
@specs_by_name[spec_name].push([version, spec_platform, source_uri])
|
193
|
+
end
|
194
|
+
end
|
197
195
|
end
|
196
|
+
end
|
197
|
+
|
198
|
+
found = @specs_by_name[dep.name].select do |version, spec_platform, source_uri|
|
199
|
+
dep.match?(dep.name, version)
|
200
|
+
end
|
198
201
|
|
199
|
-
|
200
|
-
|
201
|
-
found.reverse[0]
|
202
|
+
latest = found.sort { |a, b| a.first <=> b.first }.last
|
203
|
+
[Gem::SpecFetcher.fetcher.fetch_spec([dep.name, latest.first, latest[1]], latest.last), latest.last.to_s]
|
202
204
|
end
|
203
205
|
end
|
data/lib/nix/version.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nix
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 25
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 3
|
10
|
+
version: 0.0.3
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Yury G. Kudryashov
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-01-
|
18
|
+
date: 2011-01-18 00:00:00 +03:00
|
19
19
|
default_executable:
|
20
20
|
dependencies: []
|
21
21
|
|