fanforce-plugin-factory 0.41.0 → 1.6.0.rc1

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.
Files changed (260) hide show
  1. data/.gitignore +1 -0
  2. data/.ruby-version +1 -0
  3. data/.yardopts +5 -0
  4. data/.yardopts.rb +1 -0
  5. data/Gemfile +9 -0
  6. data/README.md +40 -75
  7. data/Rakefile +61 -4
  8. data/fanforce-plugin-factory.gemspec +21 -21
  9. data/lib/fanforce/plugin_factory.rb +16 -58
  10. data/lib/fanforce/plugin_factory/Rakefile +51 -0
  11. data/lib/fanforce/plugin_factory/Routes.rb +33 -0
  12. data/lib/fanforce/plugin_factory/asset_framework/plugin_factory/_bootstrap.scss +2 -0
  13. data/lib/fanforce/plugin_factory/asset_framework/plugin_factory/_common.scss +1 -0
  14. data/lib/fanforce/plugin_factory/asset_framework/plugin_factory/_directives.scss +7 -0
  15. data/lib/fanforce/plugin_factory/asset_framework/plugin_factory/_font-awesome.scss +1 -0
  16. data/lib/fanforce/plugin_factory/asset_framework/plugin_factory/_ui-select.scss +3 -0
  17. data/lib/fanforce/plugin_factory/{assets/lib/common → asset_framework/plugin_factory/bootstrap}/_bootstrap-overrides.scss +2 -0
  18. data/lib/fanforce/plugin_factory/{assets/lib/vendors/bootstrap/css → asset_framework/plugin_factory/bootstrap}/bootstrap.css +2 -2
  19. data/lib/fanforce/plugin_factory/{assets/lib/vendors/bootstrap/js → asset_framework/plugin_factory/bootstrap}/bootstrap.js +0 -0
  20. data/lib/fanforce/plugin_factory/asset_framework/plugin_factory/bootstrap/bootstrap.min.css +7 -0
  21. data/lib/fanforce/plugin_factory/{assets/lib/vendors/bootstrap/js → asset_framework/plugin_factory/bootstrap}/bootstrap.min.js +0 -0
  22. data/lib/fanforce/plugin_factory/asset_framework/plugin_factory/bootstrap/glyphicons-halflings-regular.eot +0 -0
  23. data/lib/fanforce/plugin_factory/asset_framework/plugin_factory/bootstrap/glyphicons-halflings-regular.svg +229 -0
  24. data/lib/fanforce/plugin_factory/asset_framework/plugin_factory/bootstrap/glyphicons-halflings-regular.ttf +0 -0
  25. data/lib/fanforce/plugin_factory/asset_framework/plugin_factory/bootstrap/glyphicons-halflings-regular.woff +0 -0
  26. data/lib/fanforce/plugin_factory/{assets/lib → asset_framework/plugin_factory}/common/_mixins.scss +2 -1
  27. data/lib/fanforce/plugin_factory/asset_framework/plugin_factory/directives.coffee +1 -0
  28. data/lib/fanforce/plugin_factory/asset_framework/plugin_factory/directives/error/_error.scss +6 -0
  29. data/lib/fanforce/plugin_factory/{assets/lib/common/module-error → asset_framework/plugin_factory/directives/error}/arrow-left.png +0 -0
  30. data/lib/fanforce/plugin_factory/{assets/lib/common/module-error → asset_framework/plugin_factory/directives/error}/icon-error.png +0 -0
  31. data/lib/fanforce/plugin_factory/asset_framework/plugin_factory/directives/initiative-footer/_initiative-footer.coffee +16 -0
  32. data/lib/fanforce/plugin_factory/{assets/lib/common/_module-add-initiative-footer.scss → asset_framework/plugin_factory/directives/initiative-footer/_initiative-footer.scss} +4 -1
  33. data/lib/fanforce/plugin_factory/{assets/lib/common/_module-initiative-searcher.scss → asset_framework/plugin_factory/directives/initiative-searcher/_initiative-searcher.scss} +14 -13
  34. data/lib/fanforce/plugin_factory/{assets/lib/common/module-initiative-searcher → asset_framework/plugin_factory/directives/initiative-searcher}/icon-search.png +0 -0
  35. data/lib/fanforce/plugin_factory/{assets/lib/common/module-initiative-searcher → asset_framework/plugin_factory/directives/initiative-searcher}/spinner.gif +0 -0
  36. data/lib/fanforce/plugin_factory/{assets/lib/common/module-initiative-searcher → asset_framework/plugin_factory/directives/initiative-searcher}/sprite-arrows.png +0 -0
  37. data/lib/fanforce/plugin_factory/asset_framework/plugin_factory/directives/loading/_loading.coffee +4 -0
  38. data/lib/fanforce/plugin_factory/asset_framework/plugin_factory/directives/loading/_loading.scss +4 -0
  39. data/lib/fanforce/plugin_factory/{assets/js/add_source_popup.js → asset_framework/plugin_factory/directives/saving-to-server/_saving-to-server.coffee} +0 -0
  40. data/lib/fanforce/plugin_factory/asset_framework/plugin_factory/directives/saving-to-server/_saving-to-server.scss +6 -0
  41. data/lib/fanforce/plugin_factory/{assets/lib/common/module-saving-initiative → asset_framework/plugin_factory/directives/saving-to-server}/spinner.gif +0 -0
  42. data/lib/fanforce/plugin_factory/asset_framework/plugin_factory/directives/start-arrow/_start-arrow.coffee +8 -0
  43. data/lib/fanforce/plugin_factory/{assets/lib/common/_module-start-here.scss → asset_framework/plugin_factory/directives/start-arrow/_start-arrow.scss} +5 -4
  44. data/lib/fanforce/plugin_factory/{assets/lib/common/module-start-here → asset_framework/plugin_factory/directives/start-arrow}/arrow.png +0 -0
  45. data/lib/fanforce/plugin_factory/{assets/lib/common/_module-video-thumbnail.scss → asset_framework/plugin_factory/directives/video-thumbnail/_video-thumbnail.scss} +4 -4
  46. data/lib/fanforce/plugin_factory/{assets/lib/common/module-video-thumbnail → asset_framework/plugin_factory/directives/video-thumbnail}/icon-play.png +0 -0
  47. data/lib/fanforce/plugin_factory/asset_framework/plugin_factory/font-awesome.coffee +1 -0
  48. data/lib/fanforce/plugin_factory/{assets/lib/vendors/font-awesome/font → asset_framework/plugin_factory/font-awesome}/FontAwesome.otf +0 -0
  49. data/lib/fanforce/plugin_factory/{assets/lib/vendors/font-awesome/css → asset_framework/plugin_factory/font-awesome}/font-awesome.css +2 -2
  50. data/lib/fanforce/plugin_factory/{assets/lib/vendors/font-awesome/css → asset_framework/plugin_factory/font-awesome}/font-awesome.min.css +0 -0
  51. data/lib/fanforce/plugin_factory/{assets/lib/vendors/font-awesome/font → asset_framework/plugin_factory/font-awesome}/fontawesome-webfont.eot +0 -0
  52. data/lib/fanforce/plugin_factory/{assets/lib/vendors/font-awesome/font → asset_framework/plugin_factory/font-awesome}/fontawesome-webfont.svg +0 -0
  53. data/lib/fanforce/plugin_factory/{assets/lib/vendors/font-awesome/font → asset_framework/plugin_factory/font-awesome}/fontawesome-webfont.ttf +0 -0
  54. data/lib/fanforce/plugin_factory/{assets/lib/vendors/font-awesome/font → asset_framework/plugin_factory/font-awesome}/fontawesome-webfont.woff +0 -0
  55. data/lib/fanforce/plugin_factory/asset_framework/plugin_factory/lib.coffee +1 -0
  56. data/lib/fanforce/plugin_factory/asset_framework/plugin_factory/lib/ng-focus-blur.js +68 -0
  57. data/lib/fanforce/plugin_factory/asset_framework/plugin_factory/lib/ng-visible.js +7 -0
  58. data/lib/fanforce/plugin_factory/asset_framework/plugin_factory/ui-select.coffee +1 -0
  59. data/lib/fanforce/plugin_factory/asset_framework/plugin_factory/ui-select/select.css +171 -0
  60. data/lib/fanforce/plugin_factory/asset_framework/plugin_factory/ui-select/select.js +1281 -0
  61. data/lib/fanforce/plugin_factory/asset_framework/plugin_factory/ui-select/select_override.scss +1 -0
  62. data/lib/fanforce/plugin_factory/asset_framework/plugin_factory/ui-select/selectize.default.css +443 -0
  63. data/lib/fanforce/plugin_factory/cli.rb +5 -0
  64. data/lib/fanforce/plugin_factory/cli/lib/bitbucket.rb +77 -0
  65. data/lib/fanforce/plugin_factory/cli/lib/bundler.rb +21 -0
  66. data/lib/fanforce/plugin_factory/cli/lib/env.rb +96 -0
  67. data/lib/fanforce/plugin_factory/cli/lib/git.rb +59 -0
  68. data/lib/fanforce/plugin_factory/cli/lib/heroku.rb +94 -0
  69. data/lib/fanforce/plugin_factory/cli/lib/iron.rb +71 -0
  70. data/lib/fanforce/plugin_factory/cli/lib/pow.rb +46 -0
  71. data/lib/fanforce/plugin_factory/cli/lib/scaffolding.rb +74 -0
  72. data/lib/fanforce/plugin_factory/cli/lib/scaffolding_file.rb +510 -0
  73. data/lib/fanforce/plugin_factory/cli/lib/uranium.rb +77 -0
  74. data/lib/fanforce/plugin_factory/cli/lib/utils.rb +57 -0
  75. data/lib/fanforce/plugin_factory/cli/scripts/config.rb +9 -0
  76. data/lib/fanforce/plugin_factory/cli/scripts/create.rb +64 -0
  77. data/lib/fanforce/plugin_factory/cli/scripts/destroy.rb +61 -0
  78. data/lib/fanforce/plugin_factory/cli/scripts/diff.rb +156 -0
  79. data/lib/fanforce/plugin_factory/cli/scripts/push.rb +88 -0
  80. data/lib/fanforce/plugin_factory/cli/scripts/restart.rb +41 -0
  81. data/lib/fanforce/plugin_factory/cli/scripts/setup.rb +70 -0
  82. data/lib/fanforce/plugin_factory/cli/scripts/update.rb +132 -0
  83. data/lib/fanforce/plugin_factory/cli_directory_of_plugins.rb +51 -0
  84. data/lib/fanforce/plugin_factory/cli_single_plugin.rb +52 -0
  85. data/lib/fanforce/plugin_factory/controllers/base_controller.rb +15 -0
  86. data/lib/fanforce/plugin_factory/core_config.rb +94 -0
  87. data/lib/fanforce/plugin_factory/directive_views/initiative-footer.haml +8 -0
  88. data/lib/fanforce/plugin_factory/load.rb +7 -0
  89. data/lib/fanforce/plugin_factory/load_iron_worker.rb +2 -0
  90. data/lib/fanforce/plugin_factory/load_sprockets.rb +2 -0
  91. data/lib/fanforce/plugin_factory/plugin.rb +60 -0
  92. data/lib/fanforce/plugin_factory/scaffolding/._.gitignore.registry +1 -0
  93. data/lib/fanforce/plugin_factory/scaffolding/._Gemfile.registry +3 -0
  94. data/lib/fanforce/plugin_factory/scaffolding/._Rakefile.registry +3 -0
  95. data/lib/fanforce/plugin_factory/scaffolding/._config.json.registry +2 -0
  96. data/lib/fanforce/plugin_factory/scaffolding/._config.ru.registry +4 -0
  97. data/lib/fanforce/plugin_factory/scaffolding/._favicon.ico.registry +1 -0
  98. data/lib/fanforce/plugin_factory/scaffolding/._robots.txt.registry +3 -0
  99. data/lib/fanforce/plugin_factory/scaffolding/.gitignore +27 -0
  100. data/lib/fanforce/plugin_factory/scaffolding/Gemfile +9 -0
  101. data/lib/fanforce/plugin_factory/scaffolding/Rakefile +7 -0
  102. data/lib/fanforce/plugin_factory/scaffolding/Routes.rb +67 -0
  103. data/lib/fanforce/plugin_factory/scaffolding/assets/css/._fembedded.scss.registry +4 -0
  104. data/lib/fanforce/plugin_factory/scaffolding/assets/css/._promotional.scss.registry +4 -0
  105. data/lib/fanforce/plugin_factory/scaffolding/assets/css/._visitor.scss.registry +4 -0
  106. data/lib/fanforce/plugin_factory/scaffolding/assets/css/fembedded.scss +24 -0
  107. data/lib/fanforce/plugin_factory/scaffolding/assets/css/promotional.scss +33 -0
  108. data/lib/fanforce/plugin_factory/scaffolding/assets/css/visitor.scss +61 -0
  109. data/lib/fanforce/plugin_factory/scaffolding/assets/img/._icon-16.png.registry +1 -0
  110. data/lib/fanforce/plugin_factory/scaffolding/assets/img/._icon-32.png.registry +1 -0
  111. data/lib/fanforce/plugin_factory/scaffolding/assets/img/._icon-42.png.registry +1 -0
  112. data/lib/fanforce/plugin_factory/scaffolding/assets/img/._marketplace.png.registry +1 -0
  113. data/lib/fanforce/plugin_factory/{assets → scaffolding/assets}/img/icon-16.png +0 -0
  114. data/lib/fanforce/plugin_factory/{assets → scaffolding/assets}/img/icon-32.png +0 -0
  115. data/lib/fanforce/plugin_factory/{assets → scaffolding/assets}/img/icon-42.png +0 -0
  116. data/lib/fanforce/plugin_factory/scaffolding/assets/img/marketplace.png +0 -0
  117. data/lib/fanforce/plugin_factory/scaffolding/assets/img/promotional/._fanforce_bg.png.registry +1 -0
  118. data/lib/fanforce/plugin_factory/scaffolding/assets/img/promotional/._icon-42.png.registry +1 -0
  119. data/lib/fanforce/plugin_factory/scaffolding/assets/img/promotional/._icon-plus.png.registry +1 -0
  120. data/lib/fanforce/plugin_factory/{assets/lib → scaffolding/assets/img}/promotional/fanforce_bg.png +0 -0
  121. data/lib/fanforce/plugin_factory/{assets/lib → scaffolding/assets/img}/promotional/icon-42.png +0 -0
  122. data/lib/fanforce/plugin_factory/scaffolding/assets/img/promotional/icon-plus.png +0 -0
  123. data/lib/fanforce/plugin_factory/scaffolding/assets/js/._fembedded-app.coffee.registry +5 -0
  124. data/lib/fanforce/plugin_factory/scaffolding/assets/js/._fembedded.js.registry +3 -0
  125. data/lib/fanforce/plugin_factory/scaffolding/assets/js/._promotional.js.registry +3 -0
  126. data/lib/fanforce/plugin_factory/scaffolding/assets/js/fembedded-app.coffee +11 -0
  127. data/lib/fanforce/plugin_factory/scaffolding/assets/js/fembedded.js +12 -0
  128. data/lib/fanforce/plugin_factory/scaffolding/assets/js/lib/._cookie.coffee.registry +3 -0
  129. data/lib/fanforce/plugin_factory/scaffolding/assets/js/lib/._filters.coffee.registry +3 -0
  130. data/lib/fanforce/plugin_factory/scaffolding/assets/js/lib/._utils.coffee.registry +3 -0
  131. data/lib/fanforce/plugin_factory/scaffolding/assets/js/lib/cookie.coffee +24 -0
  132. data/lib/fanforce/plugin_factory/scaffolding/assets/js/lib/filters.coffee +9 -0
  133. data/lib/fanforce/plugin_factory/scaffolding/assets/js/lib/utils.coffee +40 -0
  134. data/lib/fanforce/plugin_factory/scaffolding/assets/js/promotional.js +4 -0
  135. data/lib/fanforce/plugin_factory/scaffolding/config.json +24 -0
  136. data/lib/fanforce/plugin_factory/scaffolding/config.ru +8 -0
  137. data/lib/fanforce/plugin_factory/{public → scaffolding}/favicon.ico +0 -0
  138. data/lib/fanforce/plugin_factory/scaffolding/layouts/._fembedded.haml.registry +4 -0
  139. data/lib/fanforce/plugin_factory/scaffolding/layouts/._promotional.haml.registry +2 -0
  140. data/lib/fanforce/plugin_factory/scaffolding/layouts/._visitor.haml.registry +6 -0
  141. data/lib/fanforce/plugin_factory/scaffolding/layouts/fembedded.haml +26 -0
  142. data/lib/fanforce/plugin_factory/{layouts → scaffolding/layouts}/promotional.haml +6 -6
  143. data/lib/fanforce/plugin_factory/{layouts/engage.haml → scaffolding/layouts/visitor.haml} +10 -7
  144. data/lib/fanforce/plugin_factory/scaffolding/robots.txt +7 -0
  145. data/lib/fanforce/plugin_factory/scaffolding/views/._index.haml.registry +3 -0
  146. data/lib/fanforce/plugin_factory/{views → scaffolding/views}/index.haml +13 -7
  147. data/lib/fanforce/plugin_factory/sinatra/_load.rb +87 -0
  148. data/lib/fanforce/plugin_factory/sinatra/error_handling.rb +48 -0
  149. data/lib/fanforce/plugin_factory/sinatra/helper_routes/com_behavior.rb +19 -0
  150. data/lib/fanforce/plugin_factory/sinatra/helper_routes/com_broadcaster.rb +7 -0
  151. data/lib/fanforce/plugin_factory/sinatra/helper_routes/com_connector.rb +11 -0
  152. data/lib/fanforce/plugin_factory/sinatra/helper_routes/com_identifier.rb +3 -0
  153. data/lib/fanforce/plugin_factory/sinatra/helper_routes/com_js_widget.rb +8 -0
  154. data/lib/fanforce/plugin_factory/sinatra/helper_routes/plugin.rb +50 -0
  155. data/lib/fanforce/plugin_factory/sinatra/helpers/assets.rb +23 -0
  156. data/lib/fanforce/plugin_factory/sinatra/helpers/css_frameworks.rb +70 -0
  157. data/lib/fanforce/plugin_factory/sinatra/helpers/fanforce.rb +18 -0
  158. data/lib/fanforce/plugin_factory/{config → sinatra}/helpers/json.rb +2 -2
  159. data/lib/fanforce/plugin_factory/sinatra/helpers/ractive.rb +45 -0
  160. data/lib/fanforce/plugin_factory/sprockets/compiler.rb +5 -11
  161. data/lib/fanforce/plugin_factory/sprockets/hacks.rb +2 -2
  162. data/lib/fanforce/plugin_factory/version.rb +2 -2
  163. metadata +201 -195
  164. data/.rbenv-gemsets +0 -1
  165. data/.rbenv-version +0 -1
  166. data/lib/fanforce/plugin_factory.rake +0 -72
  167. data/lib/fanforce/plugin_factory/_init_sinatra.rb +0 -54
  168. data/lib/fanforce/plugin_factory/assets/css/add_edit_initiative.scss +0 -1
  169. data/lib/fanforce/plugin_factory/assets/css/add_source.scss +0 -1
  170. data/lib/fanforce/plugin_factory/assets/css/convert_pending_initiative.scss +0 -1
  171. data/lib/fanforce/plugin_factory/assets/css/engage.scss +0 -1
  172. data/lib/fanforce/plugin_factory/assets/css/new_message.scss +0 -1
  173. data/lib/fanforce/plugin_factory/assets/css/promotional.scss +0 -1
  174. data/lib/fanforce/plugin_factory/assets/css/source_details.scss +0 -1
  175. data/lib/fanforce/plugin_factory/assets/js/add_edit_initiative.js +0 -1
  176. data/lib/fanforce/plugin_factory/assets/js/add_source.js +0 -1
  177. data/lib/fanforce/plugin_factory/assets/js/convert_pending_initiative.js +0 -1
  178. data/lib/fanforce/plugin_factory/assets/js/engage.js +0 -1
  179. data/lib/fanforce/plugin_factory/assets/js/new_message.js +0 -1
  180. data/lib/fanforce/plugin_factory/assets/js/promotional.js +0 -2
  181. data/lib/fanforce/plugin_factory/assets/js/source_details.js +0 -0
  182. data/lib/fanforce/plugin_factory/assets/lib/common/_module-error.scss +0 -11
  183. data/lib/fanforce/plugin_factory/assets/lib/common/_module-page-loading.scss +0 -1
  184. data/lib/fanforce/plugin_factory/assets/lib/common/_module-saving-initiative.scss +0 -6
  185. data/lib/fanforce/plugin_factory/assets/lib/common/_tags.scss +0 -1
  186. data/lib/fanforce/plugin_factory/assets/lib/common/_variables.scss +0 -27
  187. data/lib/fanforce/plugin_factory/assets/lib/common/broadcaster-divider-arrow.png +0 -0
  188. data/lib/fanforce/plugin_factory/assets/lib/common/icons/dropdown-arrow.png +0 -0
  189. data/lib/fanforce/plugin_factory/assets/lib/common/icons/initiative.png +0 -0
  190. data/lib/fanforce/plugin_factory/assets/lib/common/layouts/_add_edit_initiative.scss +0 -27
  191. data/lib/fanforce/plugin_factory/assets/lib/common/layouts/_add_source.scss +0 -18
  192. data/lib/fanforce/plugin_factory/assets/lib/common/layouts/_convert_pending_initiative.scss +0 -27
  193. data/lib/fanforce/plugin_factory/assets/lib/common/layouts/_engage.scss +0 -78
  194. data/lib/fanforce/plugin_factory/assets/lib/common/layouts/_new_message.scss +0 -24
  195. data/lib/fanforce/plugin_factory/assets/lib/common/layouts/_promotional.scss +0 -27
  196. data/lib/fanforce/plugin_factory/assets/lib/common/layouts/_source_details.scss +0 -17
  197. data/lib/fanforce/plugin_factory/assets/lib/common/layouts/add_edit_initiative.js +0 -6
  198. data/lib/fanforce/plugin_factory/assets/lib/common/layouts/add_source.js +0 -6
  199. data/lib/fanforce/plugin_factory/assets/lib/common/layouts/convert_pending_initiative.js +0 -6
  200. data/lib/fanforce/plugin_factory/assets/lib/common/layouts/engage.js +0 -0
  201. data/lib/fanforce/plugin_factory/assets/lib/common/layouts/new_message.js +0 -5
  202. data/lib/fanforce/plugin_factory/assets/lib/common/layouts/promotional.js +0 -1
  203. data/lib/fanforce/plugin_factory/assets/lib/common/layouts/source_details.js +0 -5
  204. data/lib/fanforce/plugin_factory/assets/lib/promotional/icon-behavior.png +0 -0
  205. data/lib/fanforce/plugin_factory/assets/lib/promotional/icon-broadcaster.png +0 -0
  206. data/lib/fanforce/plugin_factory/assets/lib/promotional/icon-data-connector.png +0 -0
  207. data/lib/fanforce/plugin_factory/assets/lib/promotional/icon-data-processor.png +0 -0
  208. data/lib/fanforce/plugin_factory/assets/lib/promotional/icon-identifier.png +0 -0
  209. data/lib/fanforce/plugin_factory/assets/lib/vendors/bootstrap-datepicker/datepicker.css +0 -7
  210. data/lib/fanforce/plugin_factory/assets/lib/vendors/bootstrap-datepicker/datepicker.js +0 -454
  211. data/lib/fanforce/plugin_factory/assets/lib/vendors/bootstrap-timepicker/timepicker.css +0 -82
  212. data/lib/fanforce/plugin_factory/assets/lib/vendors/bootstrap-timepicker/timepicker.js +0 -803
  213. data/lib/fanforce/plugin_factory/assets/lib/vendors/bootstrap/css/bootstrap.min.css +0 -7
  214. data/lib/fanforce/plugin_factory/assets/lib/vendors/bootstrap/img/glyphicons-halflings-regular.eot +0 -0
  215. data/lib/fanforce/plugin_factory/assets/lib/vendors/bootstrap/img/glyphicons-halflings-regular.svg +0 -0
  216. data/lib/fanforce/plugin_factory/assets/lib/vendors/bootstrap/img/glyphicons-halflings-regular.ttf +0 -0
  217. data/lib/fanforce/plugin_factory/assets/lib/vendors/bootstrap/img/glyphicons-halflings-regular.woff +0 -0
  218. data/lib/fanforce/plugin_factory/assets/lib/vendors/chosen/_chosen_override.scss +0 -6
  219. data/lib/fanforce/plugin_factory/assets/lib/vendors/chosen/chosen-sprite.png +0 -0
  220. data/lib/fanforce/plugin_factory/assets/lib/vendors/chosen/chosen-sprite@2x.png +0 -0
  221. data/lib/fanforce/plugin_factory/assets/lib/vendors/chosen/chosen.jquery.js +0 -1166
  222. data/lib/fanforce/plugin_factory/assets/lib/vendors/chosen/chosen.scss +0 -434
  223. data/lib/fanforce/plugin_factory/assets/lib/vendors/jquery/jquery-1.10.2.js +0 -9789
  224. data/lib/fanforce/plugin_factory/assets/lib/vendors/jquery/jquery.inputHint.js +0 -154
  225. data/lib/fanforce/plugin_factory/assets/lib/vendors/jquery/jquery.tmpl.debug.js +0 -484
  226. data/lib/fanforce/plugin_factory/assets/lib/vendors/knockout/knockout.custom-handlers.coffee +0 -155
  227. data/lib/fanforce/plugin_factory/assets/lib/vendors/knockout/knockout.debug.js +0 -4469
  228. data/lib/fanforce/plugin_factory/assets/lib/vendors/knockout/knockout.min.js +0 -96
  229. data/lib/fanforce/plugin_factory/assets/lib/vendors/select2/_select2_override.scss +0 -47
  230. data/lib/fanforce/plugin_factory/assets/lib/vendors/select2/select2-spinner.gif +0 -0
  231. data/lib/fanforce/plugin_factory/assets/lib/vendors/select2/select2.png +0 -0
  232. data/lib/fanforce/plugin_factory/assets/lib/vendors/select2/select2.scss +0 -617
  233. data/lib/fanforce/plugin_factory/assets/lib/vendors/select2/select2_modified.js +0 -3225
  234. data/lib/fanforce/plugin_factory/assets/lib/vendors/select2/select2x2.png +0 -0
  235. data/lib/fanforce/plugin_factory/assets/lib/vendors/underscore/underscore.debug.js +0 -999
  236. data/lib/fanforce/plugin_factory/config/_error_handling.rb +0 -27
  237. data/lib/fanforce/plugin_factory/config/core_config.rb +0 -92
  238. data/lib/fanforce/plugin_factory/config/helpers/assets.rb +0 -72
  239. data/lib/fanforce/plugin_factory/config/helpers/fanforce.rb +0 -19
  240. data/lib/fanforce/plugin_factory/layouts/add_edit_initiative.haml +0 -19
  241. data/lib/fanforce/plugin_factory/layouts/add_source.haml +0 -19
  242. data/lib/fanforce/plugin_factory/layouts/convert_pending_initiative.haml +0 -19
  243. data/lib/fanforce/plugin_factory/layouts/new_message.haml +0 -19
  244. data/lib/fanforce/plugin_factory/layouts/source_details.haml +0 -19
  245. data/lib/fanforce/plugin_factory/public/robots.txt +0 -2
  246. data/lib/fanforce/plugin_factory/routes.rb +0 -48
  247. data/lib/fanforce/plugin_factory/routes_behavior.rb +0 -34
  248. data/lib/fanforce/plugin_factory/routes_broadcaster.rb +0 -9
  249. data/lib/fanforce/plugin_factory/routes_data_connector.rb +0 -21
  250. data/lib/fanforce/plugin_factory/routes_identifier.rb +0 -3
  251. data/lib/fanforce/plugin_factory/views/add_initiative.haml +0 -1
  252. data/lib/fanforce/plugin_factory/views/add_source.haml +0 -1
  253. data/lib/fanforce/plugin_factory/views/close_popup.haml +0 -8
  254. data/lib/fanforce/plugin_factory/views/convert_pending_initiative.haml +0 -1
  255. data/lib/fanforce/plugin_factory/views/edit_initiative.haml +0 -1
  256. data/lib/fanforce/plugin_factory/views/engage.haml +0 -1
  257. data/lib/fanforce/plugin_factory/views/new_message.haml +0 -1
  258. data/lib/fanforce/plugin_factory/views/source_details.haml +0 -1
  259. data/lib/fanforce/plugin_factory/views/widget_tmpls.haml +0 -1
  260. data/lib/fanforce/plugin_factory_workers.rb +0 -2
