fig 0.1.22 → 0.1.23
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/fig +8 -3
- data/lib/fig/environment.rb +10 -3
- data/lib/fig/grammar.treetop +1 -1
- data/lib/fig/os.rb +16 -6
- data/lib/fig/package.rb +2 -1
- data/lib/fig/parser.rb +2 -1
- data/lib/fig/repository.rb +4 -3
- data/spec/fig_spec.rb +25 -0
- metadata +6 -6
data/bin/fig
CHANGED
@@ -141,10 +141,14 @@ else
|
|
141
141
|
end
|
142
142
|
|
143
143
|
if options[:publish] || options[:publish_local]
|
144
|
-
|
144
|
+
if !argv.empty?
|
145
|
+
puts "Unexpected arguments: #{argv.join(' ')}"
|
146
|
+
exit 10
|
147
|
+
end
|
145
148
|
package_name, config_name, version_name = parse_descriptor(options[:publish] || options[:publish_local])
|
146
149
|
if package_name.nil? || version_name.nil?
|
147
|
-
|
150
|
+
puts "Please specify a package name and a version name"
|
151
|
+
exit 10
|
148
152
|
end
|
149
153
|
if not options[:modifiers].empty?
|
150
154
|
publish_statements = options[:resources] + options[:archives] + [Configuration.new("default", options[:modifiers])]
|
@@ -152,7 +156,8 @@ if options[:publish] || options[:publish_local]
|
|
152
156
|
elsif not package.statements.empty?
|
153
157
|
publish_statements = package.statements
|
154
158
|
else
|
155
|
-
|
159
|
+
puts "Nothing to publish"
|
160
|
+
exit 1
|
156
161
|
end
|
157
162
|
if options[:publish]
|
158
163
|
puts "Checking status of #{package_name}/#{version_name}..."
|
data/lib/fig/environment.rb
CHANGED
@@ -26,7 +26,10 @@ module Fig
|
|
26
26
|
|
27
27
|
def register_package(package)
|
28
28
|
name = package.package_name
|
29
|
-
|
29
|
+
if @packages[name]
|
30
|
+
puts "Package already exists with name: #{name}"
|
31
|
+
exit 10
|
32
|
+
end
|
30
33
|
@packages[name] = package
|
31
34
|
end
|
32
35
|
|
@@ -121,7 +124,8 @@ module Fig
|
|
121
124
|
package = @repository.load_package(package_name, version_name || DEFAULT_VERSION_NAME)
|
122
125
|
@packages[package_name] = package
|
123
126
|
elsif version_name && version_name != package.version_name
|
124
|
-
|
127
|
+
puts "Version mismatch: #{package_name}"
|
128
|
+
exit 10
|
125
129
|
end
|
126
130
|
package
|
127
131
|
end
|
@@ -151,7 +155,10 @@ module Fig
|
|
151
155
|
def expand_arg(arg)
|
152
156
|
arg.gsub(/\@([a-zA-Z0-9\-\.]+)/) do |match|
|
153
157
|
package = @packages[$1]
|
154
|
-
|
158
|
+
if package.nil?
|
159
|
+
puts "Package not found: #{$1}"
|
160
|
+
exit 10
|
161
|
+
end
|
155
162
|
package.directory
|
156
163
|
end
|
157
164
|
end
|
data/lib/fig/grammar.treetop
CHANGED
@@ -99,7 +99,7 @@ grammar Fig
|
|
99
99
|
end
|
100
100
|
|
101
101
|
rule descriptor
|
102
|
-
((package:[a-zA-Z0-9.-]+ ("/" version:[a-zA-Z0-
|
102
|
+
((package:[a-zA-Z0-9.-]+ ("/" version:[a-zA-Z0-9_\-.]+)? (":" config:config_name)? ws) /
|
103
103
|
(":" config:config_name ws)) {
|
104
104
|
def get_version
|
105
105
|
elements.each do |element|
|
data/lib/fig/os.rb
CHANGED
@@ -41,7 +41,8 @@ module Fig
|
|
41
41
|
begin
|
42
42
|
uri = URI.parse(url)
|
43
43
|
rescue
|
44
|
-
|
44
|
+
puts "Unable to parse url: '#{url}'"
|
45
|
+
exit 10
|
45
46
|
end
|
46
47
|
case uri.scheme
|
47
48
|
when "ftp"
|
@@ -69,7 +70,8 @@ module Fig
|
|
69
70
|
end
|
70
71
|
packages
|
71
72
|
else
|
72
|
-
|
73
|
+
puts "Protocol not supported: #{url}"
|
74
|
+
exit 10
|
73
75
|
end
|
74
76
|
end
|
75
77
|
|
@@ -107,7 +109,8 @@ module Fig
|
|
107
109
|
cmd = `which fig-download`.strip + " #{timestamp} #{uri.path}"
|
108
110
|
ssh_download(uri.user, uri.host, path, cmd)
|
109
111
|
else
|
110
|
-
|
112
|
+
puts "Unknown protocol: #{url}"
|
113
|
+
exit 10
|
111
114
|
end
|
112
115
|
end
|
113
116
|
|
@@ -131,7 +134,8 @@ module Fig
|
|
131
134
|
when /\.zip$/
|
132
135
|
unpack_archive(dir, path)
|
133
136
|
else
|
134
|
-
|
137
|
+
puts "Unknown archive type: #{basename}"
|
138
|
+
exit 10
|
135
139
|
end
|
136
140
|
end
|
137
141
|
|
@@ -176,7 +180,12 @@ module Fig
|
|
176
180
|
end
|
177
181
|
|
178
182
|
def exec(dir,command)
|
179
|
-
Dir.chdir(dir) {
|
183
|
+
Dir.chdir(dir) {
|
184
|
+
unless system command
|
185
|
+
puts "Command failed"
|
186
|
+
exit 10
|
187
|
+
end
|
188
|
+
}
|
180
189
|
end
|
181
190
|
|
182
191
|
def copy(source, target)
|
@@ -277,7 +286,8 @@ module Fig
|
|
277
286
|
return false
|
278
287
|
when NOT_FOUND
|
279
288
|
tempfile.delete
|
280
|
-
|
289
|
+
puts "File not found: #{path}"
|
290
|
+
exit 10
|
281
291
|
when SUCCESS
|
282
292
|
FileUtils.mv(tempfile.path, path)
|
283
293
|
return true
|
data/lib/fig/package.rb
CHANGED
@@ -13,7 +13,8 @@ module Fig
|
|
13
13
|
@statements.each do |stmt|
|
14
14
|
return stmt if stmt.is_a?(Configuration) && stmt.name == config_name
|
15
15
|
end
|
16
|
-
|
16
|
+
puts "Configuration not found: #{@package_name}/#{@version_name}:#{config_name}"
|
17
|
+
exit 10
|
17
18
|
end
|
18
19
|
|
19
20
|
def configs
|
data/lib/fig/parser.rb
CHANGED
@@ -13,7 +13,8 @@ module Fig
|
|
13
13
|
input = input.gsub(/#.*$/, '')
|
14
14
|
result = @parser.parse(" #{input} ")
|
15
15
|
if result.nil?
|
16
|
-
|
16
|
+
puts "#{directory}: #{@parser.failure_reason}"
|
17
|
+
exit 10
|
17
18
|
end
|
18
19
|
result.to_package(package_name, version_name, directory)
|
19
20
|
end
|
data/lib/fig/repository.rb
CHANGED
@@ -137,7 +137,8 @@ module Fig
|
|
137
137
|
file = File.join(dir, "package.fig")
|
138
138
|
end
|
139
139
|
if not File.exist?(file)
|
140
|
-
|
140
|
+
puts "Fig file not found for package: #{file}"
|
141
|
+
exit 10
|
141
142
|
end
|
142
143
|
read_package_from_file(file, package_name, version_name)
|
143
144
|
end
|
@@ -190,9 +191,9 @@ module Fig
|
|
190
191
|
end
|
191
192
|
write_local_package(package_name, version_name, package)
|
192
193
|
rescue
|
193
|
-
$stderr.puts "
|
194
|
+
$stderr.puts "Install failed, cleaning up"
|
194
195
|
delete_local_package(package_name, version_name)
|
195
|
-
|
196
|
+
exit 10
|
196
197
|
end
|
197
198
|
end
|
198
199
|
|
data/spec/fig_spec.rb
CHANGED
@@ -199,6 +199,31 @@ describe "Fig" do
|
|
199
199
|
File.read("tmp/lib2/foo/hello").should == "some library"
|
200
200
|
end
|
201
201
|
|
202
|
+
it "retrieves resource that is a directory" do
|
203
|
+
FileUtils.rm_rf(FIG_HOME)
|
204
|
+
FileUtils.rm_rf(FIG_REMOTE_DIR)
|
205
|
+
FileUtils.rm_rf("tmp")
|
206
|
+
FileUtils.mkdir_p("tmp/lib")
|
207
|
+
File.open("tmp/lib/hello", "w") { |f| f << "some library" }
|
208
|
+
# To copy the contents of a directory, instead of the directory itself,
|
209
|
+
# use '/.' as a suffix to the directory name in 'append'.
|
210
|
+
input = <<-END
|
211
|
+
resource tmp/lib/hello
|
212
|
+
config default
|
213
|
+
append FOOPATH=@/tmp/lib/.
|
214
|
+
end
|
215
|
+
END
|
216
|
+
fig('--publish foo/1.2.3', input)
|
217
|
+
input = <<-END
|
218
|
+
retrieve FOOPATH->tmp/lib2/[package]
|
219
|
+
config default
|
220
|
+
include foo/1.2.3
|
221
|
+
end
|
222
|
+
END
|
223
|
+
fig('-m', input)
|
224
|
+
File.read("tmp/lib2/foo/hello").should == "some library"
|
225
|
+
end
|
226
|
+
|
202
227
|
it "retrieve preserves the path after '//' when copying files into your project directory" do
|
203
228
|
FileUtils.rm_rf(FIG_HOME)
|
204
229
|
FileUtils.rm_rf(FIG_REMOTE_DIR)
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fig
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: 53
|
5
|
+
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 23
|
10
|
+
version: 0.1.23
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Matthew Foemmel
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
18
|
+
date: 2011-02-25 00:00:00 -06:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -186,7 +186,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
186
186
|
requirements: []
|
187
187
|
|
188
188
|
rubyforge_project:
|
189
|
-
rubygems_version: 1.
|
189
|
+
rubygems_version: 1.5.2
|
190
190
|
signing_key:
|
191
191
|
specification_version: 3
|
192
192
|
summary: Fig is a utility for configuring environments and managing dependencies across a team of developers..
|