bundix 2.0.3 → 2.0.4

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c0b1635b56596e63fa5290d2f2bb51de41ea624d
4
- data.tar.gz: 605180b6803b0c38c7aa6b473c3bbfd91726f012
3
+ metadata.gz: 396e7d0bc64e702a8aa6be3de6d01557828e74d9
4
+ data.tar.gz: 8c269513efaa9958b835273768a3ce1bd8fe2137
5
5
  SHA512:
6
- metadata.gz: 19419fc6a8c382dcd8c44d83b76fb3b71dddcb17bebc3eb7125778ca97cc37472b5f29cecbda9ff19f2c6da552b443610f4e44596c5e9a21e10e0fe03d3235bc
7
- data.tar.gz: 89884730995838a078ac29f0de29d87490a2904a3d0663495ae2a0b7ce3376e27a2561f31fb391fad9e71cdea98539f67d9a85c0ffd836f77f9a10565b85ec0f
6
+ metadata.gz: 76ce621cbfcf70d908e0ce94416a021bf9599133bb4922ece0c01ef2fcf4a3c8ab5cf62ccaafe13f14fe592f1de0e4113e636d50362a30324fc9a277327a3455
7
+ data.tar.gz: 86534b85654782d92eea6e773a7ace2b0d1edb69db5dfb16d0268f5bb7d9a91ab7b5e3357977b75c509266ecf30354cc9fd2a73e67f57091c41f1c8c26e44efc
data/lib/bundix/source.rb CHANGED
@@ -18,6 +18,8 @@ class Bundix
18
18
 
19
19
  def nix_prefetch_url(*args)
20
20
  sh(NIX_PREFETCH_URL, '--type', 'sha256', *args)
21
+ rescue
22
+ nil
21
23
  end
22
24
 
23
25
  def nix_prefetch_git(uri, revision)
@@ -32,10 +34,8 @@ class Bundix
32
34
  spec.source.caches.each do |cache|
33
35
  path = File.join(cache, "#{spec.name}-#{spec.version}.gem")
34
36
  next unless File.file?(path)
35
- begin
36
- return nix_prefetch_url("file://#{path}")[SHA256_32]
37
- rescue
38
- end
37
+ hash = nix_prefetch_url("file://#{path}")[SHA256_32]
38
+ return hash if hash
39
39
  end
40
40
 
41
41
  nil
@@ -43,55 +43,31 @@ class Bundix
43
43
 
44
44
  def fetch_remotes_hash(spec, remotes)
45
45
  remotes.each do |remote|
46
- begin
47
- return fetch_remote_hash(spec, remote)
48
- rescue
49
- end
46
+ hash = fetch_remote_hash(spec, remote)
47
+ return remote, hash if hash
50
48
  end
51
49
 
52
50
  nil
53
51
  end
54
52
 
55
53
  def fetch_remote_hash(spec, remote)
56
- hash = nil
57
-
58
- if URI(remote).host == 'rubygems.org'
59
- uri = "#{remote}/api/v1/versions/#{spec.name}.json"
60
- puts "Getting SHA256 from: #{uri}" if $VERBOSE
61
- open uri do |io|
62
- versions = JSON.parse(io.read)
63
- if found_version = versions.find{|obj| obj['number'] == spec.version.to_s }
64
- hash = found_version['sha']
65
- break
66
- end
67
- end
68
- end
69
-
70
54
  uri = "#{remote}/gems/#{spec.name}-#{spec.version}.gem"
71
-
72
- if hash
73
- begin
74
- nix_prefetch_url(uri, hash)[SHA256_16]
75
- rescue
76
- nix_prefetch_url(uri)[SHA256_32]
77
- end
78
- else
79
- nix_prefetch_url(uri)[SHA256_32]
80
- end
55
+ nix_prefetch_url(uri)[SHA256_32]
56
+ rescue
57
+ nil
81
58
  end
82
59
 
83
60
  def convert_rubygems
84
61
  remotes = spec.source.remotes.map{|remote| remote.to_s.sub(/\/+$/, '') }
85
- hash = fetch_local_hash(spec) || fetch_remotes_hash(spec, remotes)
62
+ hash = fetch_local_hash(spec)
63
+ remote, hash = fetch_remotes_hash(spec, remotes) unless hash
86
64
  hash = sh(NIX_HASH, '--type', 'sha256', '--to-base32', hash)[SHA256_32]
87
65
  fail "couldn't fetch hash for #{spec.name}-#{spec.version}" unless hash
88
66
  puts "#{hash} => #{spec.name}-#{spec.version}.gem" if $VERBOSE
