choctop 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (174) hide show
  1. data/History.txt +4 -0
  2. data/Manifest.txt +173 -0
  3. data/README.rdoc +130 -0
  4. data/Rakefile +28 -0
  5. data/app_generators/install_choctop/install_choctop_generator.rb +47 -0
  6. data/app_generators/install_choctop/templates/Rakefile.erb +17 -0
  7. data/assets/DefaultVolumeIcon.icns +0 -0
  8. data/assets/default_background.jpg +0 -0
  9. data/bin/install_choctop +24 -0
  10. data/features/development.feature +13 -0
  11. data/features/dmg.feature +16 -0
  12. data/features/fixtures/SampleApp-AlreadyBuilt/SampleApp.xcodeproj/drnic.mode1v3 +1370 -0
  13. data/features/fixtures/SampleApp-AlreadyBuilt/SampleApp.xcodeproj/drnic.pbxuser +134 -0
  14. data/features/fixtures/SampleApp/English.lproj/InfoPlist.strings +0 -0
  15. data/features/fixtures/SampleApp/English.lproj/MainMenu.xib +3034 -0
  16. data/features/fixtures/SampleApp/Info.plist +28 -0
  17. data/features/fixtures/SampleApp/SampleApp.xcodeproj/TemplateIcon.icns +0 -0
  18. data/features/fixtures/SampleApp/SampleApp.xcodeproj/drnic.mode1v3 +1370 -0
  19. data/features/fixtures/SampleApp/SampleApp.xcodeproj/drnic.pbxuser +134 -0
  20. data/features/fixtures/SampleApp/SampleApp.xcodeproj/project.pbxproj +284 -0
  21. data/features/fixtures/SampleApp/SampleApp_Prefix.pch +7 -0
  22. data/features/fixtures/SampleApp/build/Debug/SampleApp.app/Contents/Info.plist +26 -0
  23. data/features/fixtures/SampleApp/build/Debug/SampleApp.app/Contents/MacOS/SampleApp +0 -0
  24. data/features/fixtures/SampleApp/build/Debug/SampleApp.app/Contents/PkgInfo +1 -0
  25. data/features/fixtures/SampleApp/build/Debug/SampleApp.app/Contents/Resources/English.lproj/InfoPlist.strings +0 -0
  26. data/features/fixtures/SampleApp/build/Debug/SampleApp.app/Contents/Resources/English.lproj/MainMenu.nib +0 -0
  27. data/features/fixtures/SampleApp/build/Release/SampleApp.app.dSYM/Contents/Info.plist +27 -0
  28. data/features/fixtures/SampleApp/build/Release/SampleApp.app.dSYM/Contents/Resources/DWARF/SampleApp +0 -0
  29. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Sparkle +0 -0
  30. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Headers/SUAppcast.h +33 -0
  31. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Headers/SUAppcastItem.h +47 -0
  32. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Headers/SUUpdater.h +118 -0
  33. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Headers/SUVersionComparisonProtocol.h +27 -0
  34. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Headers/Sparkle.h +21 -0
  35. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/Info.plist +24 -0
  36. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/License.txt +7 -0
  37. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/SUModelTranslation.plist +174 -0
  38. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/SUStatus.nib/classes.nib +56 -0
  39. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/SUStatus.nib/info.nib +20 -0
  40. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/SUStatus.nib/keyedobjects.nib +0 -0
  41. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib/classes.nib +50 -0
  42. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib/info.nib +20 -0
  43. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib +0 -0
  44. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib/classes.nib +67 -0
  45. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib/info.nib +20 -0
  46. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib/keyedobjects.nib +0 -0
  47. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib/classes.nib +59 -0
  48. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib/info.nib +20 -0
  49. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib +0 -0
  50. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/de.lproj/Sparkle.strings +0 -0
  51. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/classes.nib +50 -0
  52. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/info.nib +20 -0
  53. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib +0 -0
  54. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/classes.nib +67 -0
  55. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/info.nib +20 -0
  56. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/keyedobjects.nib +0 -0
  57. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib/classes.nib +59 -0
  58. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib/info.nib +21 -0
  59. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib +0 -0
  60. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/en.lproj/Sparkle.strings +0 -0
  61. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib/classes.nib +50 -0
  62. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib/info.nib +20 -0
  63. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib +0 -0
  64. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib/classes.nib +67 -0
  65. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib/info.nib +20 -0
  66. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib/keyedobjects.nib +0 -0
  67. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib/classes.nib +59 -0
  68. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib/info.nib +20 -0
  69. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib +0 -0
  70. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/es.lproj/Sparkle.strings +0 -0
  71. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/classes.nib +50 -0
  72. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/info.nib +16 -0
  73. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib +0 -0
  74. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib/classes.nib +67 -0
  75. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib/info.nib +16 -0
  76. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib/keyedobjects.nib +0 -0
  77. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib/classes.nib +59 -0
  78. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib/info.nib +16 -0
  79. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib +0 -0
  80. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/fr.lproj/Sparkle.strings +0 -0
  81. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib/classes.nib +50 -0
  82. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib/info.nib +20 -0
  83. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib +0 -0
  84. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib/classes.nib +67 -0
  85. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib/info.nib +20 -0
  86. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib/keyedobjects.nib +0 -0
  87. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib/classes.nib +59 -0
  88. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib/info.nib +20 -0
  89. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib +0 -0
  90. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/it.lproj/Sparkle.strings +0 -0
  91. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/classes.nib +50 -0
  92. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/info.nib +18 -0
  93. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib +0 -0
  94. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/classes.nib +67 -0
  95. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/info.nib +16 -0
  96. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/keyedobjects.nib +0 -0
  97. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib/classes.nib +59 -0
  98. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib/info.nib +16 -0
  99. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib +0 -0
  100. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/nl.lproj/Sparkle.strings +0 -0
  101. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/relaunch +0 -0
  102. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/classes.nib +50 -0
  103. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/info.nib +20 -0
  104. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib +0 -0
  105. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib/classes.nib +67 -0
  106. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib/info.nib +20 -0
  107. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib/keyedobjects.nib +0 -0
  108. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib/classes.nib +59 -0
  109. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib/info.nib +18 -0
  110. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib +0 -0
  111. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/ru.lproj/Sparkle.strings +0 -0
  112. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/classes.nib +50 -0
  113. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/info.nib +20 -0
  114. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib +0 -0
  115. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib/classes.nib +39 -0
  116. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib/info.nib +18 -0
  117. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib/keyedobjects.nib +0 -0
  118. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib/classes.nib +59 -0
  119. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib/info.nib +20 -0
  120. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib +0 -0
  121. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/sv.lproj/Sparkle.strings +0 -0
  122. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework/Versions/A/Sparkle +0 -0
  123. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Info.plist +26 -0
  124. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/MacOS/SampleApp +0 -0
  125. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/PkgInfo +1 -0
  126. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Resources/English.lproj/InfoPlist.strings +0 -0
  127. data/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Resources/English.lproj/MainMenu.nib +0 -0
  128. data/features/fixtures/SampleApp/build/SampleApp.build/Debug/SampleApp.build/Objects-normal/i386/SampleApp.LinkFileList +1 -0
  129. data/features/fixtures/SampleApp/build/SampleApp.build/Debug/SampleApp.build/SampleApp-all-target-headers.hmap +0 -0
  130. data/features/fixtures/SampleApp/build/SampleApp.build/Debug/SampleApp.build/SampleApp-generated-files.hmap +0 -0
  131. data/features/fixtures/SampleApp/build/SampleApp.build/Debug/SampleApp.build/SampleApp-own-target-headers.hmap +0 -0
  132. data/features/fixtures/SampleApp/build/SampleApp.build/Debug/SampleApp.build/SampleApp-project-headers.hmap +0 -0
  133. data/features/fixtures/SampleApp/build/SampleApp.build/Debug/SampleApp.build/SampleApp.dep +8 -0
  134. data/features/fixtures/SampleApp/build/SampleApp.build/Debug/SampleApp.build/SampleApp.hmap +0 -0
  135. data/features/fixtures/SampleApp/build/SampleApp.build/Release/SampleApp.build/Objects-normal/i386/SampleApp +0 -0
  136. data/features/fixtures/SampleApp/build/SampleApp.build/Release/SampleApp.build/Objects-normal/i386/SampleApp.LinkFileList +1 -0
  137. data/features/fixtures/SampleApp/build/SampleApp.build/Release/SampleApp.build/Objects-normal/ppc/SampleApp +0 -0
  138. data/features/fixtures/SampleApp/build/SampleApp.build/Release/SampleApp.build/Objects-normal/ppc/SampleApp.LinkFileList +1 -0
  139. data/features/fixtures/SampleApp/build/SampleApp.build/Release/SampleApp.build/SampleApp-all-target-headers.hmap +0 -0
  140. data/features/fixtures/SampleApp/build/SampleApp.build/Release/SampleApp.build/SampleApp-generated-files.hmap +0 -0
  141. data/features/fixtures/SampleApp/build/SampleApp.build/Release/SampleApp.build/SampleApp-own-target-headers.hmap +0 -0
  142. data/features/fixtures/SampleApp/build/SampleApp.build/Release/SampleApp.build/SampleApp-project-headers.hmap +0 -0
  143. data/features/fixtures/SampleApp/build/SampleApp.build/Release/SampleApp.build/SampleApp.dep +16 -0
  144. data/features/fixtures/SampleApp/build/SampleApp.build/Release/SampleApp.build/SampleApp.hmap +0 -0
  145. data/features/fixtures/SampleApp/build/SampleApp.build/Release/SampleApp.build/SampleApp~.dep +16 -0
  146. data/features/fixtures/SampleApp/build/SampleApp.build/SampleApp.pbxindex/categories.pbxbtree +0 -0
  147. data/features/fixtures/SampleApp/build/SampleApp.build/SampleApp.pbxindex/cdecls.pbxbtree +0 -0
  148. data/features/fixtures/SampleApp/build/SampleApp.build/SampleApp.pbxindex/decls.pbxbtree +0 -0
  149. data/features/fixtures/SampleApp/build/SampleApp.build/SampleApp.pbxindex/files.pbxbtree +0 -0
  150. data/features/fixtures/SampleApp/build/SampleApp.build/SampleApp.pbxindex/imports.pbxbtree +0 -0
  151. data/features/fixtures/SampleApp/build/SampleApp.build/SampleApp.pbxindex/pbxindex.header +0 -0
  152. data/features/fixtures/SampleApp/build/SampleApp.build/SampleApp.pbxindex/protocols.pbxbtree +0 -0
  153. data/features/fixtures/SampleApp/build/SampleApp.build/SampleApp.pbxindex/refs.pbxbtree +0 -0
  154. data/features/fixtures/SampleApp/build/SampleApp.build/SampleApp.pbxindex/strings.pbxstrings/control +0 -0
  155. data/features/fixtures/SampleApp/build/SampleApp.build/SampleApp.pbxindex/strings.pbxstrings/strings +0 -0
  156. data/features/fixtures/SampleApp/build/SampleApp.build/SampleApp.pbxindex/subclasses.pbxbtree +0 -0
  157. data/features/fixtures/SampleApp/build/SampleApp.build/SampleApp.pbxindex/symbols0.pbxsymbols +0 -0
  158. data/features/fixtures/SampleApp/main.m +14 -0
  159. data/features/fixtures/design/background.jpg +0 -0
  160. data/features/fixtures/design/ds_store +0 -0
  161. data/features/initial_generator.feature +26 -0
  162. data/features/rake_tasks.feature +44 -0
  163. data/features/steps/common.rb +242 -0
  164. data/features/steps/dmg_steps.rb +31 -0
  165. data/features/steps/env.rb +8 -0
  166. data/features/steps/generator.rb +39 -0
  167. data/features/steps/remote.rb +20 -0
  168. data/lib/choctop.rb +185 -0
  169. data/lib/choctop/appcast.rb +54 -0
  170. data/lib/choctop/dmg.rb +112 -0
  171. data/script/console +10 -0
  172. data/script/destroy +14 -0
  173. data/script/generate +14 -0
  174. metadata +271 -0
