fig 0.1.23 → 0.1.25
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/fig/environment.rb +5 -0
- data/lib/fig/os.rb +26 -14
- data/spec/fig_spec.rb +9 -1
- metadata +35 -91
data/lib/fig/environment.rb
CHANGED
@@ -11,6 +11,7 @@ module Fig
|
|
11
11
|
@variables = variables
|
12
12
|
@retrieve_vars = {}
|
13
13
|
@packages = {}
|
14
|
+
@applied_configs = {}
|
14
15
|
end
|
15
16
|
|
16
17
|
# Returns the value of an envirionment variable
|
@@ -34,8 +35,12 @@ module Fig
|
|
34
35
|
end
|
35
36
|
|
36
37
|
def apply_config(package, config_name)
|
38
|
+
if (@applied_configs[package.package_name] ||= []).member?(config_name)
|
39
|
+
return
|
40
|
+
end
|
37
41
|
config = package[config_name]
|
38
42
|
config.statements.each { |stmt| apply_config_statement(package, stmt) }
|
43
|
+
@applied_configs[package.package_name] << config_name
|
39
44
|
end
|
40
45
|
|
41
46
|
def execute_shell(command)
|
data/lib/fig/os.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'fileutils'
|
2
2
|
# Must specify absolute path of ::Archive when using
|
3
3
|
# this module to avoid conflicts with Fig::Package::Archive
|
4
|
-
require 'libarchive_ruby'
|
4
|
+
require 'libarchive_ruby' unless RUBY_PLATFORM == 'java'
|
5
5
|
require 'uri'
|
6
6
|
require 'net/http'
|
7
7
|
require 'net/ssh'
|
@@ -198,20 +198,24 @@ module Fig
|
|
198
198
|
end
|
199
199
|
|
200
200
|
def log_info(msg)
|
201
|
-
puts msg
|
201
|
+
$stderr.puts msg
|
202
202
|
end
|
203
203
|
|
204
204
|
# Expects files_to_archive as an Array of filenames.
|
205
205
|
def create_archive(archive_name, files_to_archive)
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
ar.
|
213
|
-
|
214
|
-
|
206
|
+
if OS.java?
|
207
|
+
`tar czvf #{archive_name} #{files_to_archive.join(' ')}`
|
208
|
+
else
|
209
|
+
# TODO: Need to verify files_to_archive exists.
|
210
|
+
::Archive.write_open_filename(archive_name, ::Archive::COMPRESSION_GZIP, ::Archive::FORMAT_TAR) do |ar|
|
211
|
+
files_to_archive.each do |fn|
|
212
|
+
ar.new_entry do |entry|
|
213
|
+
entry.copy_stat(fn)
|
214
|
+
entry.pathname = fn
|
215
|
+
ar.write_header(entry)
|
216
|
+
if !entry.directory?
|
217
|
+
ar.write_data(open(fn) {|f| f.binmode; f.read })
|
218
|
+
end
|
215
219
|
end
|
216
220
|
end
|
217
221
|
end
|
@@ -225,9 +229,13 @@ module Fig
|
|
225
229
|
# .zip
|
226
230
|
def unpack_archive(dir, file)
|
227
231
|
Dir.chdir(dir) do
|
228
|
-
|
229
|
-
|
230
|
-
|
232
|
+
if OS.java?
|
233
|
+
`tar xzvf #{file}`
|
234
|
+
else
|
235
|
+
::Archive.read_open_filename(file) do |ar|
|
236
|
+
while entry = ar.next_header
|
237
|
+
ar.extract(entry)
|
238
|
+
end
|
231
239
|
end
|
232
240
|
end
|
233
241
|
end
|
@@ -237,6 +245,10 @@ module Fig
|
|
237
245
|
Config::CONFIG['host_os'] =~ /mswin|mingw/
|
238
246
|
end
|
239
247
|
|
248
|
+
def self.java?
|
249
|
+
RUBY_PLATFORM == 'java'
|
250
|
+
end
|
251
|
+
|
240
252
|
def self.unix?
|
241
253
|
!windows?
|
242
254
|
end
|
data/spec/fig_spec.rb
CHANGED
@@ -2,6 +2,7 @@ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
|
2
2
|
|
3
3
|
require 'rubygems'
|
4
4
|
require 'fig/os'
|
5
|
+
require 'rake'
|
5
6
|
require 'fileutils'
|
6
7
|
|
7
8
|
class Popen
|
@@ -12,6 +13,13 @@ class Popen
|
|
12
13
|
yield stdin, stdout, stderr
|
13
14
|
}
|
14
15
|
end
|
16
|
+
elsif Fig::OS.java?
|
17
|
+
require 'open3'
|
18
|
+
def self.popen(*cmd)
|
19
|
+
Open3.popen3(*cmd) { |stdin,stdout,stderr|
|
20
|
+
yield stdin, stdout, stderr
|
21
|
+
}
|
22
|
+
end
|
15
23
|
else
|
16
24
|
require 'open4'
|
17
25
|
def self.popen(*cmd)
|
@@ -36,7 +44,7 @@ def fig(args, input=nil)
|
|
36
44
|
args = "--file - #{args}" if input
|
37
45
|
out = nil
|
38
46
|
err = nil
|
39
|
-
Popen.popen("#{FIG_EXE} #{args}") do |stdin, stdout, stderr|
|
47
|
+
Popen.popen("#{RUBY} #{FIG_EXE} #{args}") do |stdin, stdout, stderr|
|
40
48
|
if input
|
41
49
|
stdin.puts input
|
42
50
|
stdin.close
|
metadata
CHANGED
@@ -1,13 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fig
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 1
|
9
|
-
- 23
|
10
|
-
version: 0.1.23
|
4
|
+
version: 0.1.25
|
11
5
|
platform: ruby
|
12
6
|
authors:
|
13
7
|
- Matthew Foemmel
|
@@ -15,120 +9,79 @@ autorequire:
|
|
15
9
|
bindir: bin
|
16
10
|
cert_chain: []
|
17
11
|
|
18
|
-
date: 2011-
|
12
|
+
date: 2011-04-27 00:00:00 -05:00
|
19
13
|
default_executable:
|
20
14
|
dependencies:
|
21
15
|
- !ruby/object:Gem::Dependency
|
22
16
|
name: libarchive
|
23
|
-
|
24
|
-
|
25
|
-
|
17
|
+
type: :runtime
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
20
|
requirements:
|
27
21
|
- - ">="
|
28
22
|
- !ruby/object:Gem::Version
|
29
|
-
hash: 25
|
30
|
-
segments:
|
31
|
-
- 0
|
32
|
-
- 1
|
33
|
-
- 1
|
34
23
|
version: 0.1.1
|
35
|
-
|
36
|
-
version_requirements: *id001
|
24
|
+
version:
|
37
25
|
- !ruby/object:Gem::Dependency
|
38
26
|
name: net-ssh
|
39
|
-
|
40
|
-
|
41
|
-
|
27
|
+
type: :runtime
|
28
|
+
version_requirement:
|
29
|
+
version_requirements: !ruby/object:Gem::Requirement
|
42
30
|
requirements:
|
43
31
|
- - ">="
|
44
32
|
- !ruby/object:Gem::Version
|
45
|
-
hash: 17
|
46
|
-
segments:
|
47
|
-
- 2
|
48
|
-
- 0
|
49
|
-
- 15
|
50
33
|
version: 2.0.15
|
51
|
-
|
52
|
-
version_requirements: *id002
|
34
|
+
version:
|
53
35
|
- !ruby/object:Gem::Dependency
|
54
36
|
name: net-sftp
|
55
|
-
|
56
|
-
|
57
|
-
|
37
|
+
type: :runtime
|
38
|
+
version_requirement:
|
39
|
+
version_requirements: !ruby/object:Gem::Requirement
|
58
40
|
requirements:
|
59
41
|
- - ">="
|
60
42
|
- !ruby/object:Gem::Version
|
61
|
-
hash: 11
|
62
|
-
segments:
|
63
|
-
- 2
|
64
|
-
- 0
|
65
|
-
- 2
|
66
43
|
version: 2.0.2
|
67
|
-
|
68
|
-
version_requirements: *id003
|
44
|
+
version:
|
69
45
|
- !ruby/object:Gem::Dependency
|
70
46
|
name: polyglot
|
71
|
-
|
72
|
-
|
73
|
-
|
47
|
+
type: :runtime
|
48
|
+
version_requirement:
|
49
|
+
version_requirements: !ruby/object:Gem::Requirement
|
74
50
|
requirements:
|
75
51
|
- - ">="
|
76
52
|
- !ruby/object:Gem::Version
|
77
|
-
hash: 5
|
78
|
-
segments:
|
79
|
-
- 0
|
80
|
-
- 2
|
81
|
-
- 9
|
82
53
|
version: 0.2.9
|
83
|
-
|
84
|
-
version_requirements: *id004
|
54
|
+
version:
|
85
55
|
- !ruby/object:Gem::Dependency
|
86
56
|
name: treetop
|
87
|
-
|
88
|
-
|
89
|
-
|
57
|
+
type: :runtime
|
58
|
+
version_requirement:
|
59
|
+
version_requirements: !ruby/object:Gem::Requirement
|
90
60
|
requirements:
|
91
61
|
- - ">="
|
92
62
|
- !ruby/object:Gem::Version
|
93
|
-
hash: 3
|
94
|
-
segments:
|
95
|
-
- 1
|
96
|
-
- 4
|
97
|
-
- 2
|
98
63
|
version: 1.4.2
|
99
|
-
|
100
|
-
version_requirements: *id005
|
64
|
+
version:
|
101
65
|
- !ruby/object:Gem::Dependency
|
102
66
|
name: rspec
|
103
|
-
|
104
|
-
|
105
|
-
|
67
|
+
type: :development
|
68
|
+
version_requirement:
|
69
|
+
version_requirements: !ruby/object:Gem::Requirement
|
106
70
|
requirements:
|
107
71
|
- - ~>
|
108
72
|
- !ruby/object:Gem::Version
|
109
|
-
hash: 9
|
110
|
-
segments:
|
111
|
-
- 1
|
112
|
-
- 3
|
113
73
|
version: "1.3"
|
114
|
-
|
115
|
-
version_requirements: *id006
|
74
|
+
version:
|
116
75
|
- !ruby/object:Gem::Dependency
|
117
76
|
name: open4
|
118
|
-
|
119
|
-
|
120
|
-
|
77
|
+
type: :development
|
78
|
+
version_requirement:
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
80
|
requirements:
|
122
81
|
- - ">="
|
123
82
|
- !ruby/object:Gem::Version
|
124
|
-
hash: 21
|
125
|
-
segments:
|
126
|
-
- 1
|
127
|
-
- 0
|
128
|
-
- 1
|
129
83
|
version: 1.0.1
|
130
|
-
|
131
|
-
version_requirements: *id007
|
84
|
+
version:
|
132
85
|
description: Fig is a utility for configuring environments and managing dependencies across a team of developers. You give it a list of packages and a shell command to run; it creates an environment that includes those packages, then executes the shell command in it (the caller's environment is not affected).
|
133
86
|
email: git@foemmel.com
|
134
87
|
executables:
|
@@ -153,40 +106,31 @@ files:
|
|
153
106
|
- lib/fig/windows.rb
|
154
107
|
- LICENSE
|
155
108
|
- README.md
|
156
|
-
- spec/fig_spec.rb
|
157
|
-
- spec/spec_helper.rb
|
158
|
-
- spec/win_spec.rb
|
159
109
|
has_rdoc: true
|
160
110
|
homepage: http://github.com/mfoemmel/fig
|
161
111
|
licenses: []
|
162
112
|
|
163
113
|
post_install_message:
|
164
|
-
rdoc_options:
|
165
|
-
|
114
|
+
rdoc_options:
|
115
|
+
- --charset=UTF-8
|
166
116
|
require_paths:
|
167
117
|
- lib
|
168
118
|
required_ruby_version: !ruby/object:Gem::Requirement
|
169
|
-
none: false
|
170
119
|
requirements:
|
171
120
|
- - ">="
|
172
121
|
- !ruby/object:Gem::Version
|
173
|
-
hash: 3
|
174
|
-
segments:
|
175
|
-
- 0
|
176
122
|
version: "0"
|
123
|
+
version:
|
177
124
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
178
|
-
none: false
|
179
125
|
requirements:
|
180
126
|
- - ">="
|
181
127
|
- !ruby/object:Gem::Version
|
182
|
-
hash: 3
|
183
|
-
segments:
|
184
|
-
- 0
|
185
128
|
version: "0"
|
129
|
+
version:
|
186
130
|
requirements: []
|
187
131
|
|
188
132
|
rubyforge_project:
|
189
|
-
rubygems_version: 1.5
|
133
|
+
rubygems_version: 1.3.5
|
190
134
|
signing_key:
|
191
135
|
specification_version: 3
|
192
136
|
summary: Fig is a utility for configuring environments and managing dependencies across a team of developers..
|