choctop 0.12.1 → 0.13.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.bundle/config +2 -0
- data/.bundle/environment.rb +276 -0
- data/{spec/spec.opts → .rspec} +0 -0
- data/Gemfile +26 -0
- data/Gemfile.lock +89 -0
- data/History.txt +5 -0
- data/Manifest.txt +27 -2
- data/README.rdoc +15 -2
- data/Rakefile +7 -15
- data/choctop.gemspec +71 -0
- data/features/dmg.feature +10 -0
- data/features/fixtures/App With Whitespace/App With Whitespace.xcodeproj/TemplateIcon.icns +0 -0
- data/features/fixtures/App With Whitespace/App With Whitespace.xcodeproj/project.pbxproj +276 -0
- data/features/fixtures/App With Whitespace/App With Whitespace_Prefix.pch +7 -0
- data/features/fixtures/App With Whitespace/English.lproj/InfoPlist.strings +0 -0
- data/features/fixtures/App With Whitespace/English.lproj/MainMenu.xib +3034 -0
- data/features/fixtures/App With Whitespace/Info.plist +30 -0
- data/features/fixtures/App With Whitespace/main.m +14 -0
- data/features/fixtures/MyBundle.tmbundle/Snippets/hello world.tmSnippet +16 -0
- data/features/fixtures/MyBundle.tmbundle/info.plist +10 -0
- data/features/fixtures/SampleApp/English.lproj/InfoPlist.strings +0 -0
- data/features/fixtures/SampleApp/English.lproj/MainMenu.xib +3034 -0
- data/features/fixtures/SampleApp/Info.plist +30 -0
- data/features/fixtures/SampleApp/README.txt +1 -0
- data/features/fixtures/SampleApp/SampleApp.xcodeproj/TemplateIcon.icns +0 -0
- data/features/fixtures/SampleApp/SampleApp.xcodeproj/project.pbxproj +284 -0
- data/features/fixtures/SampleApp/SampleApp_Prefix.pch +7 -0
- data/features/fixtures/SampleApp/main.m +14 -0
- data/features/step_definitions/generator_steps.rb +14 -0
- data/features/support/dmg_helpers.rb +14 -0
- data/features/support/env.rb +3 -5
- data/features/support/matchers.rb +7 -9
- data/lib/choctop.rb +26 -5
- data/lib/choctop/appcast.rb +2 -3
- data/lib/choctop/dmg.rb +19 -6
- data/lib/choctop/rake_tasks.rb +4 -0
- data/spec/dmg_spec.rb +37 -0
- data/spec/fixtures/Info.plist +30 -0
- data/spec/spec_helper.rb +3 -2
- data/spec/version_helper_spec.rb +26 -0
- metadata +108 -36
- data/tasks/rspec.rake +0 -21
data/lib/choctop/appcast.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module ChocTop
|
2
2
|
module Appcast
|
3
3
|
def make_build
|
4
|
-
if
|
4
|
+
if skip_xcode_build
|
5
5
|
puts "Skipping build task..."
|
6
6
|
else
|
7
7
|
sh "xcodebuild -configuration #{build_type} -target #{build_target} #{build_opts}"
|
@@ -56,9 +56,8 @@ module ChocTop
|
|
56
56
|
end
|
57
57
|
end
|
58
58
|
|
59
|
-
def
|
59
|
+
def skip_xcode_build
|
60
60
|
return true if ENV['NO_BUILD']
|
61
|
-
return false if File.exists?('Info.plist')
|
62
61
|
return false if Dir['*.xcodeproj'].size > 0
|
63
62
|
true
|
64
63
|
end
|
data/lib/choctop/dmg.rb
CHANGED
@@ -11,17 +11,30 @@ module ChocTop
|
|
11
11
|
else
|
12
12
|
path_or_helper
|
13
13
|
end
|
14
|
-
|
14
|
+
if path && File.exists?(path)
|
15
|
+
files[path] = options
|
16
|
+
options[:name] ||= File.basename(path)
|
17
|
+
end
|
15
18
|
files
|
16
19
|
end
|
17
20
|
end
|
18
21
|
|
22
|
+
# Two-phase copy: first to a tmp folder (to prevent recursion); then tmp folder to +dmg_src_folder+
|
19
23
|
def copy_files
|
20
|
-
|
21
|
-
|
24
|
+
require 'tmpdir'
|
25
|
+
tmp_dmg_src_folder = File.join(Dir.tmpdir, Time.now.to_i.to_s) # probably unique folder
|
26
|
+
FileUtils.mkdir_p(tmp_dmg_src_folder)
|
22
27
|
files.each do |path, options|
|
23
|
-
|
28
|
+
target = File.join(tmp_dmg_src_folder, options[:name])
|
29
|
+
sh ::Escape.shell_command(['cp', '-r', path, target])
|
30
|
+
if options[:exclude]
|
31
|
+
exclude_list = options[:exclude].is_a?(Array) ? options[:exclude] : [options[:exclude].to_s]
|
32
|
+
exclude_list.each { |exclude| sh ::Escape.shell_command(['rm', '-rf', File.join(target, exclude)]) }
|
33
|
+
end
|
24
34
|
end
|
35
|
+
FileUtils.rm_r(dmg_src_folder) if File.exists? dmg_src_folder
|
36
|
+
FileUtils.mkdir_p(dmg_src_folder)
|
37
|
+
Dir["#{tmp_dmg_src_folder}/*"].each { |f| FileUtils.cp_r(f, dmg_src_folder) }
|
25
38
|
end
|
26
39
|
|
27
40
|
def make_dmg
|
@@ -30,7 +43,7 @@ module ChocTop
|
|
30
43
|
FileUtils.mkdir_p build_path
|
31
44
|
FileUtils.mkdir_p mountpoint # TODO can we remove random mountpoints?
|
32
45
|
FileUtils.rm_f(pkg) # make sure destination pkg doesn't already exist, or hdiutil will barf
|
33
|
-
sh "hdiutil create -format UDRW -quiet -volname '#{name}' -srcfolder '#{
|
46
|
+
sh "hdiutil create -format UDRW -quiet -volname '#{name}' -srcfolder '#{dmg_src_folder}' '#{pkg}'"
|
34
47
|
sh "hdiutil attach '#{pkg}' -mountpoint '#{volume_path}' -noautoopen -quiet"
|
35
48
|
sh "bless --folder '#{volume_path}' --openfolder '#{volume_path}'"
|
36
49
|
sh "sleep 1"
|
@@ -115,7 +128,7 @@ module ChocTop
|
|
115
128
|
def set_position_of_files
|
116
129
|
files.map do |file_options|
|
117
130
|
path, options = file_options
|
118
|
-
target =
|
131
|
+
target = options[:name]
|
119
132
|
position = options[:position].join(", ")
|
120
133
|
%Q{set position of item "#{target}" to {#{position}}}
|
121
134
|
end.join("\n")
|
data/lib/choctop/rake_tasks.rb
CHANGED
data/spec/dmg_spec.rb
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper.rb'
|
2
|
+
|
3
|
+
describe ChocTop::Dmg do
|
4
|
+
before(:each) do
|
5
|
+
@project_path = File.dirname(__FILE__) + "/../features/fixtures/SampleApp"
|
6
|
+
FileUtils.chdir(@project_path) do
|
7
|
+
@choctop = ChocTop::Configuration.new
|
8
|
+
@choctop.files = {}
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
context "#prepare_files" do
|
13
|
+
it "should process :target_bundle into a path" do
|
14
|
+
FileUtils.chdir(@project_path) do
|
15
|
+
@choctop.file :readme, :position=>[175, 65]
|
16
|
+
@choctop.prepare_files
|
17
|
+
@choctop.files['README.txt'].should == {:position=>[175, 65]}
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should process procs into a path" do
|
22
|
+
FileUtils.chdir(@project_path) do
|
23
|
+
@choctop.file proc { 'README.txt' }, :position=>[175, 65]
|
24
|
+
@choctop.prepare_files
|
25
|
+
@choctop.files['README.txt'].should == {:position=>[175, 65]}
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should process blocks into a path" do
|
30
|
+
FileUtils.chdir(@project_path) do
|
31
|
+
@choctop.file(:position => [175, 65]) { 'README.txt' }
|
32
|
+
@choctop.prepare_files
|
33
|
+
@choctop.files['README.txt'].should == {:position=>[175, 65]}
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
3
|
+
<plist version="1.0">
|
4
|
+
<dict>
|
5
|
+
<key>CFBundleDevelopmentRegion</key>
|
6
|
+
<string>English</string>
|
7
|
+
<key>CFBundleExecutable</key>
|
8
|
+
<string>SampleApp</string>
|
9
|
+
<key>CFBundleIconFile</key>
|
10
|
+
<string></string>
|
11
|
+
<key>CFBundleIdentifier</key>
|
12
|
+
<string>com.yourcompany.${PRODUCT_NAME:identifier}</string>
|
13
|
+
<key>CFBundleInfoDictionaryVersion</key>
|
14
|
+
<string>6.0</string>
|
15
|
+
<key>CFBundleName</key>
|
16
|
+
<string>${PRODUCT_NAME}</string>
|
17
|
+
<key>CFBundlePackageType</key>
|
18
|
+
<string>APPL</string>
|
19
|
+
<key>CFBundleSignature</key>
|
20
|
+
<string>????</string>
|
21
|
+
<key>CFBundleVersion</key>
|
22
|
+
<string>1.0</string>
|
23
|
+
<key>NSMainNibFile</key>
|
24
|
+
<string>MainMenu</string>
|
25
|
+
<key>NSPrincipalClass</key>
|
26
|
+
<string>NSApplication</string>
|
27
|
+
<key>SUFeedURL</key>
|
28
|
+
<string>http://mocra.com/sample_app/my_feed.xml</string>
|
29
|
+
</dict>
|
30
|
+
</plist>
|
data/spec/spec_helper.rb
CHANGED
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe ChocTop::VersionHelper do
|
4
|
+
before(:each) do
|
5
|
+
@version_helper = ChocTop::VersionHelper.new(File.expand_path("spec/fixtures/Info.plist"))
|
6
|
+
end
|
7
|
+
|
8
|
+
it "should handle Xcodes default format d.d" do
|
9
|
+
@version_helper.to_s.should == "1.0.0"
|
10
|
+
end
|
11
|
+
|
12
|
+
it "should bump major" do
|
13
|
+
@version_helper.bump_major
|
14
|
+
@version_helper.to_s.should == "2.0.0"
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should bump minor" do
|
18
|
+
@version_helper.bump_minor
|
19
|
+
@version_helper.to_s.should == "1.1.0"
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should bump patch" do
|
23
|
+
@version_helper.bump_patch
|
24
|
+
@version_helper.to_s.should == "1.0.1"
|
25
|
+
end
|
26
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: choctop
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 43
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 0.
|
8
|
+
- 13
|
9
|
+
- 0
|
10
|
+
version: 0.13.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Dr Nic Williams
|
@@ -17,73 +17,119 @@ autorequire:
|
|
17
17
|
bindir: bin
|
18
18
|
cert_chain: []
|
19
19
|
|
20
|
-
date: 2010-06
|
20
|
+
date: 2010-07-06 00:00:00 +10:00
|
21
21
|
default_executable:
|
22
22
|
dependencies:
|
23
23
|
- !ruby/object:Gem::Dependency
|
24
|
-
name: builder
|
25
|
-
prerelease: false
|
26
24
|
requirement: &id001 !ruby/object:Gem::Requirement
|
27
25
|
none: false
|
28
26
|
requirements:
|
29
27
|
- - ">="
|
30
28
|
- !ruby/object:Gem::Version
|
31
|
-
hash:
|
29
|
+
hash: 7
|
32
30
|
segments:
|
33
31
|
- 2
|
34
|
-
-
|
35
|
-
-
|
36
|
-
version: 2.
|
37
|
-
type: :
|
32
|
+
- 0
|
33
|
+
- 4
|
34
|
+
version: 2.0.4
|
35
|
+
type: :development
|
36
|
+
prerelease: false
|
37
|
+
name: rubyforge
|
38
38
|
version_requirements: *id001
|
39
39
|
- !ruby/object:Gem::Dependency
|
40
|
-
name: rubyforge
|
41
|
-
prerelease: false
|
42
40
|
requirement: &id002 !ruby/object:Gem::Requirement
|
43
41
|
none: false
|
44
42
|
requirements:
|
45
43
|
- - ">="
|
46
44
|
- !ruby/object:Gem::Version
|
47
|
-
hash:
|
45
|
+
hash: 21
|
48
46
|
segments:
|
49
47
|
- 2
|
50
|
-
-
|
51
|
-
-
|
52
|
-
version: 2.
|
48
|
+
- 6
|
49
|
+
- 1
|
50
|
+
version: 2.6.1
|
53
51
|
type: :development
|
52
|
+
prerelease: false
|
53
|
+
name: hoe
|
54
54
|
version_requirements: *id002
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name: newgem
|
57
|
-
prerelease: false
|
58
56
|
requirement: &id003 !ruby/object:Gem::Requirement
|
59
57
|
none: false
|
60
58
|
requirements:
|
61
|
-
- - "
|
59
|
+
- - "="
|
62
60
|
- !ruby/object:Gem::Version
|
63
|
-
hash:
|
61
|
+
hash: 23
|
64
62
|
segments:
|
65
|
-
-
|
66
|
-
-
|
67
|
-
-
|
68
|
-
version:
|
69
|
-
type: :
|
63
|
+
- 0
|
64
|
+
- 0
|
65
|
+
- 4
|
66
|
+
version: 0.0.4
|
67
|
+
type: :runtime
|
68
|
+
prerelease: false
|
69
|
+
name: escape
|
70
70
|
version_requirements: *id003
|
71
71
|
- !ruby/object:Gem::Dependency
|
72
|
-
name: hoe
|
73
|
-
prerelease: false
|
74
72
|
requirement: &id004 !ruby/object:Gem::Requirement
|
75
73
|
none: false
|
76
74
|
requirements:
|
77
|
-
- - "
|
75
|
+
- - "="
|
78
76
|
- !ruby/object:Gem::Version
|
79
|
-
hash:
|
77
|
+
hash: 21
|
80
78
|
segments:
|
79
|
+
- 0
|
81
80
|
- 2
|
82
|
-
-
|
81
|
+
- 1
|
82
|
+
version: 0.2.1
|
83
|
+
type: :runtime
|
84
|
+
prerelease: false
|
85
|
+
name: awesome_print
|
86
|
+
version_requirements: *id004
|
87
|
+
- !ruby/object:Gem::Dependency
|
88
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ">="
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
hash: 3
|
94
|
+
segments:
|
83
95
|
- 0
|
84
|
-
version:
|
96
|
+
version: "0"
|
85
97
|
type: :development
|
86
|
-
|
98
|
+
prerelease: false
|
99
|
+
name: bundler
|
100
|
+
version_requirements: *id005
|
101
|
+
- !ruby/object:Gem::Dependency
|
102
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
103
|
+
none: false
|
104
|
+
requirements:
|
105
|
+
- - "="
|
106
|
+
- !ruby/object:Gem::Version
|
107
|
+
hash: 49
|
108
|
+
segments:
|
109
|
+
- 4
|
110
|
+
- 2
|
111
|
+
- 3
|
112
|
+
version: 4.2.3
|
113
|
+
type: :runtime
|
114
|
+
prerelease: false
|
115
|
+
name: RedCloth
|
116
|
+
version_requirements: *id006
|
117
|
+
- !ruby/object:Gem::Dependency
|
118
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
119
|
+
none: false
|
120
|
+
requirements:
|
121
|
+
- - "="
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
hash: 15
|
124
|
+
segments:
|
125
|
+
- 2
|
126
|
+
- 1
|
127
|
+
- 2
|
128
|
+
version: 2.1.2
|
129
|
+
type: :runtime
|
130
|
+
prerelease: false
|
131
|
+
name: builder
|
132
|
+
version_requirements: *id007
|
87
133
|
description: "Build and deploy tools for Cocoa apps using Sparkle for distributions and upgrades; \n\
|
88
134
|
it\xE2\x80\x99s like Hoe but for Cocoa apps.\n\n\
|
89
135
|
Package up your OS X/Cocoa applications into Custom DMGs, generate Sparkle XML, and\n\
|
@@ -105,7 +151,13 @@ extensions: []
|
|
105
151
|
extra_rdoc_files:
|
106
152
|
- History.txt
|
107
153
|
- Manifest.txt
|
154
|
+
- features/fixtures/SampleApp/README.txt
|
108
155
|
files:
|
156
|
+
- .bundle/config
|
157
|
+
- .bundle/environment.rb
|
158
|
+
- .rspec
|
159
|
+
- Gemfile
|
160
|
+
- Gemfile.lock
|
109
161
|
- History.txt
|
110
162
|
- Manifest.txt
|
111
163
|
- README.rdoc
|
@@ -120,8 +172,26 @@ files:
|
|
120
172
|
- assets/vanillia_dmg_icon.png
|
121
173
|
- assets/wood.jpg
|
122
174
|
- bin/install_choctop
|
175
|
+
- choctop.gemspec
|
123
176
|
- features/development.feature
|
124
177
|
- features/dmg.feature
|
178
|
+
- features/fixtures/App With Whitespace/App With Whitespace.xcodeproj/TemplateIcon.icns
|
179
|
+
- features/fixtures/App With Whitespace/App With Whitespace.xcodeproj/project.pbxproj
|
180
|
+
- features/fixtures/App With Whitespace/App With Whitespace_Prefix.pch
|
181
|
+
- features/fixtures/App With Whitespace/English.lproj/InfoPlist.strings
|
182
|
+
- features/fixtures/App With Whitespace/English.lproj/MainMenu.xib
|
183
|
+
- features/fixtures/App With Whitespace/Info.plist
|
184
|
+
- features/fixtures/App With Whitespace/main.m
|
185
|
+
- features/fixtures/MyBundle.tmbundle/Snippets/hello world.tmSnippet
|
186
|
+
- features/fixtures/MyBundle.tmbundle/info.plist
|
187
|
+
- features/fixtures/SampleApp/English.lproj/InfoPlist.strings
|
188
|
+
- features/fixtures/SampleApp/English.lproj/MainMenu.xib
|
189
|
+
- features/fixtures/SampleApp/Info.plist
|
190
|
+
- features/fixtures/SampleApp/README.txt
|
191
|
+
- features/fixtures/SampleApp/SampleApp.xcodeproj/TemplateIcon.icns
|
192
|
+
- features/fixtures/SampleApp/SampleApp.xcodeproj/project.pbxproj
|
193
|
+
- features/fixtures/SampleApp/SampleApp_Prefix.pch
|
194
|
+
- features/fixtures/SampleApp/main.m
|
125
195
|
- features/fixtures/custom_assets/appicon.icns
|
126
196
|
- features/initial_generator.feature
|
127
197
|
- features/rake_tasks.feature
|
@@ -133,6 +203,7 @@ files:
|
|
133
203
|
- features/step_definitions/remote_steps.rb
|
134
204
|
- features/step_definitions/xcode_steps.rb
|
135
205
|
- features/support/common.rb
|
206
|
+
- features/support/dmg_helpers.rb
|
136
207
|
- features/support/env.rb
|
137
208
|
- features/support/matchers.rb
|
138
209
|
- lib/choctop.rb
|
@@ -144,9 +215,10 @@ files:
|
|
144
215
|
- script/destroy
|
145
216
|
- script/generate
|
146
217
|
- spec/choctop_spec.rb
|
147
|
-
- spec/
|
218
|
+
- spec/dmg_spec.rb
|
219
|
+
- spec/fixtures/Info.plist
|
148
220
|
- spec/spec_helper.rb
|
149
|
-
-
|
221
|
+
- spec/version_helper_spec.rb
|
150
222
|
has_rdoc: true
|
151
223
|
homepage: http://drnic.github.com/choctop
|
152
224
|
licenses: []
|
data/tasks/rspec.rake
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
begin
|
2
|
-
require 'spec'
|
3
|
-
rescue LoadError
|
4
|
-
require 'rubygems'
|
5
|
-
require 'spec'
|
6
|
-
end
|
7
|
-
begin
|
8
|
-
require 'spec/rake/spectask'
|
9
|
-
rescue LoadError
|
10
|
-
puts <<-EOS
|
11
|
-
To use rspec for testing you must install rspec gem:
|
12
|
-
gem install rspec
|
13
|
-
EOS
|
14
|
-
exit(0)
|
15
|
-
end
|
16
|
-
|
17
|
-
desc "Run the specs under spec/models"
|
18
|
-
Spec::Rake::SpecTask.new do |t|
|
19
|
-
t.spec_opts = ['--options', "spec/spec.opts"]
|
20
|
-
t.spec_files = FileList['spec/**/*_spec.rb']
|
21
|
-
end
|