@@ -0,0 +1,18 @@
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>IBDocumentLocation</key>
6
+ <string>69 14 356 240 0 0 1280 778 </string>
7
+ <key>IBFramework Version</key>
8
+ <string>489.0</string>
9
+ <key>IBLastKnownRelativeProjectPath</key>
10
+ <string>../Sparkle.xcodeproj</string>
11
+ <key>IBOldestOS</key>
12
+ <integer>5</integer>
13
+ <key>IBSystem Version</key>
14
+ <string>9D34</string>
15
+ <key>targetFramework</key>
16
+ <string>IBCocoaFramework</string>
17
+ </dict>
18
+ </plist>
@@ -0,0 +1,59 @@
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>IBClasses</key>
6
+ <array>
7
+ <dict>
8
+ <key>CLASS</key>
9
+ <string>SUWindowController</string>
10
+ <key>LANGUAGE</key>
11
+ <string>ObjC</string>
12
+ <key>SUPERCLASS</key>
13
+ <string>NSWindowController</string>
14
+ </dict>
15
+ <dict>
16
+ <key>ACTIONS</key>
17
+ <dict>
18
+ <key>finishPrompt</key>
19
+ <string>id</string>
20
+ <key>toggleMoreInfo</key>
21
+ <string>id</string>
22
+ </dict>
23
+ <key>CLASS</key>
24
+ <string>SUUpdatePermissionPrompt</string>
25
+ <key>LANGUAGE</key>
26
+ <string>ObjC</string>
27
+ <key>OUTLETS</key>
28
+ <dict>
29
+ <key>delegate</key>
30
+ <string>id</string>
31
+ <key>descriptionTextField</key>
32
+ <string>NSTextField</string>
33
+ <key>moreInfoButton</key>
34
+ <string>NSButton</string>
35
+ <key>moreInfoView</key>
36
+ <string>NSView</string>
37
+ </dict>
38
+ <key>SUPERCLASS</key>
39
+ <string>SUWindowController</string>
40
+ </dict>
41
+ <dict>
42
+ <key>CLASS</key>
43
+ <string>FirstResponder</string>
44
+ <key>LANGUAGE</key>
45
+ <string>ObjC</string>
46
+ <key>SUPERCLASS</key>
47
+ <string>NSObject</string>
48
+ </dict>
49
+ <dict>
50
+ <key>CLASS</key>
51
+ <string>NSObject</string>
52
+ <key>LANGUAGE</key>
53
+ <string>ObjC</string>
54
+ </dict>
55
+ </array>
56
+ <key>IBVersion</key>
57
+ <string>1</string>
58
+ </dict>
59
+ </plist>
@@ -0,0 +1,20 @@
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>IBFramework Version</key>
6
+ <string>670</string>
7
+ <key>IBLastKnownRelativeProjectPath</key>
8
+ <string>../Sparkle.xcodeproj</string>
9
+ <key>IBOldestOS</key>
10
+ <integer>5</integer>
11
+ <key>IBOpenObjects</key>
12
+ <array>
13
+ <integer>6</integer>
14
+ </array>
15
+ <key>IBSystem Version</key>
16
+ <string>10A96</string>
17
+ <key>targetFramework</key>
18
+ <string>IBCocoaFramework</string>
19
+ </dict>
20
+ </plist>
@@ -0,0 +1,26 @@
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>CFBundleIdentifier</key>
10
+ <string>com.yourcompany.SampleApp</string>
11
+ <key>CFBundleInfoDictionaryVersion</key>
12
+ <string>6.0</string>
13
+ <key>CFBundleName</key>
14
+ <string>SampleApp</string>
15
+ <key>CFBundlePackageType</key>
16
+ <string>APPL</string>
17
+ <key>CFBundleSignature</key>
18
+ <string>????</string>
19
+ <key>CFBundleVersion</key>
20
+ <string>1.0</string>
21
+ <key>NSMainNibFile</key>
22
+ <string>MainMenu</string>
23
+ <key>NSPrincipalClass</key>
24
+ <string>NSApplication</string>
25
+ </dict>
26
+ </plist>
@@ -0,0 +1 @@
1
+ /Users/drnic/Documents/ruby/gems/choctop/features/fixtures/SampleApp/build/SampleApp.build/Debug/SampleApp.build/Objects-normal/i386/main.o
@@ -0,0 +1,8 @@
1
+ 32b8c97d9eeffe4de03e038556c7ee98 4d8861263fef6bcd86e00cf873320081 ffffffffffffffffffffffffffffffff 102 /Users/drnic/Documents/ruby/gems/choctop/features/fixtures/SampleApp/build/Debug/SampleApp.app
2
+ 17b5d0cef4130a912fe2ebde55b0e9e4 1b1f555704d8af2184ebef68461efc0b ffffffffffffffffffffffffffffffff 16984 /Users/drnic/Documents/ruby/gems/choctop/features/fixtures/SampleApp/build/Debug/SampleApp.app/Contents/MacOS/SampleApp
3
+ 0000000049741428000000000001fb6c 777edea8160529a49607a8b36ae79cca ffffffffffffffffffffffffffffffff 26603 /Users/drnic/Documents/ruby/gems/choctop/features/fixtures/SampleApp/build/Debug/SampleApp.app/Contents/Resources/English.lproj/MainMenu.nib
4
+ 0000000049741428000000000000005c 496c924c78217259dd30af802f8f9c8d ffffffffffffffffffffffffffffffff 92 /Users/drnic/Documents/ruby/gems/choctop/features/fixtures/SampleApp/build/Debug/SampleApp.app/Contents/Resources/English.lproj/InfoPlist.strings
5
+ 00000000000000000000000000000000 10d79e81e10b41f72e71df376235d5de ffffffffffffffffffffffffffffffff 8 /Users/drnic/Documents/ruby/gems/choctop/features/fixtures/SampleApp/build/Debug/SampleApp.app/Contents/PkgInfo
6
+ 00000000000000000000000000000000 10d79e81e10b41f72e71df376235d5de ffffffffffffffffffffffffffffffff 775 /Users/drnic/Documents/ruby/gems/choctop/features/fixtures/SampleApp/build/Debug/SampleApp.app/Contents/Info.plist
7
+ 9b20cf3f1e5509238947c182a3825127 8c951ff1eaa484dfa6a52a5cf633bd6d ffffffffffffffffffffffffffffffff 4980 /Users/drnic/Documents/ruby/gems/choctop/features/fixtures/SampleApp/build/SampleApp.build/Debug/SampleApp.build/Objects-normal/i386/main.o
8
+ 00000000497414280000000000000095 9b20cf3f1e5509238947c182a382515c ffffffffffffffffffffffffffffffff 34702100 /var/folders/m+/m+3kcvbhHJuAXkWyx1A9yU+++TM/-Caches-/com.apple.Xcode.502/SharedPrecompiledHeaders/SampleApp_Prefix-dkjeqiqnupegjkespojymrvjqhte/SampleApp_Prefix.pch.gch
@@ -0,0 +1 @@
1
+ /Users/drnic/Documents/ruby/gems/choctop/features/fixtures/SampleApp/build/SampleApp.build/Release/SampleApp.build/Objects-normal/i386/main.o
@@ -0,0 +1 @@
1
+ /Users/drnic/Documents/ruby/gems/choctop/features/fixtures/SampleApp/build/SampleApp.build/Release/SampleApp.build/Objects-normal/ppc/main.o
@@ -0,0 +1,16 @@
1
+ da7e2b592a90cfac43687ee0a66041da b94a5b8090388c6871e0e52704b7e1d5 ffffffffffffffffffffffffffffffff 5124 /Users/drnic/Documents/ruby/gems/choctop/features/fixtures/SampleApp/build/SampleApp.build/Release/SampleApp.build/Objects-normal/ppc/main.o
2
+ e2ffe8a0b1ddf7c5f976770168c71580 680a751dc129b1ce0497af82a70796b9 ffffffffffffffffffffffffffffffff 4956 /Users/drnic/Documents/ruby/gems/choctop/features/fixtures/SampleApp/build/SampleApp.build/Release/SampleApp.build/Objects-normal/i386/main.o
3
+ 00000000000000000000000000000000 2ef106aeb1cbf69839fc991960f2385c ffffffffffffffffffffffffffffffff 102 /Users/drnic/Documents/ruby/gems/choctop/features/fixtures/SampleApp/build/Release/SampleApp.app.dSYM
4
+ 9495ac823048938f900bb1ee825dd2a7 e88dfb5a192a0a65dd62d5fa69dd4d5c ffffffffffffffffffffffffffffffff 102 /Users/drnic/Documents/ruby/gems/choctop/features/fixtures/SampleApp/build/Release/SampleApp.app
5
+ 63fb6751d48f97675c07b02b694130dd 803aa9f8d9f8a1d62d94eb4e3674a61b ffffffffffffffffffffffffffffffff 37472 /Users/drnic/Documents/ruby/gems/choctop/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/MacOS/SampleApp
6
+ 633470d9f286429d32889bc7a2d1b665 7c5cf264b53e9644154a09ef4bdf7821 ffffffffffffffffffffffffffffffff 12896 /Users/drnic/Documents/ruby/gems/choctop/features/fixtures/SampleApp/build/SampleApp.build/Release/SampleApp.build/Objects-normal/ppc/SampleApp
7
+ 00000000497414280000000000000095 da7e2b592a90cfac43687ee0a66041a1 ffffffffffffffffffffffffffffffff 33096300 /var/folders/m+/m+3kcvbhHJuAXkWyx1A9yU+++TM/-Caches-/com.apple.Xcode.502/SharedPrecompiledHeaders/SampleApp_Prefix-dzdhellitlqhqncbmsvnvnmxbzwn/SampleApp_Prefix.pch.gch
8
+ 8af59dbd38da4752fde1d883cfc69553 f6667851abed04ec8624fa804f896bca ffffffffffffffffffffffffffffffff 16984 /Users/drnic/Documents/ruby/gems/choctop/features/fixtures/SampleApp/build/SampleApp.build/Release/SampleApp.build/Objects-normal/i386/SampleApp
9
+ 00000000497414280000000000000095 e2ffe8a0b1ddf7c5f976770168c715fb ffffffffffffffffffffffffffffffff 34673428 /var/folders/m+/m+3kcvbhHJuAXkWyx1A9yU+++TM/-Caches-/com.apple.Xcode.502/SharedPrecompiledHeaders/SampleApp_Prefix-bvzsakyvnunwnwgkuekdzteorpeb/SampleApp_Prefix.pch.gch
10
+ 0000000049741428000000000001fb6c 446883e42d20ae32d8bd6692f553d849 ffffffffffffffffffffffffffffffff 26618 /Users/drnic/Documents/ruby/gems/choctop/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Resources/English.lproj/MainMenu.nib
11
+ 0000000049741428000000000000005c 94033838b5d71898bbbe8dc4106649ff ffffffffffffffffffffffffffffffff 92 /Users/drnic/Documents/ruby/gems/choctop/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Resources/English.lproj/InfoPlist.strings
12
+ 00000000000000000000000000000000 c9be0a1977381117620b3eb8ea7494f5 ffffffffffffffffffffffffffffffff 8 /Users/drnic/Documents/ruby/gems/choctop/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/PkgInfo
13
+ 00000000000000000000000000000000 c9be0a1977381117620b3eb8ea7494f5 ffffffffffffffffffffffffffffffff 775 /Users/drnic/Documents/ruby/gems/choctop/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Info.plist
14
+ 0000000048d6090800000000000000cc a73fd9f7ed1e1a9c829b01dd385c2e2b ffffffffffffffffffffffffffffffff 204 /Users/drnic/Documents/ruby/gems/choctop/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework
15
+ 00000000497414280000000000000095 7ffe46e1f7b1157084ff8b0291048e7d ffffffffffffffffffffffffffffffff 33096300 /var/folders/m+/m+3kcvbhHJuAXkWyx1A9yU+++TM/-Caches-/com.apple.Xcode.502/SharedPrecompiledHeaders/SampleApp_Prefix-fyulutblyjenukexmnkofessjcky/SampleApp_Prefix.pch.gch
16
+ 00000000497414280000000000000095 fc9ae2f6fc60f6f8eef2b582f1eabc61 ffffffffffffffffffffffffffffffff 34673428 /var/folders/m+/m+3kcvbhHJuAXkWyx1A9yU+++TM/-Caches-/com.apple.Xcode.502/SharedPrecompiledHeaders/SampleApp_Prefix-ajzjpmkrjtetmmbqijesxlzreard/SampleApp_Prefix.pch.gch
@@ -0,0 +1,16 @@
1
+ 00000000000000000000000000000000 2ef106aeb1cbf69839fc991960f2385c ffffffffffffffffffffffffffffffff 102 /Users/drnic/Documents/ruby/gems/choctop/features/fixtures/SampleApp/build/Release/SampleApp.app.dSYM
2
+ 9495ac823048938f900bb1ee825dd2a7 e88dfb5a192a0a65dd62d5fa69dd4d5c ffffffffffffffffffffffffffffffff 102 /Users/drnic/Documents/ruby/gems/choctop/features/fixtures/SampleApp/build/Release/SampleApp.app
3
+ 0000000048d6090800000000000000cc a73fd9f7ed1e1a9c829b01dd385c2e2b ffffffffffffffffffffffffffffffff 204 /Users/drnic/Documents/ruby/gems/choctop/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Frameworks/Sparkle.framework
4
+ 63fb6751d48f97675c07b02b694130dd 803aa9f8d9f8a1d62d94eb4e3674a61b ffffffffffffffffffffffffffffffff 37472 /Users/drnic/Documents/ruby/gems/choctop/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/MacOS/SampleApp
5
+ 633470d9f286429d32889bc7a2d1b665 7c5cf264b53e9644154a09ef4bdf7821 ffffffffffffffffffffffffffffffff 12896 /Users/drnic/Documents/ruby/gems/choctop/features/fixtures/SampleApp/build/SampleApp.build/Release/SampleApp.build/Objects-normal/ppc/SampleApp
6
+ 8af59dbd38da4752fde1d883cfc69553 f6667851abed04ec8624fa804f896bca ffffffffffffffffffffffffffffffff 16984 /Users/drnic/Documents/ruby/gems/choctop/features/fixtures/SampleApp/build/SampleApp.build/Release/SampleApp.build/Objects-normal/i386/SampleApp
7
+ da7e2b592a90cfac43687ee0a66041da b94a5b8090388c6871e0e52704b7e1d5 ffffffffffffffffffffffffffffffff 5124 /Users/drnic/Documents/ruby/gems/choctop/features/fixtures/SampleApp/build/SampleApp.build/Release/SampleApp.build/Objects-normal/ppc/main.o
8
+ e2ffe8a0b1ddf7c5f976770168c71580 680a751dc129b1ce0497af82a70796b9 ffffffffffffffffffffffffffffffff 4956 /Users/drnic/Documents/ruby/gems/choctop/features/fixtures/SampleApp/build/SampleApp.build/Release/SampleApp.build/Objects-normal/i386/main.o
9
+ 00000000497414280000000000000095 da7e2b592a90cfac43687ee0a66041a1 ffffffffffffffffffffffffffffffff 33096300 /var/folders/m+/m+3kcvbhHJuAXkWyx1A9yU+++TM/-Caches-/com.apple.Xcode.502/SharedPrecompiledHeaders/SampleApp_Prefix-dzdhellitlqhqncbmsvnvnmxbzwn/SampleApp_Prefix.pch.gch
10
+ 00000000497414280000000000000095 e2ffe8a0b1ddf7c5f976770168c715fb ffffffffffffffffffffffffffffffff 34673428 /var/folders/m+/m+3kcvbhHJuAXkWyx1A9yU+++TM/-Caches-/com.apple.Xcode.502/SharedPrecompiledHeaders/SampleApp_Prefix-bvzsakyvnunwnwgkuekdzteorpeb/SampleApp_Prefix.pch.gch
11
+ 0000000049741428000000000001fb6c 446883e42d20ae32d8bd6692f553d849 ffffffffffffffffffffffffffffffff 26618 /Users/drnic/Documents/ruby/gems/choctop/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Resources/English.lproj/MainMenu.nib
12
+ 0000000049741428000000000000005c 94033838b5d71898bbbe8dc4106649ff ffffffffffffffffffffffffffffffff 92 /Users/drnic/Documents/ruby/gems/choctop/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Resources/English.lproj/InfoPlist.strings
13
+ 00000000000000000000000000000000 c9be0a1977381117620b3eb8ea7494f5 ffffffffffffffffffffffffffffffff 8 /Users/drnic/Documents/ruby/gems/choctop/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/PkgInfo
14
+ 00000000000000000000000000000000 c9be0a1977381117620b3eb8ea7494f5 ffffffffffffffffffffffffffffffff 775 /Users/drnic/Documents/ruby/gems/choctop/features/fixtures/SampleApp/build/Release/SampleApp.app/Contents/Info.plist
15
+ 00000000497414280000000000000095 7ffe46e1f7b1157084ff8b0291048e7d ffffffffffffffffffffffffffffffff 33096300 /var/folders/m+/m+3kcvbhHJuAXkWyx1A9yU+++TM/-Caches-/com.apple.Xcode.502/SharedPrecompiledHeaders/SampleApp_Prefix-fyulutblyjenukexmnkofessjcky/SampleApp_Prefix.pch.gch
16
+ 00000000497414280000000000000095 fc9ae2f6fc60f6f8eef2b582f1eabc61 ffffffffffffffffffffffffffffffff 34673428 /var/folders/m+/m+3kcvbhHJuAXkWyx1A9yU+++TM/-Caches-/com.apple.Xcode.502/SharedPrecompiledHeaders/SampleApp_Prefix-ajzjpmkrjtetmmbqijesxlzreard/SampleApp_Prefix.pch.gch
@@ -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
+ }
Binary file
@@ -0,0 +1,26 @@
1
+ Feature: Setup a Cocoa app with sparkle-ruby
2
+ In order to reduce cost of using Sparkle to generate appcasts
3
+ As a Cocoa developer or Cocoa application deployer
4
+ I want a generator to install rake tasks that make using Sparkle easy-peasy
5
+
6
+ Scenario: Install sparkle-ruby into an app that has no existing Rakefile
7
+ Given a Cocoa app that does not have an existing Rakefile
8
+ When I run local executable 'install_choctop' with arguments '.'
9
+ And Rakefile wired to use development code instead of installed RubyGem
10
+ Then file 'Rakefile' is created
11
+ And output does match /rake build/
12
+ And output does match /rake upload/
13
+
14
+ Scenario: Install sparkle-ruby into an app that has an existing Rakefile
15
+ Given a Cocoa app that does have an existing Rakefile
16
+ When I run local executable 'install_choctop' with arguments '.'
17
+ And Rakefile wired to use development code instead of installed RubyGem
18
+ And output does match /choctop added to your Rakefile/
19
+ And output does match /rake build/
20
+ And output does match /rake upload/
21
+
22
+ Scenario: Run 'install_choctop' without arguments shows an error
23
+ Given a Cocoa app that does not have an existing Rakefile
24
+ When I run local executable 'install_choctop' with arguments ''
25
+ Then output does match /USAGE: install_choctop path\/to\/CocoaApp/
26
+
@@ -0,0 +1,44 @@
1
+ Feature: Rake tasks are available to build and deploy Cocoa apps with Sparkle
2
+ In order to reduce time and cost of deploying Sparkle-enabled Cocoa apps
3
+ As a Cocoa developer or Cocoa application deployer
4
+ I want rake tasks to build and deploy my Cocoa app
5
+
6
+ Scenario: rake task to build Release of app
7
+ Given a Cocoa app with choctop installed
8
+ When task 'rake build' is invoked
9
+ Then folder 'build/Release/SampleApp.app' is created
10
+
11
+ Scenario: rake task to create dmg file of build
12
+ Given an unbuilt Cocoa app with choctop installed
13
+ And task 'rake build' is invoked
14
+ When task 'rake dmg' is invoked
15
+ Then file 'appcast/build/SampleApp-0.1.0.dmg' is created
16
+
17
+ Scenario: rake task to create/update the appcast file
18
+ Given a Cocoa app with choctop installed
19
+ When task 'rake feed' is invoked
20
+ Then file 'appcast/build/linker_appcast.xml' is created
21
+ And contents of file 'appcast/build/linker_appcast.xml' does match /<channel>/
22
+ And contents of file 'appcast/build/linker_appcast.xml' does match /</channel>/
23
+ And contents of file 'appcast/build/linker_appcast.xml' does match /<pubDate>/
24
+ And contents of file 'appcast/build/linker_appcast.xml' does match /<item>/
25
+ And contents of file 'appcast/build/linker_appcast.xml' does match /<title>SampleApp 0.1.0</title>/
26
+ And file 'appcast/build/index.php' is created
27
+ And contents of file 'appcast/build/index.php' does match /Location/
28
+ And contents of file 'appcast/build/index.php' does match /SampleApp-0.1.0.dmg/
29
+
30
+ Scenario: rake task to upload the appcast file to the server
31
+ Given a Cocoa app with choctop installed
32
+ And task 'rake feed' is invoked
33
+ And ChocTop config is configured for local rsync
34
+ When task 'rake upload' is invoked
35
+ Then remote file 'linker_appcast.xml' is created
36
+ Then remote file 'SampleApp-0.1.0.dmg' is created
37
+ Then remote file 'index.php' is created
38
+
39
+ Scenario: change the version number in the Info.plist
40
+ Given a Cocoa app with choctop installed
41
+ When task 'rake version:set VERSION="1.2.3"' is invoked
42
+ Then current xcode project version is '1.2.3'
43
+
44
+
@@ -0,0 +1,242 @@
1
+ def in_project_folder(&block)
2
+ project_folder = @active_project_folder || @tmp_root
3
+ FileUtils.chdir(project_folder, &block)
4
+ end
5
+
6
+ def in_home_folder(&block)
7
+ FileUtils.chdir(@home_path, &block)
8
+ end
9
+
10
+ Given %r{^a safe folder} do
11
+ FileUtils.rm_rf @tmp_root = File.dirname(__FILE__) + "/../../tmp"
12
+ FileUtils.mkdir_p @tmp_root
13
+ FileUtils.mkdir_p @home_path = File.expand_path(File.join(@tmp_root, "home"))
14
+ @lib_path = File.expand_path(File.dirname(__FILE__) + '/../../lib')
15
+ Given "env variable $HOME set to '#{@home_path}'"
16
+ end
17
+
18
+ Given %r{^this project is active project folder} do
19
+ Given "a safe folder"
20
+ @active_project_folder = File.expand_path(File.dirname(__FILE__) + "/../..")
21
+ end
22
+
23
+ Given %r{^env variable \$([\w_]+) set to '(.*)'} do |env_var, value|
24
+ ENV[env_var] = value
25
+ end
26
+
27
+ def prepend_to_file(filename, text)
28
+ file = File.read(filename)
29
+ File.open(filename, "w+") do |f|
30
+ f << text + "\n"
31
+ f << file
32
+ end
33
+ end
34
+
35
+ def append_to_file(filename, text)
36
+ File.open(filename, "a") do |f|
37
+ f << text + "\n"
38
+ end
39
+ end
40
+
41
+ def setup_active_project_folder project_name
42
+ @active_project_folder = File.join(@tmp_root, project_name)
43
+ FileUtils.mkdir_p @active_project_folder
44
+ @project_name = project_name
45
+ end
46
+
47
+ Given %r{'(.*)' folder is deleted} do |folder|
48
+ in_project_folder do
49
+ FileUtils.rm_rf folder
50
+ end
51
+ end
52
+
53
+ When %r{^'(.*)' generator is invoked with arguments '(.*)'$} do |generator, arguments|
54
+ @stdout = StringIO.new
55
+ FileUtils.chdir(@active_project_folder) do
56
+ if Object.const_defined?("APP_ROOT")
57
+ APP_ROOT.replace(FileUtils.pwd)
58
+ else
59
+ APP_ROOT = FileUtils.pwd
60
+ end
61
+ run_generator(generator, arguments.split(' '), SOURCES, :stdout => @stdout)
62
+ end
63
+ File.open(File.join(@tmp_root, "generator.out"), "w") do |f|
64
+ @stdout.rewind
65
+ f << @stdout.read
66
+ end
67
+ end
68
+
69
+ When %r{run executable '(.*)' with arguments '(.*)'} do |executable, arguments|
70
+ @stdout = File.expand_path(File.join(@tmp_root, "executable.out"))
71
+ in_project_folder do
72
+ system "#{executable} #{arguments} > #{@stdout} 2> #{@stdout}"
73
+ end
74
+ end
75
+
76
+ When %r{run project executable '(.*)' with arguments '(.*)'} do |executable, arguments|
77
+ @stdout = File.expand_path(File.join(@tmp_root, "executable.out"))
78
+ in_project_folder do
79
+ system "ruby #{executable} #{arguments} > #{@stdout} 2> #{@stdout}"
80
+ end
81
+ end
82
+
83
+ When %r{run local executable '(.*)' with arguments '(.*)'} do |executable, arguments|
84
+ @stdout = File.expand_path(File.join(@tmp_root, "executable.out"))
85
+ executable = File.expand_path(File.join(File.dirname(__FILE__), "/../../bin", executable))
86
+ in_project_folder do
87
+ system "ruby #{executable} #{arguments} > #{@stdout} 2> #{@stdout}"
88
+ end
89
+ end
90
+
91
+ When %r{^task 'rake (.*)' is invoked$} do |task|
92
+ @stdout = File.expand_path(File.join(@tmp_root, "tests.out"))
93
+ FileUtils.chdir(@active_project_folder) do
94
+ system "rake #{task} --trace > #{@stdout} 2> #{@stdout}"
95
+ end
96
+ end
97
+
98
+ Then %r{^folder '(.*)' (is|is not) created} do |folder, is|
99
+ in_project_folder do
100
+ File.exists?(folder).should(is == 'is' ? be_true : be_false)
101
+ end
102
+ end
103
+
104
+ Then %r{^file '(.*)' (is|is not) created} do |file, is|
105
+ in_project_folder do
106
+ File.exists?(file).should(is == 'is' ? be_true : be_false)
107
+ end
108
+ end
109
+
110
+ Then %r{^file with name matching '(.*)' is created} do |pattern|
111
+ in_project_folder do
112
+ Dir[pattern].should_not be_empty
113
+ end
114
+ end
115
+
116
+ Then %r{gem file '(.*)' and generated file '(.*)' should be the same} do |gem_file, project_file|
117
+ File.exists?(gem_file).should be_true
118
+ File.exists?(project_file).should be_true
119
+ gem_file_contents = File.read(File.dirname(__FILE__) + "/../../#{gem_file}")
120
+ project_file_contents = File.read(File.join(@active_project_folder, project_file))
121
+ project_file_contents.should == gem_file_contents
122
+ end
123
+
124
+ Then %r{^output same as contents of '(.*)'$} do |file|
125
+ expected_output = File.read(File.join(File.dirname(__FILE__) + "/../expected_outputs", file))
126
+ actual_output = File.read(@stdout)
127
+ actual_output.should == expected_output
128
+ end
129
+
130
+ Then %r{^(does|does not) invoke generator '(.*)'$} do |does_invoke, generator|
131
+ actual_output = File.read(@stdout)
132
+ does_invoke == "does" ?
133
+ actual_output.should(match(/dependency\s+#{generator}/)) :
134
+ actual_output.should_not(match(/dependency\s+#{generator}/))
135
+ end
136
+
137
+ Then %r{help options '(.*)' and '(.*)' are displayed} do |opt1, opt2|
138
+ actual_output = File.read(@stdout)
139
+ actual_output.should match(/#{opt1}/)
140
+ actual_output.should match(/#{opt2}/)
141
+ end
142
+
143
+ Then %r{^output (does|does not) match \/(.*)\/} do |does, regex|
144
+ actual_output = File.read(@stdout)
145
+ (does == 'does') ?
146
+ actual_output.should(match(/#{regex}/)) :
147
+ actual_output.should_not(match(/#{regex}/))
148
+ end
149
+
150
+ Then %r{^contents of file '(.*)' (does|does not) match \/(.*)\/} do |file, does, regex|
151
+ in_project_folder do
152
+ actual_output = File.read(file)
153
+ (does == 'does') ?
154
+ actual_output.should(match(/#{regex}/)) :
155
+ actual_output.should_not(match(/#{regex}/))
156
+ end
157
+ end
158
+
159
+ Then %r{^all (\d+) tests pass} do |expected_test_count|
160
+ expected = %r{^#{expected_test_count} tests, \d+ assertions, 0 failures, 0 errors}
161
+ actual_output = File.read(@stdout)
162
+ actual_output.should match(expected)
163
+ end
164
+
165
+ Then %r{^all (\d+) examples pass} do |expected_test_count|
166
+ expected = %r{^#{expected_test_count} examples?, 0 failures}
167
+ actual_output = File.read(@stdout)
168
+ actual_output.should match(expected)
169
+ end
170
+
171
+ Then %r{^yaml file '(.*)' contains (\{.*\})} do |file, yaml|
172
+ in_project_folder do
173
+ yaml = eval yaml
174
+ YAML.load(File.read(file)).should == yaml
175
+ end
176
+ end
177
+
178
+ Then %r{^Rakefile can display tasks successfully} do
179
+ @stdout = File.expand_path(File.join(@tmp_root, "rakefile.out"))
180
+ FileUtils.chdir(@active_project_folder) do
181
+ system "rake -T > #{@stdout} 2> #{@stdout}"
182
+ end
183
+ actual_output = File.read(@stdout)
184
+ actual_output.should match(/^rake\s+\w+\s+#\s.*/)
185
+ end
186
+
187
+ Then %r{^task 'rake (.*)' is executed successfully} do |task|
188
+ @stdout.should_not be_nil
189
+ actual_output = File.read(@stdout)
190
+ actual_output.should_not match(/^Don't know how to build task '#{task}'/)
191
+ actual_output.should_not match(/Error/i)
192
+ end
193
+
194
+ Then %r{^gem spec key '(.*)' contains \/(.*)\/} do |key, regex|
195
+ in_project_folder do
196
+ gem_file = Dir["pkg/*.gem"].first
197
+ gem_spec = Gem::Specification.from_yaml(`gem spec #{gem_file}`)
198
+ spec_value = gem_spec.send(key.to_sym)
199
+ spec_value.to_s.should match(/#{regex}/)
200
+ end
201
+ end
202
+
203
+ Given /^file '(.*)' timestamp remembered$/ do |file|
204
+ in_project_folder do
205
+ @timestamp = File.new(file).mtime
206
+ end
207
+ end
208
+
209
+ Then /^file '(.*)' is unchanged$/ do |file|
210
+ raise %Q{ERROR: need to use "Given file '#{file}' timestamp remembered" to set the timestamp} unless @timestamp
211
+ in_project_folder do
212
+ File.new(file).mtime.should == @timestamp
213
+ end
214
+ end
215
+
216
+ Then /^file '(.*)' is modified$/ do |file|
217
+ raise %Q{ERROR: need to use "Given file '#{file}' timestamp remembered" to set the timestamp} unless @timestamp
218
+ in_project_folder do
219
+ File.new(file).mtime.should_not == @timestamp
220
+ end
221
+ end
222
+
223
+ When %r{^in file '(.*)' replace /(.*)/ with '(.*)'$} do |file, from, to|
224
+ in_project_folder do
225
+ contents = File.read(file)
226
+ File.open(file, "w") do |f|
227
+ f << contents.gsub(/#{from}/, to)
228
+ end
229
+ end
230
+ end
231
+
232
+ Then /^file '(.*)' (is|is not) invisible$/ do |file, is|
233
+ `GetFileInfo -aV '#{file}'`.to_i.should_not == (is == 'is' ? 0 : 1)
234
+ end
235
+
236
+ Then /^file '(.*)' is a symlink to '(.*)'$/ do |path, target_path|
237
+ in_project_folder do
238
+ stdout = `ls -al #{path}`
239
+ stdout =~ /\s([^\s]+)\s->\s(.+)$/
240
+ target_path.should == $2
241
+ end
242
+ end