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)
         |