choctop 0.12.1 → 0.13.0
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/.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
@@ -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>0.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>
|
@@ -0,0 +1 @@
|
|
1
|
+
This is the README for the SampleApp
|
Binary file
|
@@ -0,0 +1,284 @@
|
|
1
|
+
// !$*UTF8*$!
|
2
|
+
{
|
3
|
+
archiveVersion = 1;
|
4
|
+
classes = {
|
5
|
+
};
|
6
|
+
objectVersion = 45;
|
7
|
+
objects = {
|
8
|
+
|
9
|
+
/* Begin PBXBuildFile section */
|
10
|
+
1DDD58160DA1D0A300B32029 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1DDD58140DA1D0A300B32029 /* MainMenu.xib */; };
|
11
|
+
8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; };
|
12
|
+
8D11072D0486CEB800E47090 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; settings = {ATTRIBUTES = (); }; };
|
13
|
+
8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };
|
14
|
+
/* End PBXBuildFile section */
|
15
|
+
|
16
|
+
/* Begin PBXFileReference section */
|
17
|
+
089C165DFE840E0CC02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; };
|
18
|
+
1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
|
19
|
+
13E42FB307B3F0F600E4EEF1 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = "<absolute>"; };
|
20
|
+
1DDD58150DA1D0A300B32029 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/MainMenu.xib; sourceTree = "<group>"; };
|
21
|
+
29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
|
22
|
+
29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = "<absolute>"; };
|
23
|
+
29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; };
|
24
|
+
32CA4F630368D1EE00C91783 /* SampleApp_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SampleApp_Prefix.pch; sourceTree = "<group>"; };
|
25
|
+
8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
26
|
+
8D1107320486CEB800E47090 /* SampleApp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SampleApp.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
27
|
+
/* End PBXFileReference section */
|
28
|
+
|
29
|
+
/* Begin PBXFrameworksBuildPhase section */
|
30
|
+
8D11072E0486CEB800E47090 /* Frameworks */ = {
|
31
|
+
isa = PBXFrameworksBuildPhase;
|
32
|
+
buildActionMask = 2147483647;
|
33
|
+
files = (
|
34
|
+
8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */,
|
35
|
+
);
|
36
|
+
runOnlyForDeploymentPostprocessing = 0;
|
37
|
+
};
|
38
|
+
/* End PBXFrameworksBuildPhase section */
|
39
|
+
|
40
|
+
/* Begin PBXGroup section */
|
41
|
+
080E96DDFE201D6D7F000001 /* Classes */ = {
|
42
|
+
isa = PBXGroup;
|
43
|
+
children = (
|
44
|
+
);
|
45
|
+
name = Classes;
|
46
|
+
sourceTree = "<group>";
|
47
|
+
};
|
48
|
+
1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */ = {
|
49
|
+
isa = PBXGroup;
|
50
|
+
children = (
|
51
|
+
1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */,
|
52
|
+
);
|
53
|
+
name = "Linked Frameworks";
|
54
|
+
sourceTree = "<group>";
|
55
|
+
};
|
56
|
+
1058C7A2FEA54F0111CA2CBB /* Other Frameworks */ = {
|
57
|
+
isa = PBXGroup;
|
58
|
+
children = (
|
59
|
+
29B97324FDCFA39411CA2CEA /* AppKit.framework */,
|
60
|
+
13E42FB307B3F0F600E4EEF1 /* CoreData.framework */,
|
61
|
+
29B97325FDCFA39411CA2CEA /* Foundation.framework */,
|
62
|
+
);
|
63
|
+
name = "Other Frameworks";
|
64
|
+
sourceTree = "<group>";
|
65
|
+
};
|
66
|
+
19C28FACFE9D520D11CA2CBB /* Products */ = {
|
67
|
+
isa = PBXGroup;
|
68
|
+
children = (
|
69
|
+
8D1107320486CEB800E47090 /* SampleApp.app */,
|
70
|
+
);
|
71
|
+
name = Products;
|
72
|
+
sourceTree = "<group>";
|
73
|
+
};
|
74
|
+
29B97314FDCFA39411CA2CEA /* SampleApp */ = {
|
75
|
+
isa = PBXGroup;
|
76
|
+
children = (
|
77
|
+
080E96DDFE201D6D7F000001 /* Classes */,
|
78
|
+
29B97315FDCFA39411CA2CEA /* Other Sources */,
|
79
|
+
29B97317FDCFA39411CA2CEA /* Resources */,
|
80
|
+
29B97323FDCFA39411CA2CEA /* Frameworks */,
|
81
|
+
19C28FACFE9D520D11CA2CBB /* Products */,
|
82
|
+
);
|
83
|
+
name = SampleApp;
|
84
|
+
sourceTree = "<group>";
|
85
|
+
};
|
86
|
+
29B97315FDCFA39411CA2CEA /* Other Sources */ = {
|
87
|
+
isa = PBXGroup;
|
88
|
+
children = (
|
89
|
+
32CA4F630368D1EE00C91783 /* SampleApp_Prefix.pch */,
|
90
|
+
29B97316FDCFA39411CA2CEA /* main.m */,
|
91
|
+
);
|
92
|
+
name = "Other Sources";
|
93
|
+
sourceTree = "<group>";
|
94
|
+
};
|
95
|
+
29B97317FDCFA39411CA2CEA /* Resources */ = {
|
96
|
+
isa = PBXGroup;
|
97
|
+
children = (
|
98
|
+
8D1107310486CEB800E47090 /* Info.plist */,
|
99
|
+
089C165CFE840E0CC02AAC07 /* InfoPlist.strings */,
|
100
|
+
1DDD58140DA1D0A300B32029 /* MainMenu.xib */,
|
101
|
+
);
|
102
|
+
name = Resources;
|
103
|
+
sourceTree = "<group>";
|
104
|
+
};
|
105
|
+
29B97323FDCFA39411CA2CEA /* Frameworks */ = {
|
106
|
+
isa = PBXGroup;
|
107
|
+
children = (
|
108
|
+
1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */,
|
109
|
+
1058C7A2FEA54F0111CA2CBB /* Other Frameworks */,
|
110
|
+
);
|
111
|
+
name = Frameworks;
|
112
|
+
sourceTree = "<group>";
|
113
|
+
};
|
114
|
+
/* End PBXGroup section */
|
115
|
+
|
116
|
+
/* Begin PBXNativeTarget section */
|
117
|
+
8D1107260486CEB800E47090 /* SampleApp */ = {
|
118
|
+
isa = PBXNativeTarget;
|
119
|
+
buildConfigurationList = C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "SampleApp" */;
|
120
|
+
buildPhases = (
|
121
|
+
8D1107290486CEB800E47090 /* Resources */,
|
122
|
+
8D11072C0486CEB800E47090 /* Sources */,
|
123
|
+
8D11072E0486CEB800E47090 /* Frameworks */,
|
124
|
+
);
|
125
|
+
buildRules = (
|
126
|
+
);
|
127
|
+
dependencies = (
|
128
|
+
);
|
129
|
+
name = SampleApp;
|
130
|
+
productInstallPath = "$(HOME)/Applications";
|
131
|
+
productName = SampleApp;
|
132
|
+
productReference = 8D1107320486CEB800E47090 /* SampleApp.app */;
|
133
|
+
productType = "com.apple.product-type.application";
|
134
|
+
};
|
135
|
+
/* End PBXNativeTarget section */
|
136
|
+
|
137
|
+
/* Begin PBXProject section */
|
138
|
+
29B97313FDCFA39411CA2CEA /* Project object */ = {
|
139
|
+
isa = PBXProject;
|
140
|
+
buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "SampleApp" */;
|
141
|
+
compatibilityVersion = "Xcode 3.1";
|
142
|
+
hasScannedForEncodings = 1;
|
143
|
+
mainGroup = 29B97314FDCFA39411CA2CEA /* SampleApp */;
|
144
|
+
projectDirPath = "";
|
145
|
+
projectRoot = "";
|
146
|
+
targets = (
|
147
|
+
8D1107260486CEB800E47090 /* SampleApp */,
|
148
|
+
);
|
149
|
+
};
|
150
|
+
/* End PBXProject section */
|
151
|
+
|
152
|
+
/* Begin PBXResourcesBuildPhase section */
|
153
|
+
8D1107290486CEB800E47090 /* Resources */ = {
|
154
|
+
isa = PBXResourcesBuildPhase;
|
155
|
+
buildActionMask = 2147483647;
|
156
|
+
files = (
|
157
|
+
8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */,
|
158
|
+
1DDD58160DA1D0A300B32029 /* MainMenu.xib in Resources */,
|
159
|
+
);
|
160
|
+
runOnlyForDeploymentPostprocessing = 0;
|
161
|
+
};
|
162
|
+
/* End PBXResourcesBuildPhase section */
|
163
|
+
|
164
|
+
/* Begin PBXSourcesBuildPhase section */
|
165
|
+
8D11072C0486CEB800E47090 /* Sources */ = {
|
166
|
+
isa = PBXSourcesBuildPhase;
|
167
|
+
buildActionMask = 2147483647;
|
168
|
+
files = (
|
169
|
+
8D11072D0486CEB800E47090 /* main.m in Sources */,
|
170
|
+
);
|
171
|
+
runOnlyForDeploymentPostprocessing = 0;
|
172
|
+
};
|
173
|
+
/* End PBXSourcesBuildPhase section */
|
174
|
+
|
175
|
+
/* Begin PBXVariantGroup section */
|
176
|
+
089C165CFE840E0CC02AAC07 /* InfoPlist.strings */ = {
|
177
|
+
isa = PBXVariantGroup;
|
178
|
+
children = (
|
179
|
+
089C165DFE840E0CC02AAC07 /* English */,
|
180
|
+
);
|
181
|
+
name = InfoPlist.strings;
|
182
|
+
sourceTree = "<group>";
|
183
|
+
};
|
184
|
+
1DDD58140DA1D0A300B32029 /* MainMenu.xib */ = {
|
185
|
+
isa = PBXVariantGroup;
|
186
|
+
children = (
|
187
|
+
1DDD58150DA1D0A300B32029 /* English */,
|
188
|
+
);
|
189
|
+
name = MainMenu.xib;
|
190
|
+
sourceTree = "<group>";
|
191
|
+
};
|
192
|
+
/* End PBXVariantGroup section */
|
193
|
+
|
194
|
+
/* Begin XCBuildConfiguration section */
|
195
|
+
C01FCF4B08A954540054247B /* Debug */ = {
|
196
|
+
isa = XCBuildConfiguration;
|
197
|
+
buildSettings = {
|
198
|
+
ALWAYS_SEARCH_USER_PATHS = NO;
|
199
|
+
COPY_PHASE_STRIP = NO;
|
200
|
+
FRAMEWORK_SEARCH_PATHS = (
|
201
|
+
"$(inherited)",
|
202
|
+
"\"$(SRCROOT)/../../../../../../objc/frameworks/Sparkle 1.5b6/With Garbage Collection\"",
|
203
|
+
);
|
204
|
+
GCC_DYNAMIC_NO_PIC = NO;
|
205
|
+
GCC_ENABLE_FIX_AND_CONTINUE = YES;
|
206
|
+
GCC_MODEL_TUNING = G5;
|
207
|
+
GCC_OPTIMIZATION_LEVEL = 0;
|
208
|
+
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
209
|
+
GCC_PREFIX_HEADER = SampleApp_Prefix.pch;
|
210
|
+
INFOPLIST_FILE = Info.plist;
|
211
|
+
INSTALL_PATH = "$(HOME)/Applications";
|
212
|
+
PRODUCT_NAME = SampleApp;
|
213
|
+
};
|
214
|
+
name = Debug;
|
215
|
+
};
|
216
|
+
C01FCF4C08A954540054247B /* Release */ = {
|
217
|
+
isa = XCBuildConfiguration;
|
218
|
+
buildSettings = {
|
219
|
+
ALWAYS_SEARCH_USER_PATHS = NO;
|
220
|
+
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
221
|
+
FRAMEWORK_SEARCH_PATHS = (
|
222
|
+
"$(inherited)",
|
223
|
+
"\"$(SRCROOT)/../../../../../../objc/frameworks/Sparkle 1.5b6/With Garbage Collection\"",
|
224
|
+
);
|
225
|
+
GCC_MODEL_TUNING = G5;
|
226
|
+
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
227
|
+
GCC_PREFIX_HEADER = SampleApp_Prefix.pch;
|
228
|
+
INFOPLIST_FILE = Info.plist;
|
229
|
+
INSTALL_PATH = "$(HOME)/Applications";
|
230
|
+
PRODUCT_NAME = SampleApp;
|
231
|
+
};
|
232
|
+
name = Release;
|
233
|
+
};
|
234
|
+
C01FCF4F08A954540054247B /* Debug */ = {
|
235
|
+
isa = XCBuildConfiguration;
|
236
|
+
buildSettings = {
|
237
|
+
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
|
238
|
+
GCC_C_LANGUAGE_STANDARD = c99;
|
239
|
+
GCC_OPTIMIZATION_LEVEL = 0;
|
240
|
+
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
241
|
+
GCC_WARN_UNUSED_VARIABLE = YES;
|
242
|
+
ONLY_ACTIVE_ARCH = YES;
|
243
|
+
PREBINDING = NO;
|
244
|
+
SDKROOT = macosx10.5;
|
245
|
+
};
|
246
|
+
name = Debug;
|
247
|
+
};
|
248
|
+
C01FCF5008A954540054247B /* Release */ = {
|
249
|
+
isa = XCBuildConfiguration;
|
250
|
+
buildSettings = {
|
251
|
+
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
|
252
|
+
GCC_C_LANGUAGE_STANDARD = c99;
|
253
|
+
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
254
|
+
GCC_WARN_UNUSED_VARIABLE = YES;
|
255
|
+
PREBINDING = NO;
|
256
|
+
SDKROOT = macosx10.5;
|
257
|
+
};
|
258
|
+
name = Release;
|
259
|
+
};
|
260
|
+
/* End XCBuildConfiguration section */
|
261
|
+
|
262
|
+
/* Begin XCConfigurationList section */
|
263
|
+
C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "SampleApp" */ = {
|
264
|
+
isa = XCConfigurationList;
|
265
|
+
buildConfigurations = (
|
266
|
+
C01FCF4B08A954540054247B /* Debug */,
|
267
|
+
C01FCF4C08A954540054247B /* Release */,
|
268
|
+
);
|
269
|
+
defaultConfigurationIsVisible = 0;
|
270
|
+
defaultConfigurationName = Release;
|
271
|
+
};
|
272
|
+
C01FCF4E08A954540054247B /* Build configuration list for PBXProject "SampleApp" */ = {
|
273
|
+
isa = XCConfigurationList;
|
274
|
+
buildConfigurations = (
|
275
|
+
C01FCF4F08A954540054247B /* Debug */,
|
276
|
+
C01FCF5008A954540054247B /* Release */,
|
277
|
+
);
|
278
|
+
defaultConfigurationIsVisible = 0;
|
279
|
+
defaultConfigurationName = Release;
|
280
|
+
};
|
281
|
+
/* End XCConfigurationList section */
|
282
|
+
};
|
283
|
+
rootObject = 29B97313FDCFA39411CA2CEA /* Project object */;
|
284
|
+
}
|
@@ -0,0 +1,14 @@
|
|
1
|
+
//
|
2
|
+
// main.m
|
3
|
+
// SampleApp
|
4
|
+
//
|
5
|
+
// Created by Dr Nic on 19/01/09.
|
6
|
+
// Copyright Mocra 2009. All rights reserved.
|
7
|
+
//
|
8
|
+
|
9
|
+
#import <Cocoa/Cocoa.h>
|
10
|
+
|
11
|
+
int main(int argc, char *argv[])
|
12
|
+
{
|
13
|
+
return NSApplicationMain(argc, (const char **) argv);
|
14
|
+
}
|
@@ -49,3 +49,17 @@ Given /^a non\-Xcode chcotop project "([^\"]*)" with files: (.*)$/ do |name, fil
|
|
49
49
|
end
|
50
50
|
files.each { |file| choctop_add_file(file) }
|
51
51
|
end
|
52
|
+
|
53
|
+
Given /^a TextMate bundle project "([^"]*)"$/ do |name|
|
54
|
+
app_path = File.join(File.dirname(__FILE__), "../fixtures", name)
|
55
|
+
`cp -r '#{app_path}' #{@tmp_root}/ 2> /dev/null`
|
56
|
+
`rm -rf '#{@tmp_root}/#{name}/build'`
|
57
|
+
setup_active_project_folder name
|
58
|
+
steps <<-CUCUMBER
|
59
|
+
Given I run local executable "install_choctop" with arguments "."
|
60
|
+
Given Rakefile wired to use development code instead of installed RubyGem
|
61
|
+
CUCUMBER
|
62
|
+
ENV['NO_FINDER'] = 'YES' # disable Finder during tests
|
63
|
+
choctop_add_root
|
64
|
+
end
|
65
|
+
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module DmgHelper
|
2
|
+
def choctop_add_file(file, position = [347, 65])
|
3
|
+
in_project_folder do
|
4
|
+
append_to_file "Rakefile", "$choctop.add_file '#{file}', :position=> #{position.inspect}"
|
5
|
+
end
|
6
|
+
end
|
7
|
+
|
8
|
+
def choctop_add_root(position = [347, 65])
|
9
|
+
in_project_folder do
|
10
|
+
append_to_file "Rakefile", "$choctop.add_root :position=> #{position.inspect}"
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
World(DmgHelper)
|
data/features/support/env.rb
CHANGED
@@ -1,11 +1,9 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
matcher.failure_message = "expected #{given.inspect} to contain #{expected.inspect}"
|
5
|
-
matcher.negative_failure_message = "expected #{given.inspect} not to contain #{expected.inspect}"
|
6
|
-
given.index expected
|
7
|
-
end
|
1
|
+
RSpec::Matchers.define :contain do |expected|
|
2
|
+
match do |actual|
|
3
|
+
actual.index expected
|
8
4
|
end
|
9
|
-
end
|
10
5
|
|
11
|
-
|
6
|
+
failure_message_for_should do |actual|
|
7
|
+
"expected #{actual.inspect} to contain #{expected.inspect}"
|
8
|
+
end
|
9
|
+
end
|
data/lib/choctop.rb
CHANGED
@@ -5,6 +5,7 @@ require "erb"
|
|
5
5
|
require "uri"
|
6
6
|
require "osx/cocoa"
|
7
7
|
require "RedCloth"
|
8
|
+
require "escape"
|
8
9
|
|
9
10
|
require 'choctop/appcast'
|
10
11
|
require 'choctop/dmg'
|
@@ -17,7 +18,7 @@ module ChocTop
|
|
17
18
|
include Dmg
|
18
19
|
include RakeTasks
|
19
20
|
|
20
|
-
VERSION = '0.
|
21
|
+
VERSION = '0.13.0'
|
21
22
|
|
22
23
|
attr_writer :build_opts
|
23
24
|
def build_opts
|
@@ -147,9 +148,9 @@ module ChocTop
|
|
147
148
|
|
148
149
|
# Folder from where all files will be copied into the DMG
|
149
150
|
# Files are copied here if specified with +add_file+ before DMG creation
|
150
|
-
attr_accessor :
|
151
|
-
def
|
152
|
-
@
|
151
|
+
attr_accessor :dmg_src_folder
|
152
|
+
def dmg_src_folder
|
153
|
+
@dmg_src_folder ||= "build/#{build_type}/dmg"
|
153
154
|
end
|
154
155
|
|
155
156
|
# Generated filename for a distribution, from name, version and .dmg
|
@@ -247,7 +248,10 @@ module ChocTop
|
|
247
248
|
# file proc { 'README.txt' }, :position => [50, 100]
|
248
249
|
# file :position => [50, 100] { 'README.txt' }
|
249
250
|
# Required option:
|
250
|
-
#
|
251
|
+
# +:position+ - two item array [x, y] window position
|
252
|
+
# Options:
|
253
|
+
# +:name+ - override the name of the project when mounted in the DMG
|
254
|
+
# +:exclude+ - do not include files/folders
|
251
255
|
def file(*args, &block)
|
252
256
|
path_or_helper, options = args.first.is_a?(Hash) ? [block, args.first] : [args.first, args.last]
|
253
257
|
throw "add_files #{path_or_helper}, :position => [x,y] option is missing" unless options[:position]
|
@@ -255,6 +259,23 @@ module ChocTop
|
|
255
259
|
files[path_or_helper] = options
|
256
260
|
end
|
257
261
|
alias_method :add_file, :file
|
262
|
+
|
263
|
+
# Add the whole project as a mounted item; e.g. a TextMate bundle
|
264
|
+
# Examples:
|
265
|
+
# root :position => [50, 100]
|
266
|
+
# add_root :position => [50, 100], :name => 'My Thing'
|
267
|
+
# Required option:
|
268
|
+
# +:position+ - two item array [x, y] window position
|
269
|
+
# Options:
|
270
|
+
# +:name+ - override the name of the project when mounted in the DMG
|
271
|
+
# +:exclude+ - do not include files/folders
|
272
|
+
def root(options)
|
273
|
+
throw "add_root :position => [x,y] option is missing" unless options[:position]
|
274
|
+
options[:name] ||= File.basename(File.expand_path("."))
|
275
|
+
self.files ||= {}
|
276
|
+
files['.'] = options
|
277
|
+
end
|
278
|
+
alias_method :add_root, :root
|
258
279
|
|
259
280
|
def initialize
|
260
281
|
$choctop = $sparkle = self # define a global variable for this object ($sparkle is legacy)
|