89
67
 
90
- {
91
- type: 'gem',
92
- remotes: remotes,
93
- sha256: hash
94
- }
68
+ { type: 'gem',
69
+ remotes: (remote ? [remote] : remotes),
70
+ sha256: hash }
95
71
  end
96
72
 
97
73
  def convert_git
@@ -102,13 +78,11 @@ class Bundix
102
78
  fail "couldn't fetch hash for #{spec.name}-#{spec.version}" unless hash
103
79
  puts "#{hash} => #{uri}" if $VERBOSE
104
80
 
105
- {
106
- type: 'git',
81
+ { type: 'git',
107
82
  url: uri.to_s,
108
83
  rev: revision,
109
84
  sha256: hash,
110
- fetchSubmodules: false
111
- }
85
+ fetchSubmodules: false }
112
86
  end
113
87
  end
114
88
  end
@@ -0,0 +1,3 @@
1
+ class Bundix
2
+ VERSION = '2.0.4'
3
+ end
data/lib/bundix.rb CHANGED
@@ -4,11 +4,10 @@ require 'open-uri'
4
4
  require 'open3'
5
5
  require 'pp'
6
6
 
7
+ require_relative 'bundix/version'
7
8
  require_relative 'bundix/source'
8
9
 
9
10
  class Bundix
10
- VERSION = '2.0.3'
11
-
12
11
  NIX_INSTANTIATE = 'nix-instantiate'
13
12
  NIX_PREFETCH_URL = 'nix-prefetch-url'
14
13
  NIX_PREFETCH_GIT = 'nix-prefetch-git'
@@ -35,21 +34,8 @@ class Bundix
35
34
 
36
35
  # reverse so git comes last
37
36
  lock.specs.reverse_each.with_object({}) do |spec, gems|
38
- name, cached = cache.find{|k, v|
39
- k == spec.name &&
40
- v['version'] == spec.version.to_s &&
41
- v['source'] && v['source']['sha256'].to_s.size == 52
42
- }
43
-
44
- if cached
45
- gems[name] = cached
46
- next
47
- end
48
-
49
- gems[spec.name] = {
50
- version: spec.version.to_s,
51
- source: Source.new(spec).convert
52
- }
37
+ gem = find_cached_spec(spec, cache) || convert_spec(spec, cache)
38
+ gems.merge!(gem)
53
39
 
54
40
  if options[:deps] && spec.dependencies.any?
55
41
  gems[spec.name][:dependencies] = spec.dependencies.map(&:name) - ['bundler']
@@ -57,6 +43,33 @@ class Bundix
57
43
  end
58
44
  end
59
45
 
46
+ def convert_spec(spec, cache)
47
+ {spec.name => {version: spec.version.to_s, source: Source.new(spec).convert}}
48
+ rescue => ex
49
+ warn "Skipping #{spec.name}: #{ex}"
50
+ puts ex.backtrace
51
+ {spec.name => {}}
52
+ end
53
+
54
+ def find_cached_spec(spec, cache)
55
+ name, cached = cache.find{|k, v|
56
+ next unless k == spec.name
57
+ next unless cached_source = v['source']
58
+
59
+ case spec_source = spec.source
60
+ when Bundler::Source::Git
61
+ next unless cached_rev = cached_source['rev']
62
+ next unless spec_rev = spec_source.options['revision']
63
+ spec_rev == cached_rev
64
+ when Bundler::Source::Rubygems
65
+ v['version'] == spec.version.to_s
66
+ end
67
+ }
68
+
69
+ {name => cached} if cached
70
+ end
71
+
72
+
60
73
  def parse_gemset
61
74
  path = File.expand_path(options[:gemset])
62
75
  return {} unless File.file?(path)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bundix
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.3
4
+ version: 2.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael 'manveru' Fellinger
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-02-01 00:00:00.000000000 Z
11
+ date: 2016-02-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -34,6 +34,7 @@ files:
34
34
  - bin/bundix
35
35
  - lib/bundix.rb
36
36
  - lib/bundix/source.rb
37
+ - lib/bundix/version.rb
37
38
  homepage: https://github.com/manveru/bundix
38
39
  licenses:
39
40
  - MIT
@@ -54,7 +55,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
54
55
  version: '0'
55
56
  requirements: []
56
57
  rubyforge_project:
57
- rubygems_version: 2.4.5
58
+ rubygems_version: 2.4.5.1
58
59
  signing_key:
59
60
  specification_version: 4
60
61
  summary: Creates Nix packages from Gemfiles.