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.
@@ -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
- # TODO: Need to verify files_to_archive exists.
207
- ::Archive.write_open_filename(archive_name, ::Archive::COMPRESSION_GZIP, ::Archive::FORMAT_TAR) do |ar|
208
- files_to_archive.each do |fn|
209
- ar.new_entry do |entry|
210
- entry.copy_stat(fn)
211
- entry.pathname = fn
212
- ar.write_header(entry)
213
- if !entry.directory?
214
- ar.write_data(open(fn) {|f| f.binmode; f.read })
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
- ::Archive.read_open_filename(file) do |ar|
229
- while entry = ar.next_header
230
- ar.extract(entry)
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
- hash: 53
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-02-25 00:00:00 -06:00
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
- prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
25
- none: false
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
- type: :runtime
36
- version_requirements: *id001
24
+ version:
37
25
  - !ruby/object:Gem::Dependency
38
26
  name: net-ssh
39
- prerelease: false
40
- requirement: &id002 !ruby/object:Gem::Requirement
41
- none: false
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
- type: :runtime
52
- version_requirements: *id002
34
+ version:
53
35
  - !ruby/object:Gem::Dependency
54
36
  name: net-sftp
55
- prerelease: false
56
- requirement: &id003 !ruby/object:Gem::Requirement
57
- none: false
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
- type: :runtime
68
- version_requirements: *id003
44
+ version:
69
45
  - !ruby/object:Gem::Dependency
70
46
  name: polyglot
71
- prerelease: false
72
- requirement: &id004 !ruby/object:Gem::Requirement
73
- none: false
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
- type: :runtime
84
- version_requirements: *id004
54
+ version:
85
55
  - !ruby/object:Gem::Dependency
86
56
  name: treetop
87
- prerelease: false
88
- requirement: &id005 !ruby/object:Gem::Requirement
89
- none: false
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
- type: :runtime
100
- version_requirements: *id005
64
+ version:
101
65
  - !ruby/object:Gem::Dependency
102
66
  name: rspec
103
- prerelease: false
104
- requirement: &id006 !ruby/object:Gem::Requirement
105
- none: false
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
- type: :development
115
- version_requirements: *id006
74
+ version:
116
75
  - !ruby/object:Gem::Dependency
117
76
  name: open4
118
- prerelease: false
119
- requirement: &id007 !ruby/object:Gem::Requirement
120
- none: false
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
- type: :development
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.2
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..