geoffrey 0.1.1 → 0.1.2
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/Gemfile.lock +1 -1
- data/README.md +4 -0
- data/lib/geoffrey.rb +6 -1
- data/lib/geoffrey/cli.rb +25 -7
- data/lib/geoffrey/package.rb +7 -5
- data/lib/geoffrey/version.rb +1 -1
- data/spec/cli_spec.rb +16 -0
- data/spec/package_spec.rb +10 -0
- data/templates/burn.json +1 -1
- metadata +3 -3
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -40,6 +40,10 @@ provided recipes, and install them.
|
|
40
40
|
>> Moving file to /Applications
|
41
41
|
>> Install successful
|
42
42
|
|
43
|
+
$ geoffrey install http://www.example.com/template.json --remote
|
44
|
+
>> Parsing http://www.example.com/template.json
|
45
|
+
...
|
46
|
+
|
43
47
|
$ geoffrey seach jabber
|
44
48
|
>> Adium: Adium is a free instant messaging application for Mac OS X that can connect to AIM, MSN, Jabber, Yahoo, and more.
|
45
49
|
|
data/lib/geoffrey.rb
CHANGED
@@ -27,13 +27,18 @@ module Geoffrey
|
|
27
27
|
# the compressed file.
|
28
28
|
# * +:filename+ set the name of the file you are downloading.
|
29
29
|
#
|
30
|
+
# If what you're going to test to see if you have to install something or
|
31
|
+
# not is the existance of a file (most likely), you can just specify the
|
32
|
+
# path in a creates statement (see examples).
|
33
|
+
#
|
30
34
|
# If you don't want to install a .pkg but do something else, you can just
|
31
35
|
# override the install method. See the examples
|
32
36
|
#
|
33
37
|
# @example
|
34
38
|
# Geoffrey.package do
|
35
39
|
# url 'http://www.culater.net/dl/files/SIMBL-0.9.7a.zip'
|
36
|
-
#
|
40
|
+
# creates "/Library/LaunchAgents/net.culater.SIMBL.Agent.plist"
|
41
|
+
# options :sudo => true
|
37
42
|
# end
|
38
43
|
#
|
39
44
|
# @example
|
data/lib/geoffrey/cli.rb
CHANGED
@@ -15,16 +15,34 @@ module Geoffrey
|
|
15
15
|
puts names.join(' ')
|
16
16
|
end
|
17
17
|
|
18
|
-
desc "install [template]", "install the specified template"
|
19
|
-
method_options :verbose => :boolean
|
20
|
-
def install(
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
18
|
+
desc "install [template] [options]", "install the specified template"
|
19
|
+
method_options :verbose => :boolean, :remote => :boolean
|
20
|
+
def install(*names)
|
21
|
+
|
22
|
+
templates_to_install = []
|
23
|
+
|
24
|
+
# if a remote flag is on, then we'll take the parameter as an url, and will
|
25
|
+
# then fetch it directly instead of looking for it in the filesystem
|
26
|
+
# templates.
|
27
|
+
if options[:remote]
|
28
|
+
templates_to_install << names.join
|
25
29
|
else
|
30
|
+
names.each do |name|
|
31
|
+
if file = file_for_template(name)
|
32
|
+
templates_to_install << file
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
if templates_to_install.empty?
|
26
38
|
puts "Template not found"
|
27
39
|
exit 1
|
40
|
+
else
|
41
|
+
templates_to_install.each do |template|
|
42
|
+
package = Geoffrey::Template.new(template).package
|
43
|
+
package.verbose(true) if options[:verbose]
|
44
|
+
package.process
|
45
|
+
end
|
28
46
|
end
|
29
47
|
end
|
30
48
|
|
data/lib/geoffrey/package.rb
CHANGED
@@ -24,13 +24,13 @@ module Geoffrey
|
|
24
24
|
include Geoffrey::FileHelper
|
25
25
|
|
26
26
|
attr_accessor :url, :description, :options, :format, :filename,
|
27
|
-
:dir, :file, :guessed_name
|
27
|
+
:dir, :file, :guessed_name, :creates
|
28
28
|
|
29
29
|
def initialize
|
30
30
|
@options = {}
|
31
31
|
end
|
32
32
|
|
33
|
-
[:url,:description].each do |attrib|
|
33
|
+
[:url,:description,:creates].each do |attrib|
|
34
34
|
class_eval <<-GEOF
|
35
35
|
def #{attrib}(val=nil)
|
36
36
|
val.nil? ? @#{attrib} : @#{attrib} = val
|
@@ -148,7 +148,9 @@ module Geoffrey
|
|
148
148
|
|
149
149
|
def should_install
|
150
150
|
ok_to_go = if @url && @url != ""
|
151
|
-
if @
|
151
|
+
if @creates
|
152
|
+
!File.exists?(@creates)
|
153
|
+
elsif @options[:unless] && @options[:unless].respond_to?(:call)
|
152
154
|
!@options[:unless].call
|
153
155
|
elsif @options[:if] && @options[:if].respond_to?(:call)
|
154
156
|
@options[:if].call
|
@@ -158,8 +160,8 @@ module Geoffrey
|
|
158
160
|
else
|
159
161
|
false
|
160
162
|
end
|
161
|
-
|
162
|
-
|
163
|
+
echo "#{filename} is already installed." unless ok_to_go
|
164
|
+
ok_to_go
|
163
165
|
end
|
164
166
|
|
165
167
|
# Simple wrapper to execute things, using sudo or not as per defiend in the
|
data/lib/geoffrey/version.rb
CHANGED
data/spec/cli_spec.rb
CHANGED
@@ -62,6 +62,22 @@ describe Geoffrey::CLI do
|
|
62
62
|
@app.install("growl")
|
63
63
|
end
|
64
64
|
|
65
|
+
it "can install multiple packages" do
|
66
|
+
Geoffrey::Package.any_instance.expects(:install).twice.returns(nil)
|
67
|
+
Geoffrey::Package.any_instance.expects(:download_and_decompress).twice.returns(nil)
|
68
|
+
@app.install("growl","simbl")
|
69
|
+
end
|
70
|
+
|
71
|
+
it "can take remote packages" do
|
72
|
+
Geoffrey::Package.any_instance.expects(:url).with("foo.com")
|
73
|
+
Geoffrey::Package.any_instance.expects(:download_and_decompress).once.returns(nil)
|
74
|
+
Geoffrey::Package.any_instance.expects(:install).once
|
75
|
+
path = File.dirname(__FILE__) + "/static/template1.json"
|
76
|
+
@app.stubs(:options).returns(:remote => true)
|
77
|
+
@app.stubs(:names).returns([path])
|
78
|
+
@app.install(path)
|
79
|
+
end
|
80
|
+
|
65
81
|
end
|
66
82
|
|
67
83
|
#--
|
data/spec/package_spec.rb
CHANGED
@@ -90,6 +90,16 @@ describe Geoffrey::Package do
|
|
90
90
|
end
|
91
91
|
end
|
92
92
|
|
93
|
+
it "allows for the definition of a 'creates' to serve as a shortcut for :unless => File.exists?" do
|
94
|
+
capturing_output do
|
95
|
+
package = Geoffrey::Package.new
|
96
|
+
package.url("whatever")
|
97
|
+
package.creates(__FILE__) # It always exists
|
98
|
+
package.download_and_decompress.should == nil
|
99
|
+
package.install.should == nil
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
93
103
|
end
|
94
104
|
|
95
105
|
# Things should be uncompressed into a temporary folder, and the
|
data/templates/burn.json
CHANGED
@@ -1,4 +1,4 @@
|
|
1
1
|
{
|
2
2
|
"url" : "http://downloads.sourceforge.net/project/burn-osx/Burn/2.4.1/Burn241u.zip?r=http%3A%2F%2Fburn-osx.sourceforge.net%2FPages%2FEnglish%2Fhome.html&ts=1284476617&use_mirror=ovh",
|
3
|
-
"description" : "
|
3
|
+
"description" : "Burn: simple but advanced burning for Mac OS X"
|
4
4
|
}
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 1
|
8
|
-
-
|
9
|
-
version: 0.1.
|
8
|
+
- 2
|
9
|
+
version: 0.1.2
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Albert Llop
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-09-
|
17
|
+
date: 2010-09-19 00:00:00 +02:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|