librarian 0.1.0 → 0.1.1
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 +7 -0
- data/.travis.yml +1 -5
- data/CHANGELOG.md +12 -0
- data/README.md +5 -1
- data/Rakefile +5 -0
- data/lib/librarian/action/persist_resolution_mixin.rb +1 -1
- data/lib/librarian/cli.rb +3 -2
- data/lib/librarian/environment.rb +38 -14
- data/lib/librarian/helpers.rb +16 -0
- data/lib/librarian/mock/environment.rb +0 -8
- data/lib/librarian/posix.rb +120 -0
- data/lib/librarian/source/git.rb +2 -0
- data/lib/librarian/source/git/repository.rb +10 -72
- data/lib/librarian/version.rb +1 -1
- data/librarian.gemspec +8 -8
- data/spec/functional/posix_spec.rb +34 -0
- data/spec/functional/source/git/repository_spec.rb +48 -29
- data/spec/functional/source/git_spec.rb +30 -0
- data/spec/support/fakefs.rb +13 -0
- data/spec/unit/action/base_spec.rb +1 -1
- data/spec/unit/action/clean_spec.rb +3 -3
- data/spec/unit/action/ensure_spec.rb +1 -1
- data/spec/unit/action/install_spec.rb +2 -2
- data/spec/unit/environment_spec.rb +36 -0
- data/spec/unit/mock/environment_spec.rb +25 -0
- metadata +44 -54
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: e028910687d6a6448f8f51929c7048701c10c768
|
4
|
+
data.tar.gz: f3d3ea0d6bffa41369b7bd224a2a93d5fe314fc8
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: b5b069d30eb1d8a067d7f7cd95d04e92570776e4ee7f08f9a6c4d572b0f3bc25026f5324d5686933bafed0e96247e23bea499f90c49a7c93397abc14241ddc9d
|
7
|
+
data.tar.gz: 02c8c5b25f217db0d2188cc2e4f48675fce74f9ff29ceb1fc30ea894c5ca511fd61c4e59a9e40a76c863c3307eeea5fa2f8344f281db086b3a4ce7d2ae158383
|
data/.travis.yml
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
language: ruby
|
2
|
-
script: rspec spec
|
2
|
+
script: rspec spec -b
|
3
3
|
rvm:
|
4
4
|
- 1.8.7
|
5
5
|
- 1.9.2
|
@@ -12,8 +12,4 @@ rvm:
|
|
12
12
|
- ruby-head
|
13
13
|
matrix:
|
14
14
|
allow_failures:
|
15
|
-
- rvm: rbx-18mode
|
16
|
-
- rvm: rbx-19mode
|
17
|
-
- rvm: jruby-18mode
|
18
|
-
- rvm: jruby-19mode
|
19
15
|
- rvm: ruby-head
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,17 @@
|
|
1
1
|
# Change Log
|
2
2
|
|
3
|
+
## 0.1.1
|
4
|
+
|
5
|
+
* \#147. Handle the case where HOME is not in the environment. Thanks @bradleyd.
|
6
|
+
|
7
|
+
* \#140. Properly handle the failure to clone a git repository. Avoid wiping out
|
8
|
+
the host project's changes.
|
9
|
+
|
10
|
+
* \#127. Support Rubinius and JRuby, including when shelling out to system
|
11
|
+
commands.
|
12
|
+
|
13
|
+
* \#144. Allow running the test suite with a simple `rake`. Thanks @nickhammond.
|
14
|
+
|
3
15
|
## 0.1.0
|
4
16
|
|
5
17
|
* Extract the chef adapter to its own gem.
|
data/README.md
CHANGED
data/Rakefile
CHANGED
data/lib/librarian/cli.rb
CHANGED
@@ -183,13 +183,14 @@ module Librarian
|
|
183
183
|
debug { "Rubinius Version: #{Rubinius::VERSION}" } if defined?(Rubinius)
|
184
184
|
debug { "JRuby Version: #{JRUBY_VERSION}" } if defined?(JRUBY_VERSION)
|
185
185
|
debug { "Rubygems Version: #{Gem::VERSION}" }
|
186
|
-
debug { "Librarian Version: #{
|
186
|
+
debug { "Librarian Version: #{environment.version}" }
|
187
187
|
debug { "Librarian Adapter: #{environment.adapter_name}"}
|
188
|
+
debug { "Librarian Adapter Version: #{environment.adapter_version}" }
|
188
189
|
debug { "Project: #{environment.project_path}" }
|
189
190
|
debug { "Specfile: #{relative_path_to(environment.specfile_path)}" }
|
190
191
|
debug { "Lockfile: #{relative_path_to(environment.lockfile_path)}" }
|
191
192
|
debug { "Git: #{Source::Git::Repository.bin}" }
|
192
|
-
debug { "Git Version: #{Source::Git::Repository.
|
193
|
+
debug { "Git Version: #{Source::Git::Repository.git_version}" }
|
193
194
|
debug { "Git Environment Variables:" }
|
194
195
|
git_env = ENV.to_a.select{|(k, v)| k =~ /\AGIT/}.sort_by{|(k, v)| k}
|
195
196
|
if git_env.empty?
|
@@ -1,6 +1,7 @@
|
|
1
1
|
require "pathname"
|
2
2
|
require 'net/http'
|
3
3
|
require "uri"
|
4
|
+
require "etc"
|
4
5
|
|
5
6
|
require "librarian/support/abstract_method"
|
6
7
|
|
@@ -26,9 +27,8 @@ module Librarian
|
|
26
27
|
def initialize(options = { })
|
27
28
|
@pwd = options.fetch(:pwd) { Dir.pwd }
|
28
29
|
@env = options.fetch(:env) { ENV.to_hash }
|
29
|
-
@home = options.fetch(:home) {
|
30
|
+
@home = options.fetch(:home) { default_home }
|
30
31
|
@project_path = options[:project_path]
|
31
|
-
@specfile_name = options[:specfile_name]
|
32
32
|
end
|
33
33
|
|
34
34
|
def logger
|
@@ -70,8 +70,19 @@ module Librarian
|
|
70
70
|
Specfile.new(self, specfile_path)
|
71
71
|
end
|
72
72
|
|
73
|
+
def adapter_module
|
74
|
+
implementation? or return
|
75
|
+
self.class.name.split("::")[0 ... -1].inject(Object, &:const_get)
|
76
|
+
end
|
77
|
+
|
73
78
|
def adapter_name
|
74
|
-
|
79
|
+
implementation? or return
|
80
|
+
Helpers.camel_cased_to_dasherized(self.class.name.split("::")[-2])
|
81
|
+
end
|
82
|
+
|
83
|
+
def adapter_version
|
84
|
+
implementation? or return
|
85
|
+
adapter_module::VERSION
|
75
86
|
end
|
76
87
|
|
77
88
|
def lockfile_name
|
@@ -124,7 +135,7 @@ module Librarian
|
|
124
135
|
end
|
125
136
|
|
126
137
|
def dsl_class
|
127
|
-
|
138
|
+
adapter_module::Dsl
|
128
139
|
end
|
129
140
|
|
130
141
|
def version
|
@@ -160,12 +171,7 @@ module Librarian
|
|
160
171
|
end
|
161
172
|
|
162
173
|
def net_http_class(host)
|
163
|
-
|
164
|
-
|
165
|
-
@net_http_class ||= begin
|
166
|
-
p = http_proxy_uri
|
167
|
-
p ? Net::HTTP::Proxy(p.host, p.port, p.user, p.password) : Net::HTTP
|
168
|
-
end
|
174
|
+
no_proxy?(host) ? Net::HTTP : net_http_default_class
|
169
175
|
end
|
170
176
|
|
171
177
|
private
|
@@ -174,13 +180,31 @@ module Librarian
|
|
174
180
|
self
|
175
181
|
end
|
176
182
|
|
177
|
-
def
|
178
|
-
|
183
|
+
def implementation?
|
184
|
+
self.class != ::Librarian::Environment
|
185
|
+
end
|
186
|
+
|
187
|
+
def default_home
|
188
|
+
File.expand_path(ENV["HOME"] || Etc.getpwnam(Etc.getlogin).dir)
|
189
|
+
end
|
190
|
+
|
191
|
+
def no_proxy_list
|
192
|
+
@no_proxy_list ||= begin
|
179
193
|
list = ENV['NO_PROXY'] || ENV['no_proxy'] || ""
|
180
194
|
list.split(/\s*,\s*/) + %w(localhost 127.0.0.1)
|
181
195
|
end
|
182
|
-
|
183
|
-
|
196
|
+
end
|
197
|
+
|
198
|
+
def no_proxy?(host)
|
199
|
+
no_proxy_list.any? do |host_addr|
|
200
|
+
host.end_with?(host_addr)
|
201
|
+
end
|
202
|
+
end
|
203
|
+
|
204
|
+
def net_http_default_class
|
205
|
+
@net_http_default_class ||= begin
|
206
|
+
p = http_proxy_uri
|
207
|
+
p ? Net::HTTP::Proxy(p.host, p.port, p.user, p.password) : Net::HTTP
|
184
208
|
end
|
185
209
|
end
|
186
210
|
|
data/lib/librarian/helpers.rb
CHANGED
@@ -1,4 +1,10 @@
|
|
1
1
|
module Librarian
|
2
|
+
|
3
|
+
# PRIVATE
|
4
|
+
#
|
5
|
+
# Adapters must not rely on these methods since they will change.
|
6
|
+
#
|
7
|
+
# Adapters requiring similar methods ought to re-implement them.
|
2
8
|
module Helpers
|
3
9
|
extend self
|
4
10
|
|
@@ -9,5 +15,15 @@ module Librarian
|
|
9
15
|
string.gsub(/^[ \t]{#{indent}}/, '')
|
10
16
|
end
|
11
17
|
|
18
|
+
# [active_support/inflector/methods]
|
19
|
+
def camel_cased_to_dasherized(camel_cased_word)
|
20
|
+
word = camel_cased_word.to_s.dup
|
21
|
+
word.gsub!(/([A-Z\d]+)([A-Z][a-z])/,'\1-\2')
|
22
|
+
word.gsub!(/([a-z\d])([A-Z])/,'\1-\2')
|
23
|
+
word.downcase!
|
24
|
+
word
|
25
|
+
end
|
26
|
+
|
12
27
|
end
|
28
|
+
|
13
29
|
end
|
@@ -0,0 +1,120 @@
|
|
1
|
+
require "open3"
|
2
|
+
|
3
|
+
require "librarian/error"
|
4
|
+
|
5
|
+
module Librarian
|
6
|
+
module Posix
|
7
|
+
|
8
|
+
class << self
|
9
|
+
|
10
|
+
# Cross-platform way of finding an executable in the $PATH.
|
11
|
+
#
|
12
|
+
# which('ruby') #=> /usr/bin/ruby
|
13
|
+
#
|
14
|
+
# From:
|
15
|
+
# https://github.com/defunkt/hub/commit/353031307e704d860826fc756ff0070be5e1b430#L2R173
|
16
|
+
def which(cmd)
|
17
|
+
exts = ENV["PATHEXT"] ? ENV["PATHEXT"].split(';') : ['']
|
18
|
+
ENV["PATH"].split(File::PATH_SEPARATOR).each do |path|
|
19
|
+
path = File.expand_path(path)
|
20
|
+
exts.each do |ext|
|
21
|
+
exe = File.join(path, cmd + ext)
|
22
|
+
return exe if File.file?(exe) && File.executable?(exe)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
nil
|
26
|
+
end
|
27
|
+
|
28
|
+
def which!(cmd)
|
29
|
+
which(cmd) or raise Error, "cannot find #{cmd}"
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
class CommandFailure < Error
|
35
|
+
class << self
|
36
|
+
def raise!(command, status, message)
|
37
|
+
ex = new(message)
|
38
|
+
ex.command = command
|
39
|
+
ex.status = status
|
40
|
+
ex.set_backtrace caller
|
41
|
+
raise ex
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
attr_accessor :command, :status
|
46
|
+
end
|
47
|
+
|
48
|
+
class << self
|
49
|
+
|
50
|
+
if defined?(JRuby) # built with jruby-1.7.4 in mind
|
51
|
+
|
52
|
+
def run!(command, options = { })
|
53
|
+
out, err = nil, nil
|
54
|
+
chdir = options[:chdir].to_s if options[:chdir]
|
55
|
+
env = options[:env] || { }
|
56
|
+
old_env = Hash[env.keys.map{|k| [k, ENV[k]]}]
|
57
|
+
begin
|
58
|
+
ENV.update env
|
59
|
+
Dir.chdir(chdir || Dir.pwd) do
|
60
|
+
IO.popen3(*command) do |i, o, e|
|
61
|
+
i.close
|
62
|
+
out, err = o.read, e.read
|
63
|
+
end
|
64
|
+
end
|
65
|
+
ensure
|
66
|
+
ENV.update old_env
|
67
|
+
end
|
68
|
+
$?.success? or CommandFailure.raise! command, $?, err
|
69
|
+
out
|
70
|
+
end
|
71
|
+
|
72
|
+
else
|
73
|
+
|
74
|
+
if RUBY_VERSION < "1.9"
|
75
|
+
|
76
|
+
def run!(command, options = { })
|
77
|
+
i, o, e = IO.pipe, IO.pipe, IO.pipe
|
78
|
+
pid = fork do
|
79
|
+
$stdin.reopen i[0]
|
80
|
+
$stdout.reopen o[1]
|
81
|
+
$stderr.reopen e[1]
|
82
|
+
[i[1], i[0], o[0], e[0]].each &:close
|
83
|
+
ENV.update options[:env] || { }
|
84
|
+
Dir.chdir options[:chdir].to_s if options[:chdir]
|
85
|
+
exec *command
|
86
|
+
end
|
87
|
+
[i[0], i[1], o[1], e[1]].each &:close
|
88
|
+
Process.waitpid pid
|
89
|
+
$?.success? or CommandFailure.raise! command, $?, e[0].read
|
90
|
+
o[0].read
|
91
|
+
ensure
|
92
|
+
[i, o, e].flatten(1).each{|io| io.close unless io.closed?}
|
93
|
+
end
|
94
|
+
|
95
|
+
else
|
96
|
+
|
97
|
+
def run!(command, options = { })
|
98
|
+
i, o, e = IO.pipe, IO.pipe, IO.pipe
|
99
|
+
opts = {:in => i[0], :out => o[1], :err => e[1]}
|
100
|
+
opts[:chdir] = options[:chdir].to_s if options[:chdir]
|
101
|
+
command = command.dup
|
102
|
+
command.unshift options[:env] || { }
|
103
|
+
command.push opts
|
104
|
+
pid = Process.spawn(*command)
|
105
|
+
[i[0], i[1], o[1], e[1]].each &:close
|
106
|
+
Process.waitpid pid
|
107
|
+
$?.success? or CommandFailure.raise! command, $?, e[0].read
|
108
|
+
o[0].read
|
109
|
+
ensure
|
110
|
+
[i, o, e].flatten(1).each{|io| io.close unless io.closed?}
|
111
|
+
end
|
112
|
+
|
113
|
+
end
|
114
|
+
|
115
|
+
end
|
116
|
+
|
117
|
+
end
|
118
|
+
|
119
|
+
end
|
120
|
+
end
|
data/lib/librarian/source/git.rb
CHANGED
@@ -2,6 +2,7 @@ require 'fileutils'
|
|
2
2
|
require 'pathname'
|
3
3
|
require 'digest'
|
4
4
|
|
5
|
+
require 'librarian/error'
|
5
6
|
require 'librarian/source/basic_api'
|
6
7
|
require 'librarian/source/git/repository'
|
7
8
|
require 'librarian/source/local'
|
@@ -79,6 +80,7 @@ module Librarian
|
|
79
80
|
repository.path.rmtree if repository.path.exist?
|
80
81
|
repository.path.mkpath
|
81
82
|
repository.clone!(uri)
|
83
|
+
raise Error, "failed to clone #{uri}" unless repository.git?
|
82
84
|
end
|
83
85
|
repository.reset_hard!
|
84
86
|
repository.clean!
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require "librarian/posix"
|
2
2
|
|
3
3
|
module Librarian
|
4
4
|
module Source
|
@@ -15,27 +15,12 @@ module Librarian
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def bin
|
18
|
-
@bin ||= which("git")
|
18
|
+
@bin ||= Posix.which!("git")
|
19
19
|
end
|
20
20
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
#
|
25
|
-
# which('ruby') #=> /usr/bin/ruby
|
26
|
-
#
|
27
|
-
# From:
|
28
|
-
# https://github.com/defunkt/hub/commit/353031307e704d860826fc756ff0070be5e1b430#L2R173
|
29
|
-
def which(cmd)
|
30
|
-
exts = ENV['PATHEXT'] ? ENV['PATHEXT'].split(';') : ['']
|
31
|
-
ENV['PATH'].split(File::PATH_SEPARATOR).each do |path|
|
32
|
-
path = File.expand_path(path)
|
33
|
-
exts.each do |ext|
|
34
|
-
exe = File.join(path, cmd + ext)
|
35
|
-
return exe if File.file?(exe) && File.executable?(exe)
|
36
|
-
end
|
37
|
-
end
|
38
|
-
nil
|
21
|
+
def git_version
|
22
|
+
command = %W[#{bin} version --silent]
|
23
|
+
Posix.run!(command).strip =~ /([.\d]+)$/ && $1
|
39
24
|
end
|
40
25
|
end
|
41
26
|
|
@@ -55,17 +40,6 @@ module Librarian
|
|
55
40
|
"origin"
|
56
41
|
end
|
57
42
|
|
58
|
-
def version(options = { })
|
59
|
-
version!(options).strip
|
60
|
-
end
|
61
|
-
|
62
|
-
def version!(options = { })
|
63
|
-
silent = options.delete(:silent)
|
64
|
-
|
65
|
-
command = %w(--version)
|
66
|
-
run!(command, :silent => silent)
|
67
|
-
end
|
68
|
-
|
69
43
|
def clone!(repository_url)
|
70
44
|
command = %W(clone #{repository_url} . --quiet)
|
71
45
|
run!(command, :chdir => true)
|
@@ -143,32 +117,15 @@ module Librarian
|
|
143
117
|
chdir = path.to_s if chdir == true
|
144
118
|
|
145
119
|
silent = options.delete(:silent)
|
120
|
+
pwd = chdir || Dir.pwd
|
121
|
+
git_dir = File.join(path, ".git") if path
|
122
|
+
env = {"GIT_DIR" => git_dir}
|
146
123
|
|
147
124
|
command = [bin]
|
148
125
|
command.concat(args)
|
149
126
|
|
150
|
-
|
151
|
-
|
152
|
-
run_command_internal(command)
|
153
|
-
end
|
154
|
-
end
|
155
|
-
end
|
156
|
-
|
157
|
-
def maybe_within(path)
|
158
|
-
if path
|
159
|
-
Dir.chdir(path) { with_env_var("GIT_DIR", nil) { yield } }
|
160
|
-
else
|
161
|
-
yield
|
162
|
-
end
|
163
|
-
end
|
164
|
-
|
165
|
-
def with_env_var(name, value)
|
166
|
-
original_value = ENV[name]
|
167
|
-
begin
|
168
|
-
ENV[name] = value
|
169
|
-
yield
|
170
|
-
ensure
|
171
|
-
ENV[name] = original_value
|
127
|
+
logging_command(command, :silent => silent, :pwd => pwd) do
|
128
|
+
Posix.run!(command, :chdir => chdir, :env => env)
|
172
129
|
end
|
173
130
|
end
|
174
131
|
|
@@ -177,10 +134,6 @@ module Librarian
|
|
177
134
|
|
178
135
|
pwd = Dir.pwd
|
179
136
|
|
180
|
-
unless silent
|
181
|
-
debug { "Running `#{command.join(' ')}` in #{relative_path_to(pwd)}" }
|
182
|
-
end
|
183
|
-
|
184
137
|
out = yield
|
185
138
|
|
186
139
|
unless silent
|
@@ -196,21 +149,6 @@ module Librarian
|
|
196
149
|
out
|
197
150
|
end
|
198
151
|
|
199
|
-
def run_command_internal(command)
|
200
|
-
std = ""
|
201
|
-
err = ""
|
202
|
-
thread = nil
|
203
|
-
Open3.popen3(*command) do |i, o, e, t|
|
204
|
-
std = o.read
|
205
|
-
err = e.read
|
206
|
-
thread = t
|
207
|
-
end
|
208
|
-
|
209
|
-
raise StandardError, err unless (thread ? thread.value : $?).success?
|
210
|
-
|
211
|
-
std
|
212
|
-
end
|
213
|
-
|
214
152
|
def debug(*args, &block)
|
215
153
|
environment.logger.debug(*args, &block)
|
216
154
|
end
|
data/lib/librarian/version.rb
CHANGED
data/librarian.gemspec
CHANGED
@@ -2,22 +2,22 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = "librarian"
|
5
|
-
s.version = "0.1.
|
5
|
+
s.version = "0.1.1"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Jay Feldblum"]
|
9
|
-
s.date = "2013-
|
10
|
-
s.description = "
|
9
|
+
s.date = "2013-08-17"
|
10
|
+
s.description = "A Framework for Bundlers."
|
11
11
|
s.email = ["y_feldblum@yahoo.com"]
|
12
|
-
s.files = [".gitignore", ".rspec", ".travis.yml", "CHANGELOG.md", "Gemfile", "LICENSE.txt", "README.md", "Rakefile", "lib/librarian.rb", "lib/librarian/action.rb", "lib/librarian/action/base.rb", "lib/librarian/action/clean.rb", "lib/librarian/action/ensure.rb", "lib/librarian/action/install.rb", "lib/librarian/action/persist_resolution_mixin.rb", "lib/librarian/action/resolve.rb", "lib/librarian/action/update.rb", "lib/librarian/cli.rb", "lib/librarian/cli/manifest_presenter.rb", "lib/librarian/config.rb", "lib/librarian/config/database.rb", "lib/librarian/config/file_source.rb", "lib/librarian/config/hash_source.rb", "lib/librarian/config/source.rb", "lib/librarian/dependency.rb", "lib/librarian/dsl.rb", "lib/librarian/dsl/receiver.rb", "lib/librarian/dsl/target.rb", "lib/librarian/environment.rb", "lib/librarian/error.rb", "lib/librarian/helpers.rb", "lib/librarian/linter/source_linter.rb", "lib/librarian/lockfile.rb", "lib/librarian/lockfile/compiler.rb", "lib/librarian/lockfile/parser.rb", "lib/librarian/logger.rb", "lib/librarian/manifest.rb", "lib/librarian/manifest_set.rb", "lib/librarian/mock.rb", "lib/librarian/mock/cli.rb", "lib/librarian/mock/dsl.rb", "lib/librarian/mock/environment.rb", "lib/librarian/mock/extension.rb", "lib/librarian/mock/source.rb", "lib/librarian/mock/source/mock.rb", "lib/librarian/mock/source/mock/registry.rb", "lib/librarian/mock/version.rb", "lib/librarian/resolution.rb", "lib/librarian/resolver.rb", "lib/librarian/resolver/implementation.rb", "lib/librarian/rspec/support/cli_macro.rb", "lib/librarian/source.rb", "lib/librarian/source/basic_api.rb", "lib/librarian/source/git.rb", "lib/librarian/source/git/repository.rb", "lib/librarian/source/local.rb", "lib/librarian/source/path.rb", "lib/librarian/spec.rb", "lib/librarian/spec_change_set.rb", "lib/librarian/specfile.rb", "lib/librarian/support/abstract_method.rb", "lib/librarian/ui.rb", "lib/librarian/version.rb", "librarian.gemspec", "spec/functional/cli_spec.rb", "spec/functional/source/git/repository_spec.rb", "spec/support/fakefs.rb", "spec/support/method_patch_macro.rb", "spec/support/with_env_macro.rb", "spec/unit/action/base_spec.rb", "spec/unit/action/clean_spec.rb", "spec/unit/action/ensure_spec.rb", "spec/unit/action/install_spec.rb", "spec/unit/config/database_spec.rb", "spec/unit/dependency_spec.rb", "spec/unit/dsl_spec.rb", "spec/unit/environment_spec.rb", "spec/unit/lockfile/parser_spec.rb", "spec/unit/lockfile_spec.rb", "spec/unit/manifest_set_spec.rb", "spec/unit/manifest_spec.rb", "spec/unit/mock/source/mock_spec.rb", "spec/unit/resolver_spec.rb", "spec/unit/source/git_spec.rb", "spec/unit/spec_change_set_spec.rb"]
|
12
|
+
s.files = [".gitignore", ".rspec", ".travis.yml", "CHANGELOG.md", "Gemfile", "LICENSE.txt", "README.md", "Rakefile", "lib/librarian.rb", "lib/librarian/action.rb", "lib/librarian/action/base.rb", "lib/librarian/action/clean.rb", "lib/librarian/action/ensure.rb", "lib/librarian/action/install.rb", "lib/librarian/action/persist_resolution_mixin.rb", "lib/librarian/action/resolve.rb", "lib/librarian/action/update.rb", "lib/librarian/cli.rb", "lib/librarian/cli/manifest_presenter.rb", "lib/librarian/config.rb", "lib/librarian/config/database.rb", "lib/librarian/config/file_source.rb", "lib/librarian/config/hash_source.rb", "lib/librarian/config/source.rb", "lib/librarian/dependency.rb", "lib/librarian/dsl.rb", "lib/librarian/dsl/receiver.rb", "lib/librarian/dsl/target.rb", "lib/librarian/environment.rb", "lib/librarian/error.rb", "lib/librarian/helpers.rb", "lib/librarian/linter/source_linter.rb", "lib/librarian/lockfile.rb", "lib/librarian/lockfile/compiler.rb", "lib/librarian/lockfile/parser.rb", "lib/librarian/logger.rb", "lib/librarian/manifest.rb", "lib/librarian/manifest_set.rb", "lib/librarian/mock.rb", "lib/librarian/mock/cli.rb", "lib/librarian/mock/dsl.rb", "lib/librarian/mock/environment.rb", "lib/librarian/mock/extension.rb", "lib/librarian/mock/source.rb", "lib/librarian/mock/source/mock.rb", "lib/librarian/mock/source/mock/registry.rb", "lib/librarian/mock/version.rb", "lib/librarian/posix.rb", "lib/librarian/resolution.rb", "lib/librarian/resolver.rb", "lib/librarian/resolver/implementation.rb", "lib/librarian/rspec/support/cli_macro.rb", "lib/librarian/source.rb", "lib/librarian/source/basic_api.rb", "lib/librarian/source/git.rb", "lib/librarian/source/git/repository.rb", "lib/librarian/source/local.rb", "lib/librarian/source/path.rb", "lib/librarian/spec.rb", "lib/librarian/spec_change_set.rb", "lib/librarian/specfile.rb", "lib/librarian/support/abstract_method.rb", "lib/librarian/ui.rb", "lib/librarian/version.rb", "librarian.gemspec", "spec/functional/cli_spec.rb", "spec/functional/posix_spec.rb", "spec/functional/source/git/repository_spec.rb", "spec/functional/source/git_spec.rb", "spec/support/fakefs.rb", "spec/support/method_patch_macro.rb", "spec/support/with_env_macro.rb", "spec/unit/action/base_spec.rb", "spec/unit/action/clean_spec.rb", "spec/unit/action/ensure_spec.rb", "spec/unit/action/install_spec.rb", "spec/unit/config/database_spec.rb", "spec/unit/dependency_spec.rb", "spec/unit/dsl_spec.rb", "spec/unit/environment_spec.rb", "spec/unit/lockfile/parser_spec.rb", "spec/unit/lockfile_spec.rb", "spec/unit/manifest_set_spec.rb", "spec/unit/manifest_spec.rb", "spec/unit/mock/environment_spec.rb", "spec/unit/mock/source/mock_spec.rb", "spec/unit/resolver_spec.rb", "spec/unit/source/git_spec.rb", "spec/unit/spec_change_set_spec.rb"]
|
13
13
|
s.homepage = ""
|
14
14
|
s.require_paths = ["lib"]
|
15
|
-
s.rubygems_version = "
|
16
|
-
s.summary = "
|
17
|
-
s.test_files = ["spec/functional/cli_spec.rb", "spec/functional/source/git/repository_spec.rb", "spec/support/fakefs.rb", "spec/support/method_patch_macro.rb", "spec/support/with_env_macro.rb", "spec/unit/action/base_spec.rb", "spec/unit/action/clean_spec.rb", "spec/unit/action/ensure_spec.rb", "spec/unit/action/install_spec.rb", "spec/unit/config/database_spec.rb", "spec/unit/dependency_spec.rb", "spec/unit/dsl_spec.rb", "spec/unit/environment_spec.rb", "spec/unit/lockfile/parser_spec.rb", "spec/unit/lockfile_spec.rb", "spec/unit/manifest_set_spec.rb", "spec/unit/manifest_spec.rb", "spec/unit/mock/source/mock_spec.rb", "spec/unit/resolver_spec.rb", "spec/unit/source/git_spec.rb", "spec/unit/spec_change_set_spec.rb"]
|
15
|
+
s.rubygems_version = "2.0.3"
|
16
|
+
s.summary = "A Framework for Bundlers."
|
17
|
+
s.test_files = ["spec/functional/cli_spec.rb", "spec/functional/posix_spec.rb", "spec/functional/source/git/repository_spec.rb", "spec/functional/source/git_spec.rb", "spec/support/fakefs.rb", "spec/support/method_patch_macro.rb", "spec/support/with_env_macro.rb", "spec/unit/action/base_spec.rb", "spec/unit/action/clean_spec.rb", "spec/unit/action/ensure_spec.rb", "spec/unit/action/install_spec.rb", "spec/unit/config/database_spec.rb", "spec/unit/dependency_spec.rb", "spec/unit/dsl_spec.rb", "spec/unit/environment_spec.rb", "spec/unit/lockfile/parser_spec.rb", "spec/unit/lockfile_spec.rb", "spec/unit/manifest_set_spec.rb", "spec/unit/manifest_spec.rb", "spec/unit/mock/environment_spec.rb", "spec/unit/mock/source/mock_spec.rb", "spec/unit/resolver_spec.rb", "spec/unit/source/git_spec.rb", "spec/unit/spec_change_set_spec.rb"]
|
18
18
|
|
19
19
|
if s.respond_to? :specification_version then
|
20
|
-
s.specification_version =
|
20
|
+
s.specification_version = 4
|
21
21
|
|
22
22
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
23
23
|
s.add_runtime_dependency(%q<thor>, ["~> 0.15"])
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require "librarian/posix"
|
2
|
+
|
3
|
+
describe Librarian::Posix do
|
4
|
+
|
5
|
+
let(:project_path) do
|
6
|
+
project_path = Pathname.new(__FILE__).expand_path
|
7
|
+
project_path = project_path.dirname until project_path.join("Rakefile").exist?
|
8
|
+
project_path
|
9
|
+
end
|
10
|
+
let(:tmp_path) { project_path + "tmp/spec/functional/posix" }
|
11
|
+
after { tmp_path.rmtree if tmp_path && tmp_path.exist? }
|
12
|
+
|
13
|
+
describe ".run!" do
|
14
|
+
|
15
|
+
it "returns the stdout" do
|
16
|
+
res = described_class.run!(%w[echo hello there]).strip
|
17
|
+
res.should be == "hello there"
|
18
|
+
end
|
19
|
+
|
20
|
+
it "changes directory" do
|
21
|
+
tmp_path.mkpath
|
22
|
+
res = described_class.run!(%w[pwd], :chdir => tmp_path).strip
|
23
|
+
res.should be == tmp_path.to_s
|
24
|
+
end
|
25
|
+
|
26
|
+
it "reads the env" do
|
27
|
+
res = described_class.run!(%w[env], :env => {"KOALA" => "BEAR"})
|
28
|
+
line = res.lines.find{|l| l.start_with?("KOALA=")}.strip
|
29
|
+
line.should be == "KOALA=BEAR"
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
@@ -2,6 +2,8 @@ require "fileutils"
|
|
2
2
|
require "pathname"
|
3
3
|
require "securerandom"
|
4
4
|
|
5
|
+
require "librarian/posix"
|
6
|
+
|
5
7
|
require "librarian/source/git/repository"
|
6
8
|
|
7
9
|
describe Librarian::Source::Git::Repository do
|
@@ -22,45 +24,53 @@ describe Librarian::Source::Git::Repository do
|
|
22
24
|
let(:tag) { "the-tag" }
|
23
25
|
let(:atag) { "the-atag" }
|
24
26
|
|
27
|
+
def cmd!(command)
|
28
|
+
Librarian::Posix.run! command
|
29
|
+
end
|
30
|
+
|
31
|
+
def git!(command)
|
32
|
+
cmd!([described_class.bin] + command)
|
33
|
+
end
|
34
|
+
|
25
35
|
before do
|
26
36
|
git_source_path.mkpath
|
27
37
|
Dir.chdir(git_source_path) do
|
28
|
-
|
29
|
-
|
30
|
-
|
38
|
+
git! %W[init]
|
39
|
+
git! %W[config user.name Simba]
|
40
|
+
git! %W[config user.email simba@savannah-pride.gov]
|
31
41
|
|
32
42
|
# master
|
33
|
-
|
34
|
-
|
35
|
-
|
43
|
+
FileUtils.touch "butter.txt"
|
44
|
+
git! %W[add butter.txt]
|
45
|
+
git! %W[commit -m #{"Initial Commit"}]
|
36
46
|
|
37
47
|
# branch
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
# tag
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
# annotated tag
|
54
|
-
`git checkout -b deletable --quiet`
|
55
|
-
`touch jelly.txt`
|
56
|
-
`git add jelly.txt`
|
57
|
-
`git commit -m "Tag Commit"`
|
58
|
-
`git tag -am "Annotated Tag Commit" #{atag}`
|
59
|
-
`git checkout master --quiet`
|
60
|
-
`git branch -D deletable`
|
48
|
+
git! %W[checkout -b #{branch} --quiet]
|
49
|
+
FileUtils.touch "jam.txt"
|
50
|
+
git! %W[add jam.txt]
|
51
|
+
git! %W[commit -m #{"Branch Commit"}]
|
52
|
+
git! %W[checkout master --quiet]
|
53
|
+
|
54
|
+
# tag/atag
|
55
|
+
git! %W[checkout -b deletable --quiet]
|
56
|
+
FileUtils.touch "jelly.txt"
|
57
|
+
git! %W[add jelly.txt]
|
58
|
+
git! %W[commit -m #{"Tag Commit"}]
|
59
|
+
git! %W[tag #{tag}]
|
60
|
+
git! %W[tag -am #{"Annotated Tag Commit"} #{atag}]
|
61
|
+
git! %W[checkout master --quiet]
|
62
|
+
git! %W[branch -D deletable]
|
61
63
|
end
|
62
64
|
end
|
63
65
|
|
66
|
+
describe ".bin" do
|
67
|
+
specify { described_class.bin.should_not be_empty }
|
68
|
+
end
|
69
|
+
|
70
|
+
describe ".git_version" do
|
71
|
+
specify { described_class.git_version.should =~ /^\d+(\.\d+)+$/ }
|
72
|
+
end
|
73
|
+
|
64
74
|
context "the original" do
|
65
75
|
subject { described_class.new(env, git_source_path) }
|
66
76
|
|
@@ -75,6 +85,15 @@ describe Librarian::Source::Git::Repository do
|
|
75
85
|
it "should not list any remote branches for it" do
|
76
86
|
subject.remote_branch_names.should be_empty
|
77
87
|
end
|
88
|
+
|
89
|
+
it "should have divergent shas for master, branch, tag, and atag" do
|
90
|
+
revs = %W[ master #{branch} #{tag} #{atag} ]
|
91
|
+
rev_parse = proc{|rev| git!(%W[rev-parse #{rev} --quiet]).strip}
|
92
|
+
shas = Dir.chdir(git_source_path){revs.map(&rev_parse)}
|
93
|
+
shas.map(&:class).uniq.should be == [String]
|
94
|
+
shas.map(&:size).uniq.should be == [40]
|
95
|
+
shas.uniq.should be == shas
|
96
|
+
end
|
78
97
|
end
|
79
98
|
|
80
99
|
context "a clone" do
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require "pathname"
|
2
|
+
require "securerandom"
|
3
|
+
|
4
|
+
require "librarian/error"
|
5
|
+
require "librarian/source/git"
|
6
|
+
|
7
|
+
describe Librarian::Source::Git do
|
8
|
+
|
9
|
+
let(:project_path) do
|
10
|
+
project_path = Pathname.new(__FILE__).expand_path
|
11
|
+
project_path = project_path.dirname until project_path.join("Rakefile").exist?
|
12
|
+
project_path
|
13
|
+
end
|
14
|
+
let(:tmp_path) { project_path + "tmp/spec/functional/source/git" }
|
15
|
+
after { tmp_path.rmtree if tmp_path && tmp_path.exist? }
|
16
|
+
let(:cache_path) { tmp_path + "cache" }
|
17
|
+
|
18
|
+
context "when the remote is bad" do
|
19
|
+
let(:remote) { tmp_path.join(SecureRandom.hex(8)).to_s }
|
20
|
+
let(:logger) { double(:debug => nil, :info => nil) }
|
21
|
+
let(:env) { double(:ui => nil, :logger => logger, :cache_path => cache_path) }
|
22
|
+
let(:source) { described_class.new(env, remote, {}) }
|
23
|
+
|
24
|
+
it "fails when caching" do
|
25
|
+
expect { source.cache! }.to raise_error Librarian::Error,
|
26
|
+
/^fatal: repository .+ does not exist$/ # from git
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
data/spec/support/fakefs.rb
CHANGED
@@ -2,6 +2,19 @@ require "fakefs/safe"
|
|
2
2
|
require "fakefs/spec_helpers"
|
3
3
|
require "support/method_patch_macro"
|
4
4
|
|
5
|
+
if defined?(Rubinius)
|
6
|
+
module Rubinius
|
7
|
+
class CodeLoader
|
8
|
+
class << self
|
9
|
+
alias_method :require_fakefs_original, :require
|
10
|
+
def require(s)
|
11
|
+
::FakeFS.without { require_fakefs_original(s) }
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
5
18
|
module Support
|
6
19
|
module FakeFS
|
7
20
|
|
@@ -3,7 +3,7 @@ require "librarian/action/clean"
|
|
3
3
|
module Librarian
|
4
4
|
describe Action::Clean do
|
5
5
|
|
6
|
-
let(:env) {
|
6
|
+
let(:env) { double }
|
7
7
|
let(:action) { described_class.new(env) }
|
8
8
|
|
9
9
|
before do
|
@@ -68,7 +68,7 @@ module Librarian
|
|
68
68
|
end
|
69
69
|
|
70
70
|
it "should try to clear the install path" do
|
71
|
-
children = [
|
71
|
+
children = [double, double, double]
|
72
72
|
children.each do |child|
|
73
73
|
child.stub(:file?) { false }
|
74
74
|
end
|
@@ -80,7 +80,7 @@ module Librarian
|
|
80
80
|
end
|
81
81
|
|
82
82
|
it "should only try to clear out directories from the install path, not files" do
|
83
|
-
children = [
|
83
|
+
children = [double(:file? => false), double(:file? => true), double(:file? => true)]
|
84
84
|
env.stub_chain(:install_path, :children) { children }
|
85
85
|
|
86
86
|
children.select(&:file?).each do |child|
|
@@ -4,7 +4,7 @@ require "librarian/action/install"
|
|
4
4
|
module Librarian
|
5
5
|
describe Action::Install do
|
6
6
|
|
7
|
-
let(:env) {
|
7
|
+
let(:env) { double(:specfile_name => "Specfile", :lockfile_name => "Specfile.lock") }
|
8
8
|
let(:action) { described_class.new(env) }
|
9
9
|
|
10
10
|
describe "#run" do
|
@@ -69,7 +69,7 @@ module Librarian
|
|
69
69
|
|
70
70
|
let(:manifests) { 3.times.map{|i| mock_manifest(i)} }
|
71
71
|
let(:sorted_manifests) { 4.times.map{|i| mock_manifest(i + 3)} }
|
72
|
-
let(:install_path) {
|
72
|
+
let(:install_path) { double }
|
73
73
|
|
74
74
|
before do
|
75
75
|
env.stub(:install_path) { install_path }
|
@@ -8,6 +8,41 @@ module Librarian
|
|
8
8
|
|
9
9
|
let(:env) { described_class.new }
|
10
10
|
|
11
|
+
describe "#adapter_module" do
|
12
|
+
specify { env.adapter_module.should be nil }
|
13
|
+
end
|
14
|
+
|
15
|
+
describe "#adapter_name" do
|
16
|
+
specify { env.adapter_name.should be nil }
|
17
|
+
end
|
18
|
+
|
19
|
+
describe "#adapter_version" do
|
20
|
+
specify { env.adapter_version.should be nil }
|
21
|
+
end
|
22
|
+
|
23
|
+
describe "computing the home" do
|
24
|
+
|
25
|
+
context "with the HOME env var" do
|
26
|
+
with_env "HOME" => "/path/to/home"
|
27
|
+
|
28
|
+
it "finds the home" do
|
29
|
+
env.stub(:adapter_name).and_return("cat")
|
30
|
+
env.config_db.underlying_home.to_s.should == "/path/to/home"
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
context "without the HOME env var" do
|
35
|
+
let!(:real_home) { File.expand_path("~") }
|
36
|
+
with_env "HOME" => nil
|
37
|
+
|
38
|
+
it "finds the home" do
|
39
|
+
env.stub(:adapter_name).and_return("cat")
|
40
|
+
env.config_db.underlying_home.to_s.should == real_home
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
|
11
46
|
describe "#http_proxy_uri" do
|
12
47
|
|
13
48
|
context "sanity" do
|
@@ -165,6 +200,7 @@ module Librarian
|
|
165
200
|
env.net_http_class(proxied_host).should be_proxy_class
|
166
201
|
end
|
167
202
|
end
|
203
|
+
|
168
204
|
end
|
169
205
|
|
170
206
|
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require "librarian/mock/environment"
|
2
|
+
|
3
|
+
module Librarian::Mock
|
4
|
+
describe Environment do
|
5
|
+
|
6
|
+
let(:env) { described_class.new }
|
7
|
+
|
8
|
+
describe "#version" do
|
9
|
+
specify { env.version.should be == Librarian::VERSION }
|
10
|
+
end
|
11
|
+
|
12
|
+
describe "#adapter_module" do
|
13
|
+
specify { env.adapter_module.should be Librarian::Mock }
|
14
|
+
end
|
15
|
+
|
16
|
+
describe "#adapter_name" do
|
17
|
+
specify { env.adapter_name.should be == "mock" }
|
18
|
+
end
|
19
|
+
|
20
|
+
describe "#adapter_version" do
|
21
|
+
specify { env.adapter_version.should be == Librarian::Mock::VERSION }
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
end
|
metadata
CHANGED
@@ -1,113 +1,100 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: librarian
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
version: 0.1.0
|
4
|
+
version: 0.1.1
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Jay Feldblum
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-
|
11
|
+
date: 2013-08-17 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
|
-
type: :runtime
|
16
|
-
version_requirements: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
|
-
requirements:
|
19
|
-
- - ~>
|
20
|
-
- !ruby/object:Gem::Version
|
21
|
-
version: '0.15'
|
22
14
|
name: thor
|
23
|
-
prerelease: false
|
24
15
|
requirement: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
16
|
requirements:
|
27
17
|
- - ~>
|
28
18
|
- !ruby/object:Gem::Version
|
29
19
|
version: '0.15'
|
30
|
-
- !ruby/object:Gem::Dependency
|
31
20
|
type: :runtime
|
21
|
+
prerelease: false
|
32
22
|
version_requirements: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
23
|
requirements:
|
35
|
-
- -
|
24
|
+
- - ~>
|
36
25
|
- !ruby/object:Gem::Version
|
37
|
-
version: '0'
|
26
|
+
version: '0.15'
|
27
|
+
- !ruby/object:Gem::Dependency
|
38
28
|
name: highline
|
39
|
-
prerelease: false
|
40
29
|
requirement: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
30
|
requirements:
|
43
|
-
- -
|
31
|
+
- - '>='
|
44
32
|
- !ruby/object:Gem::Version
|
45
33
|
version: '0'
|
46
|
-
|
47
|
-
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
48
36
|
version_requirements: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
37
|
requirements:
|
51
|
-
- -
|
38
|
+
- - '>='
|
52
39
|
- !ruby/object:Gem::Version
|
53
40
|
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
54
42
|
name: rake
|
55
|
-
prerelease: false
|
56
43
|
requirement: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
44
|
requirements:
|
59
|
-
- -
|
45
|
+
- - '>='
|
60
46
|
- !ruby/object:Gem::Version
|
61
47
|
version: '0'
|
62
|
-
- !ruby/object:Gem::Dependency
|
63
48
|
type: :development
|
49
|
+
prerelease: false
|
64
50
|
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
51
|
requirements:
|
67
|
-
- -
|
52
|
+
- - '>='
|
68
53
|
- !ruby/object:Gem::Version
|
69
54
|
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
70
56
|
name: rspec
|
71
|
-
prerelease: false
|
72
57
|
requirement: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
58
|
requirements:
|
75
|
-
- -
|
59
|
+
- - '>='
|
76
60
|
- !ruby/object:Gem::Version
|
77
61
|
version: '0'
|
78
|
-
- !ruby/object:Gem::Dependency
|
79
62
|
type: :development
|
63
|
+
prerelease: false
|
80
64
|
version_requirements: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
65
|
requirements:
|
83
|
-
- -
|
66
|
+
- - '>='
|
84
67
|
- !ruby/object:Gem::Version
|
85
68
|
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
86
70
|
name: json
|
87
|
-
prerelease: false
|
88
71
|
requirement: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
72
|
requirements:
|
91
|
-
- -
|
73
|
+
- - '>='
|
92
74
|
- !ruby/object:Gem::Version
|
93
75
|
version: '0'
|
94
|
-
- !ruby/object:Gem::Dependency
|
95
76
|
type: :development
|
77
|
+
prerelease: false
|
96
78
|
version_requirements: !ruby/object:Gem::Requirement
|
97
|
-
|
79
|
+
requirements:
|
80
|
+
- - '>='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: fakefs
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
98
86
|
requirements:
|
99
87
|
- - ~>
|
100
88
|
- !ruby/object:Gem::Version
|
101
89
|
version: 0.4.2
|
102
|
-
|
90
|
+
type: :development
|
103
91
|
prerelease: false
|
104
|
-
|
105
|
-
none: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
106
93
|
requirements:
|
107
94
|
- - ~>
|
108
95
|
- !ruby/object:Gem::Version
|
109
96
|
version: 0.4.2
|
110
|
-
description:
|
97
|
+
description: A Framework for Bundlers.
|
111
98
|
email:
|
112
99
|
- y_feldblum@yahoo.com
|
113
100
|
executables: []
|
@@ -161,6 +148,7 @@ files:
|
|
161
148
|
- lib/librarian/mock/source/mock.rb
|
162
149
|
- lib/librarian/mock/source/mock/registry.rb
|
163
150
|
- lib/librarian/mock/version.rb
|
151
|
+
- lib/librarian/posix.rb
|
164
152
|
- lib/librarian/resolution.rb
|
165
153
|
- lib/librarian/resolver.rb
|
166
154
|
- lib/librarian/resolver/implementation.rb
|
@@ -179,7 +167,9 @@ files:
|
|
179
167
|
- lib/librarian/version.rb
|
180
168
|
- librarian.gemspec
|
181
169
|
- spec/functional/cli_spec.rb
|
170
|
+
- spec/functional/posix_spec.rb
|
182
171
|
- spec/functional/source/git/repository_spec.rb
|
172
|
+
- spec/functional/source/git_spec.rb
|
183
173
|
- spec/support/fakefs.rb
|
184
174
|
- spec/support/method_patch_macro.rb
|
185
175
|
- spec/support/with_env_macro.rb
|
@@ -195,40 +185,39 @@ files:
|
|
195
185
|
- spec/unit/lockfile_spec.rb
|
196
186
|
- spec/unit/manifest_set_spec.rb
|
197
187
|
- spec/unit/manifest_spec.rb
|
188
|
+
- spec/unit/mock/environment_spec.rb
|
198
189
|
- spec/unit/mock/source/mock_spec.rb
|
199
190
|
- spec/unit/resolver_spec.rb
|
200
191
|
- spec/unit/source/git_spec.rb
|
201
192
|
- spec/unit/spec_change_set_spec.rb
|
202
193
|
homepage: ''
|
203
194
|
licenses: []
|
195
|
+
metadata: {}
|
204
196
|
post_install_message:
|
205
197
|
rdoc_options: []
|
206
198
|
require_paths:
|
207
199
|
- lib
|
208
200
|
required_ruby_version: !ruby/object:Gem::Requirement
|
209
|
-
none: false
|
210
201
|
requirements:
|
211
|
-
- -
|
202
|
+
- - '>='
|
212
203
|
- !ruby/object:Gem::Version
|
213
|
-
segments:
|
214
|
-
- 0
|
215
|
-
hash: -845093804329551248
|
216
204
|
version: '0'
|
217
205
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
218
|
-
none: false
|
219
206
|
requirements:
|
220
|
-
- -
|
207
|
+
- - '>='
|
221
208
|
- !ruby/object:Gem::Version
|
222
209
|
version: '0'
|
223
210
|
requirements: []
|
224
211
|
rubyforge_project:
|
225
|
-
rubygems_version:
|
212
|
+
rubygems_version: 2.0.3
|
226
213
|
signing_key:
|
227
|
-
specification_version:
|
228
|
-
summary:
|
214
|
+
specification_version: 4
|
215
|
+
summary: A Framework for Bundlers.
|
229
216
|
test_files:
|
230
217
|
- spec/functional/cli_spec.rb
|
218
|
+
- spec/functional/posix_spec.rb
|
231
219
|
- spec/functional/source/git/repository_spec.rb
|
220
|
+
- spec/functional/source/git_spec.rb
|
232
221
|
- spec/support/fakefs.rb
|
233
222
|
- spec/support/method_patch_macro.rb
|
234
223
|
- spec/support/with_env_macro.rb
|
@@ -244,6 +233,7 @@ test_files:
|
|
244
233
|
- spec/unit/lockfile_spec.rb
|
245
234
|
- spec/unit/manifest_set_spec.rb
|
246
235
|
- spec/unit/manifest_spec.rb
|
236
|
+
- spec/unit/mock/environment_spec.rb
|
247
237
|
- spec/unit/mock/source/mock_spec.rb
|
248
238
|
- spec/unit/resolver_spec.rb
|
249
239
|
- spec/unit/source/git_spec.rb
|