bundix 2.2.1 → 2.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/bundix +27 -3
- data/lib/bundix/source.rb +32 -5
- data/lib/bundix/version.rb +1 -1
- data/lib/bundix.rb +2 -8
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 623983fdd769dae25b35ce73300b7c15e2e05406
|
4
|
+
data.tar.gz: 467820098d81bee233d3292e0a26cca9924e5c62
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 730d8af2547d66f2fb33e1e5dd5c1afafec4f30dbc896de6f942552f485ae187e001f65ea786486553110f813e798e7cb8010f9c4012f9a82b686cc9b77bf359
|
7
|
+
data.tar.gz: e8e3ffa6148a782fe38c44128e11c86e836681eec0e03fddcccd2800b96a430f8f48f5e0c0923ef4b87787c6ccb14e3e5de18287a1acfe5a36c35f9bf9fa0e62
|
data/bin/bundix
CHANGED
@@ -10,8 +10,9 @@ require_relative '../lib/bundix'
|
|
10
10
|
options = {
|
11
11
|
ruby: 'ruby',
|
12
12
|
bundle_pack_path: 'vendor/bundle',
|
13
|
+
gemfile: 'Gemfile',
|
13
14
|
lockfile: 'Gemfile.lock',
|
14
|
-
gemset: 'gemset.nix'
|
15
|
+
gemset: 'gemset.nix',
|
15
16
|
}
|
16
17
|
|
17
18
|
op = OptionParser.new do |o|
|
@@ -39,18 +40,32 @@ op = OptionParser.new do |o|
|
|
39
40
|
options[:lockfile] = File.expand_path(value)
|
40
41
|
end
|
41
42
|
|
42
|
-
o.on '
|
43
|
-
options[:
|
43
|
+
o.on '--gemfile=Gemfile', 'path to the Gemfile' do |value|
|
44
|
+
options[:gemfile] = File.expand_path(value)
|
45
|
+
end
|
46
|
+
|
47
|
+
o.on '-d', '--dependencies', 'include gem dependencies (deprecated)' do
|
48
|
+
warn '--dependencies/-d is deprecated because'
|
49
|
+
warn 'dependencies will always be fetched'
|
44
50
|
end
|
45
51
|
|
46
52
|
o.on '-q', '--quiet', 'only output errors' do
|
47
53
|
options[:quiet] = true
|
48
54
|
end
|
49
55
|
|
56
|
+
o.on '-l', '--lock', 'generate Gemfile.lock first' do
|
57
|
+
options[:lock] = true
|
58
|
+
end
|
59
|
+
|
50
60
|
o.on '-v', '--version', 'show the version of bundix' do
|
51
61
|
puts Bundix::VERSION
|
52
62
|
exit
|
53
63
|
end
|
64
|
+
|
65
|
+
o.on '--env', 'show the environment in bundix' do
|
66
|
+
system('env')
|
67
|
+
exit
|
68
|
+
end
|
54
69
|
end
|
55
70
|
|
56
71
|
op.parse!
|
@@ -80,6 +95,15 @@ if options[:init]
|
|
80
95
|
end
|
81
96
|
end
|
82
97
|
|
98
|
+
if options[:lock]
|
99
|
+
lock = !File.file?(options[:lockfile])
|
100
|
+
lock ||= File.mtime(options[:gemfile]) > File.mtime(options[:lockfile])
|
101
|
+
if lock
|
102
|
+
system('bundle', 'lock')
|
103
|
+
fail 'bundle lock failed' unless $?.success?
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
83
107
|
gemset = Bundix.new(options).convert
|
84
108
|
|
85
109
|
tempfile = Tempfile.new('gemset.nix', encoding: 'UTF-8')
|
data/lib/bundix/source.rb
CHANGED
@@ -16,10 +16,37 @@ class Bundix
|
|
16
16
|
Bundix.sh(*args, &block)
|
17
17
|
end
|
18
18
|
|
19
|
+
def download(file, url)
|
20
|
+
warn "Downloading #{file} from #{url}"
|
21
|
+
uri = URI(url)
|
22
|
+
open_options = {}
|
23
|
+
if uri.user && uri.password
|
24
|
+
open_options[:http_basic_authentication] = [uri.user, uri.password]
|
25
|
+
uri.user = nil
|
26
|
+
uri.password = nil
|
27
|
+
end
|
28
|
+
open(uri, 'r', 0600, open_options) do |net|
|
29
|
+
File.open(file, 'wb+') { |local|
|
30
|
+
File.copy_stream(net, local)
|
31
|
+
}
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
19
35
|
def nix_prefetch_url(url)
|
20
|
-
|
21
|
-
|
22
|
-
|
36
|
+
dir = File.expand_path('~/.cache/bundix')
|
37
|
+
FileUtils.mkdir_p dir
|
38
|
+
file = File.join(dir, url.gsub(/[^\w-]+/, '_'))
|
39
|
+
|
40
|
+
unless File.size?(file)
|
41
|
+
download(file, url)
|
42
|
+
end
|
43
|
+
|
44
|
+
return unless File.size?(file)
|
45
|
+
|
46
|
+
sh('nix-prefetch-url', '--type', 'sha256', "file://#{file}")
|
47
|
+
.force_encoding('UTF-8').strip
|
48
|
+
rescue => ex
|
49
|
+
puts ex
|
23
50
|
nil
|
24
51
|
end
|
25
52
|
|
@@ -55,7 +82,7 @@ class Bundix
|
|
55
82
|
uri = "#{remote}/gems/#{spec.name}-#{spec.version}.gem"
|
56
83
|
result = nix_prefetch_url(uri)
|
57
84
|
return unless result
|
58
|
-
result
|
85
|
+
result[SHA256_32]
|
59
86
|
rescue => e
|
60
87
|
puts "ignoring error during fetching: #{e}"
|
61
88
|
puts e.backtrace
|
@@ -66,8 +93,8 @@ class Bundix
|
|
66
93
|
remotes = spec.source.remotes.map{|remote| remote.to_s.sub(/\/+$/, '') }
|
67
94
|
hash = fetch_local_hash(spec)
|
68
95
|
remote, hash = fetch_remotes_hash(spec, remotes) unless hash
|
69
|
-
hash = sh(NIX_HASH, '--type', 'sha256', '--to-base32', hash)[SHA256_32]
|
70
96
|
fail "couldn't fetch hash for #{spec.name}-#{spec.version}" unless hash
|
97
|
+
hash = sh(NIX_HASH, '--type', 'sha256', '--to-base32', hash)[SHA256_32]
|
71
98
|
puts "#{hash} => #{spec.name}-#{spec.version}.gem" if $VERBOSE
|
72
99
|
|
73
100
|
{ type: 'gem',
|
data/lib/bundix/version.rb
CHANGED
data/lib/bundix.rb
CHANGED
@@ -26,11 +26,7 @@ class Bundix
|
|
26
26
|
attr_reader :options
|
27
27
|
|
28
28
|
def initialize(options)
|
29
|
-
@options = {
|
30
|
-
quiet: false,
|
31
|
-
tempfile: nil,
|
32
|
-
deps: false
|
33
|
-
}.merge(options)
|
29
|
+
@options = { quiet: false, tempfile: nil }.merge(options)
|
34
30
|
end
|
35
31
|
|
36
32
|
def convert
|
@@ -42,9 +38,7 @@ class Bundix
|
|
42
38
|
gem = find_cached_spec(spec, cache) || convert_spec(spec, cache)
|
43
39
|
gems.merge!(gem)
|
44
40
|
|
45
|
-
|
46
|
-
gems[spec.name]['dependencies'] = spec.dependencies.map(&:name) - ['bundler']
|
47
|
-
end
|
41
|
+
gems[spec.name]['dependencies'] = spec.dependencies.map(&:name) - ['bundler']
|
48
42
|
end
|
49
43
|
end
|
50
44
|
|
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.
|
4
|
+
version: 2.3.0
|
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: 2017-
|
11
|
+
date: 2017-07-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|