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.
@@ -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
- if FileTest.exists?(cache_file)
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.map { |arg|
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
- warn " total: #{@gems_with_deps.length}"
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
- warn " total deps of #{full_name}: #{deps.length}"
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.each {|dep_var| dep_specs.push(adddep(dep_var)) }
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 dependency_installer, stripped
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
- gems_and_sources = []
192
-
193
- # no local
194
-
195
- requirements = dep.requirement.requirements.map do |req, ver|
196
- req
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
- all = true
200
- found = Gem::SpecFetcher.fetcher.fetch dep, all, true, @prerelease
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
@@ -1,3 +1,3 @@
1
1
  module Nix
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
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: 27
4
+ hash: 25
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 2
10
- version: 0.0.2
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-17 00:00:00 +03:00
18
+ date: 2011-01-18 00:00:00 +03:00
19
19
  default_executable:
20
20
  dependencies: []
21
21