@@ -0,0 +1,77 @@
1
+ class Fanforce::PluginFactory::CLI::Uranium
2
+ include Fanforce::PluginFactory::CLI::Utils
3
+
4
+ attr_reader :plugin
5
+
6
+ def initialize(plugin)
7
+ @plugin = plugin
8
+ end
9
+
10
+ def uranium
11
+ config[:uranium] || (error 'Uranium credentials were not found in config file')
12
+ end
13
+
14
+ def create
15
+ RestClient.get("http://#{Fanforce.uranium_domain}/plugins/#{plugin._id}") do |response|
16
+ if response.code == 404
17
+ setup(false)
18
+ elsif response.code < 300
19
+ confirm "\nThis plugin (#{plugin._id}) already exists in uranium. Proceeding will overwrite it.\n"+
20
+ 'OVERWRITE EXISTING URANIUM VERSION?', true
21
+ setup(true)
22
+ else
23
+ raise response.to_s
24
+ end
25
+ end
26
+ end
27
+
28
+ def setup(exists_in_uranium=true)
29
+ attrs = {
30
+ :_puid => plugin._id,
31
+ :developer_email => config[:uranium][:developer_email],
32
+ :developer_password => config[:uranium][:developer_password],
33
+ :update_if_exists => exists_in_uranium
34
+ }
35
+ url = "http://#{Fanforce.uranium_domain}/plugins"
36
+ RestClient.post(url, attrs) do |response|
37
+ raise "#{response}: curl -X POST -d '#{attrs.to_param}' #{url}" if response.code >= 300
38
+ response = MultiJson.load(response.body, symbolize_keys: true)
39
+ exists_in_uranium = true if response[:updated]
40
+ end
41
+
42
+ if exists_in_uranium
43
+ log "#{'Updated '.format(:green,:bold)}" + "#{plugin._id} in uranium"
44
+ else
45
+ log "#{'Added '.format(:green,:bold)}" + "#{plugin._id} to uranium"
46
+ end
47
+ end
48
+
49
+ def destroy
50
+ if plugin.config[:awaiting_uranium_setup]
51
+ return log "#{'Skipped '.format(:green,:bold)}" + 'since config.json was still awaiting uranium setup'
52
+ elsif plugin.config.size == 0
53
+ return log "#{'Missing '.format(:green,:bold)}" + "config.json so assuming #{plugin._id} was removed from uranium"
54
+ end
55
+
56
+ error 'Uranium credentials were not found in config file' if !config[:uranium]
57
+ error 'Your plugin\'s config.json is missing a _iuid field (delete config.json to skip)' if !plugin.config[:_iuid]
58
+
59
+ attrs = {
60
+ :developer_email => config[:uranium][:developer_email],
61
+ :developer_password => config[:uranium][:developer_password]
62
+ }
63
+
64
+ url = "http://#{Fanforce.uranium_domain}/plugins/#{plugin.config[:_iuid]}"
65
+ RestClient.delete(url, params: attrs) do |response|
66
+ if response.code == 404
67
+ return log "#{'Already Removed '.format(:green,:bold)}" + "#{plugin._id} from uranium"
68
+ elsif response.code >= 300
69
+ log "curl -X DELETE -d '#{attrs.to_param}' #{url}"
70
+ raise response.to_s
71
+ end
72
+ end
73
+
74
+ log "#{'Removed '.format(:green,:bold)}" + "#{plugin._id} from uranium"
75
+ end
76
+
77
+ end
@@ -0,0 +1,57 @@
1
+ require 'pty'
2
+ require 'fanforce/cli'
3
+
4
+ module Fanforce::PluginFactory::CLI::Utils
5
+ extend self
6
+ def self.included(base) base.extend(self) end
7
+
8
+ include Fanforce::CLI::Utils
9
+
10
+ @@config = nil
11
+
12
+ def console_command(command, print_now=false)
13
+ output = []
14
+ PTY.spawn(command) do |stdin, stdout, pid|
15
+ stdin.each { |line| output << line; print line if print_now }
16
+ end
17
+ output.join("\n")
18
+ end
19
+
20
+ def silence_warnings
21
+ require 'stringio'
22
+ old_stderr = $stderr
23
+ $stderr = StringIO.new
24
+ yield
25
+ ensure
26
+ $stderr = old_stderr
27
+ end
28
+
29
+ def config_filepath
30
+ if Fanforce::CLI::TYPE == :directory_of_plugins
31
+ "#{Fanforce::CLI::DIR}/.fanforce-plugin-factory"
32
+ elsif Fanforce::CLI::TYPE == :single_plugin
33
+ "#{Fanforce::CLI::DIR}/../.fanforce-plugin-factory"
34
+ end
35
+ end
36
+
37
+ def config_relativepath
38
+ if Fanforce::CLI::TYPE == :directory_of_plugins
39
+ '.fanforce-plugin-factory'
40
+ elsif Fanforce::CLI::TYPE == :single_plugin
41
+ '../.fanforce-plugin-factory'
42
+ end
43
+ end
44
+
45
+ def config
46
+ return @@config if @@config
47
+ require 'yaml'
48
+ error "The required config file was not found: #{config_relativepath}" if !File.exists?(config_filepath)
49
+ @@config = format_config(YAML.load_file(config_filepath))
50
+ end
51
+
52
+ def format_config(hash)
53
+ hash.values.select{|v| v.is_a? Hash}.each{|h| format_config(h)}
54
+ hash.symbolize_keys!
55
+ end
56
+
57
+ end
@@ -0,0 +1,9 @@
1
+ class Fanforce::PluginFactory::CLI::Scripts
2
+ include Fanforce::PluginFactory::CLI::Utils
3
+
4
+ Fanforce::CLI.register self, :config, [nil, 'Display your Fanforce CLI config in the current directory']
5
+
6
+ def config(*args)
7
+ end
8
+
9
+ end
@@ -0,0 +1,64 @@
1
+ class Fanforce::PluginFactory::CLI::Scripts
2
+ include Fanforce::PluginFactory::CLI::Utils
3
+
4
+ require_relative '../lib/scaffolding'
5
+ require_relative '../lib/bundler'
6
+ require_relative '../lib/pow'
7
+ require_relative '../lib/git'
8
+ require_relative '../lib/bitbucket'
9
+ require_relative '../lib/env'
10
+ require_relative '../lib/uranium'
11
+
12
+ ######################################################################################################################
13
+
14
+ def create(plugin_id)
15
+ plugin_id || error('You must supply a valid PLUGIN_ID', :create)
16
+ plugin_dir = "#{Fanforce::CLI::DIR}/#{plugin_id}"
17
+
18
+ if File.exists?("#{plugin_dir}/config.ru")
19
+ error "#{plugin_id} already exists. You should run: " + "fanforce update #{plugin_id}".format(:green)
20
+ end
21
+
22
+ log divider '+-----------------------------------------------------------------------------------------------------'
23
+ log 'CREATING FILES...'
24
+ Dir.mkdir(plugin_dir) if !File.directory?(plugin_dir)
25
+ Dir.chdir(plugin_dir)
26
+ log "#{'Created'.format(:bold, :green)} #{plugin_id}/"
27
+ plugin = Fanforce::CLI::Plugin.new(plugin_dir)
28
+ Fanforce::PluginFactory::CLI::Scaffolding.new(plugin).setup
29
+
30
+ log divider '+-----------------------------------------------------------------------------------------------------'
31
+ log 'INSTALLING BUNDLER...'
32
+ Fanforce::PluginFactory::CLI::Bundler.new(plugin).setup
33
+
34
+ log divider '+-----------------------------------------------------------------------------------------------------'
35
+ log 'CREATING POW DOMAINS...'
36
+ Fanforce::PluginFactory::CLI::Pow.new(plugin).setup
37
+
38
+ log divider '+-----------------------------------------------------------------------------------------------------'
39
+ log 'CREATING LOCAL GIT REPOSITORY...'
40
+ Fanforce::PluginFactory::CLI::Git.new(plugin).setup
41
+
42
+ log divider '+-----------------------------------------------------------------------------------------------------'
43
+ log 'CREATING BITBUCKET REPOSITORY...'
44
+ Fanforce::PluginFactory::CLI::Bitbucket.new(plugin).create
45
+
46
+ log divider '+-----------------------------------------------------------------------------------------------------'
47
+ log 'CREATING ENV VARIABLES...'
48
+ Fanforce::PluginFactory::CLI::Env.new(plugin).setup(:development)
49
+
50
+ log divider '+-----------------------------------------------------------------------------------------------------'
51
+ log 'RUNNING TOUCH TMP/RESTART.TXT...'
52
+ `touch tmp/restart.txt`
53
+ log 'Finished'.format(:green,:bold) + ' restarting'
54
+
55
+ log divider '+---------------------------------------------------------------------------------------------------'
56
+ log 'SETTING UP URANIUM...'
57
+ Fanforce::PluginFactory::CLI::Uranium.new(plugin).create
58
+
59
+ log divider '+-----------------------------------------------------------------------------------------------------'
60
+ log 'SUCCESS!'.format(:bold,:green)
61
+ log divider '----------------------------------------------------------------------------------------------------++'
62
+ end
63
+
64
+ end
@@ -0,0 +1,61 @@
1
+ class Fanforce::PluginFactory::CLI::Scripts
2
+ include Fanforce::PluginFactory::CLI::Utils
3
+
4
+ require_relative '../lib/bitbucket'
5
+ require_relative '../lib/uranium'
6
+ require_relative '../lib/pow'
7
+
8
+ ######################################################################################################################
9
+
10
+ def destroy(plugin_id)
11
+ plugin_id || error('You must supply a valid PLUGIN_ID', :delete)
12
+ plugin_dir = "#{Fanforce::CLI::DIR}/#{plugin_id}"
13
+
14
+ error "Directory was not found for plugin: #{plugin_dir}" if !File.directory?("#{plugin_dir}")
15
+ error 'Bitbucket credentials were not found in config file' if !config[:bitbucket]
16
+ plugin = Fanforce::CLI::Plugin.new(plugin_dir)
17
+
18
+ log divider '+-----'
19
+ confirm("You are about to delete both local and remote files for #{plugin_id}.\nARE YOU SURE?", true)
20
+
21
+ # puts "\n---------------------------------------------------------------------------------------------------------------"
22
+ # puts 'DELETING HEROKU APPS...'
23
+ # [:staging,:production].each do |environment|
24
+ # next if $Config[:heroku].blank? or $Config[:heroku][environment].blank?
25
+ # heroku = auth_heroku(environment)
26
+ # heroku_app_name = get_heroku_app_name(plugin, environment)
27
+ # begin
28
+ # heroku.delete_app(heroku_app_name)
29
+ # puts "#{'Removed '.format(:green,:bold)}" + " #{heroku_app_name}"
30
+ # rescue Exception => e
31
+ # puts "#{'Already Removed'.format(:green,:bold)}" + " #{heroku_app_name}"
32
+ # end
33
+ # end
34
+
35
+ log divider '+-----------------------------------------------------------------------------------------------------'
36
+ log 'REMOVING BITBUCKET REPOSITORY...'
37
+ Fanforce::PluginFactory::CLI::Bitbucket.new(plugin).destroy
38
+
39
+ log divider '+-----------------------------------------------------------------------------------------------------'
40
+ log 'REMOVING URANIUM RECORD...'
41
+ Fanforce::PluginFactory::CLI::Uranium.new(plugin).destroy
42
+
43
+ log divider '+-----------------------------------------------------------------------------------------------------'
44
+ log 'REMOVING POW DOMAINS...'
45
+ Fanforce::PluginFactory::CLI::Pow.new(plugin).destroy
46
+
47
+ log divider '+-----------------------------------------------------------------------------------------------------'
48
+ log 'REMOVING FILES...'
49
+ if File.directory?(plugin_dir)
50
+ FileUtils.rm_rf(plugin_dir)
51
+ log "#{'Removed'.format(:bold, :green)} #{plugin_dir}/"
52
+ else
53
+ log "#{'Already Removed'.format(:bold, :green)} #{plugin_dir}/"
54
+ end
55
+
56
+ log divider '+-----------------------------------------------------------------------------------------------------'
57
+ log 'DONE! (note: iron workers were not deleted)'
58
+ log divider '+-----------------------------------------------------------------------------------------------------'
59
+ end
60
+
61
+ end
@@ -0,0 +1,156 @@
1
+ class Fanforce::PluginFactory::CLI::Scripts
2
+ include Fanforce::PluginFactory::CLI::Utils
3
+
4
+ require_relative '../lib/git'
5
+ require_relative '../lib/scaffolding'
6
+
7
+ ######################################################################################################################
8
+
9
+ def diff(type, detail_level=nil)
10
+ type = type.to_sym
11
+ detail_level = (detail_level||'detailed').to_sym if type == :files
12
+
13
+ if [:all,:files].include?(type)
14
+ if Fanforce::CLI::TYPE == :directory_of_plugins
15
+ if detail_level == :detailed
16
+ directory_file_details(detail_level)
17
+ else
18
+ directory_file_overview
19
+ end
20
+ elsif Fanforce::CLI::TYPE == :single_plugin
21
+ plugin = Fanforce::CLI::Plugin.load(Fanforce::CLI::DIR)
22
+ plugin_file_details(plugin, detail_level)
23
+ end
24
+ end
25
+
26
+ if [:all,:git].include?(type)
27
+ if Fanforce::CLI::TYPE == :directory_of_plugins
28
+ git_overview
29
+ elsif Fanforce::CLI::TYPE == :single_plugin
30
+ git_details
31
+ end
32
+ end
33
+ end
34
+
35
+ def directory_file_overview
36
+ log ''
37
+ log sprintf('%-12s %-50s %85s', 'FILE STATUS', 'PLUGIN NAME', 'STATS OVERVIEW').format(:bold)
38
+ log divider '======================================================================================================'
39
+ Fanforce::CLI::Plugins.each do |plugin, current_count, total|
40
+ missing = 0
41
+ diverged = 0
42
+ previous = 0
43
+ corrupted = 0
44
+ is_synced = true
45
+ Fanforce::PluginFactory::CLI::Scaffolding.new(plugin).metadata.each do |filepath, change|
46
+ if change[:status] == :missing
47
+ is_synced = false
48
+ next missing += 1
49
+ elsif change[:status] == :diverged
50
+ is_synced = false
51
+ next diverged += 1
52
+ elsif change[:status] == :previous
53
+ is_synced = false
54
+ next previous += 1
55
+ elsif change[:status] == :corrupted
56
+ is_synced = false
57
+ next corrupted += 1
58
+ end
59
+ end
60
+ changed_stats = [
61
+ "#{missing} files missing",
62
+ "#{previous} files previous",
63
+ "#{diverged} files diverged",
64
+ "#{corrupted} files corrupted"
65
+ ]
66
+ puts sprintf("%s%-12s#{fmt_end} %-41s %23s %23s %23s %23s",
67
+ fmt_start(is_synced ? :green : :red),
68
+ (is_synced ? 'Synced' : 'Changed'),
69
+ plugin.name,
70
+ *changed_stats
71
+ )
72
+ log divider '---------------------------------------------------------------------------------------------------+'
73
+ end
74
+ puts ''
75
+ end
76
+
77
+ def directory_file_details(detail_level)
78
+ Fanforce::CLI::Plugins.each do |plugin, current_count, total|
79
+ log divider '+==================================================================================================='
80
+ has_files_to_update = false
81
+ Fanforce::PluginFactory::CLI::Scaffolding.new(plugin).metadata.each do |filepath, metadata|
82
+ next if ![:previous,:diverged,:missing,:corrupted].include?(metadata[:status])
83
+ has_files_to_update = true
84
+ filepath = filepath.gsub(Fanforce::CLI::DIR, '')
85
+ log sprintf "%s%-8s#{fmt_end} %-95s %22s %22s\n",
86
+ fmt_start([:previous,:diverged,:missing,:corrupted].include?(metadata[:status]) ? :red : :green),
87
+ metadata[:status].to_s.titleize,
88
+ filepath,
89
+ ("#{metadata[:insertions]} insertions(+)" if metadata[:insertions].to_i > 0),
90
+ ("#{metadata[:deletions]} deletions(-)" if metadata[:insertions].to_i > 0)
91
+ if detail_level == :detailed and metadata[:diff]
92
+ lines = ''
93
+ metadata[:diff].lines do |line|
94
+ line = line.format(:red) if line[0] == '-'
95
+ line = line.format(:green) if line[0] == '+'
96
+ line = (' '*3) + line
97
+ lines += line
98
+ end
99
+ log divider ' -----------------------------------------------------------------------------------------------'
100
+ log ' THE FOLLOWING CHANGES WILL OCCUR DURING UPDATE:'
101
+ log ' -----------------------------------------------'
102
+ log "\n" + lines + "\n"
103
+ end
104
+ log divider '---------------------------------------------------------------------------------------------------+'
105
+ end
106
+ log 'NO FILES TO UPDATE' if !has_files_to_update
107
+ end
108
+ end
109
+
110
+ def plugin_file_details(plugin, detail_level)
111
+ log ''
112
+ log sprintf "%-30s %119s\n", "FILES (#{plugin.dir_name})", 'changes needed during update'
113
+ log divider '======================================================================================================'
114
+ Fanforce::PluginFactory::CLI::Scaffolding.new(plugin).metadata.each do |filepath, metadata|
115
+ filepath = filepath.gsub(Fanforce::CLI::DIR, '')
116
+ log sprintf "%s%-8s#{fmt_end} %-95s %22s %22s\n",
117
+ fmt_start([:previous,:diverged,:missing,:corrupted].include?(metadata[:status]) ? :red : :green),
118
+ metadata[:status].to_s.titleize,
119
+ filepath,
120
+ ("#{metadata[:insertions]} insertions(+)" if metadata[:insertions].to_i > 0),
121
+ ("#{metadata[:deletions]} deletions(-)" if metadata[:insertions].to_i > 0)
122
+ if detail_level == :detailed and metadata[:diff]
123
+ lines = ''
124
+ metadata[:diff].lines do |line|
125
+ line = line.format(:red) if line[0] == '-'
126
+ line = line.format(:green) if line[0] == '+'
127
+ line = (' '*3) + line
128
+ lines += line
129
+ end
130
+ log divider ' -----------------------------------------------------------------------------------------------'
131
+ log ' THE FOLLOWING CHANGES WILL OCCUR DURING UPDATE:'
132
+ log ' -----------------------------------------------'
133
+ log "\n" + lines + "\n"
134
+ end
135
+ log divider '---------------------------------------------------------------------------------------------------+'
136
+ end
137
+ puts ''
138
+ end
139
+
140
+ def git_overview
141
+ plugin_column_width = Fanforce::CLI::Plugins.dir_names.inject(0){|l,d| d.length>l ? d.length : l}
142
+ log Fanforce::PluginFactory::CLI::Git.status_table_header(plugin_column_width)
143
+ log divider '======================================================================================================'
144
+ Fanforce::CLI::Plugins.each do |plugin, current_count, total|
145
+ log Fanforce::PluginFactory::CLI::Git.new(plugin).status_row(plugin_column_width)
146
+ log divider '---------------------------------------------------------------------------------------------------+'
147
+ end
148
+ log ''
149
+ end
150
+
151
+ def git_details
152
+ exec 'git status'
153
+ log ''
154
+ end
155
+
156
+ end
@@ -0,0 +1,88 @@
1
+ class Fanforce::PluginFactory::CLI::Scripts
2
+ include Fanforce::PluginFactory::CLI::Utils
3
+
4
+ require_relative '../lib/env'
5
+ require_relative '../lib/iron'
6
+ require_relative '../lib/heroku'
7
+
8
+ ######################################################################################################################
9
+
10
+ def push(environment, command)
11
+ environment = environment.to_sym
12
+ command = command.to_sym
13
+ plugin = Fanforce::CLI::Plugin.load(Fanforce::CLI::DIR)
14
+
15
+ if Fanforce::CLI::TYPE == :directory_of_plugins
16
+ confirm("\nYou are about to push iron works for #{Fanforce::CLI::Plugins.total_count} plugins in this directory.\n"+
17
+ 'ARE YOU SURE?', true)
18
+ Fanforce::CLI::Plugins.each do |plugin, processed_count, total_count|
19
+ log divider '+-----------------------------------------------------------------------------------------------'
20
+ log "#{'PLUGIN'.format(:bold)} - #{plugin._id.upcase.gsub('-',' ').format(:bold)} (#{processed_count} of #{total_count})... "
21
+ push_plugin(plugin, environment, command)
22
+ end
23
+ elsif Fanforce::CLI::TYPE == :single_plugin
24
+ log divider '+---------------------------------------------------------------------------------------------------'
25
+ plugin = Fanforce::CLI::Plugin.load(Fanforce::CLI::DIR)
26
+ push_plugin(plugin, environment, command)
27
+ end
28
+
29
+ log divider '----------------------------------------------------------------------------------------------------++'
30
+ end
31
+
32
+ def push_plugin(plugin, environment, command)
33
+ if command.to_s.include?('.worker')
34
+ return push_plugin_worker(plugin, environment, command.to_s)
35
+ end
36
+
37
+ if [:all,:heroku].include?(command) and environment != :development
38
+ heroku = Fanforce::PluginFactory::CLI::Heroku.new(plugin)
39
+ heroku.ensure_heroku_app_exists(environment)
40
+ end
41
+
42
+ if [:all,:iron].include?(command)
43
+ push_plugin_workers(plugin, environment)
44
+ end
45
+
46
+ if [:all,:env].include?(command)
47
+ push_env(plugin, environment)
48
+ end
49
+
50
+ if [:all,:heroku].include?(command) and environment != :development
51
+ push_heroku(heroku, plugin, environment)
52
+ end
53
+ end
54
+
55
+ def push_plugin_worker(plugin, environment, filename)
56
+ Dir.chdir(plugin.dir) do
57
+ Fanforce::PluginFactory::CLI::Iron.new(plugin).upload(environment, filename)
58
+ end
59
+ end
60
+
61
+ def push_plugin_workers(plugin, environment)
62
+ Dir.chdir(plugin.dir) do
63
+ Fanforce::PluginFactory::CLI::Iron.new(plugin).upload(environment)
64
+ end
65
+ end
66
+
67
+ def push_env(plugin, environment)
68
+ Fanforce::PluginFactory::CLI::Env.new(plugin).setup(environment)
69
+ end
70
+
71
+ def push_heroku(heroku, plugin, environment)
72
+ case environment
73
+ when :staging then env = :stg
74
+ when :production then env = :prd
75
+ end
76
+ remote_name = "#{env}-heroku"
77
+
78
+ heroku.setup(environment) if !(`git remote`).split(/\r?\n/).include?(remote_name)
79
+
80
+ vars = Fanforce::PluginFactory::CLI::Env.new(plugin).vars(environment)
81
+ heroku.update_config(environment, vars)
82
+ log 'Updated ENV'.format(:green,:bold) + " on Heroku #{environment.to_s.titleize} (#{vars.size} variables)..."
83
+
84
+ puts "\n#{'Pushing '.format(:green,:bold)}" + "latest commit to Heroku #{environment.to_s.titleize} (#{remote_name})..."
85
+ console_command("git push #{remote_name} master", true)
86
+ end
87
+
88
+ end