cloudrider 0.3.0 → 0.3.20

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 (227) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +11 -1
  3. data/cloudrider.gemspec +1 -0
  4. data/generica/.gitignore +18 -0
  5. data/generica/Gemfile +8 -1
  6. data/generica/Gemfile.lock +3 -0
  7. data/generica/app/assets/javascripts/apiv1.js.ls +6 -1
  8. data/generica/app/assets/javascripts/components/offers-summary.js.em +2 -0
  9. data/generica/app/assets/javascripts/components/picture-chunk.js.em +17 -0
  10. data/generica/app/assets/javascripts/components/pictures-group.js.em +21 -0
  11. data/generica/app/assets/javascripts/components/search-and-filter.js.em +4 -0
  12. data/generica/app/assets/javascripts/components/site-nav.js.em +5 -1
  13. data/generica/app/assets/javascripts/components/taggable-field.js.em +28 -0
  14. data/generica/app/assets/javascripts/components/tree/taxon-li.js.em +6 -2
  15. data/generica/app/assets/javascripts/controllers/index_controller.js.em +19 -2
  16. data/generica/app/assets/javascripts/controllers/modals/login_controller.js.em +23 -9
  17. data/generica/app/assets/javascripts/controllers/modals/register_controller.js.em +24 -0
  18. data/generica/app/assets/javascripts/controllers/products/index_controller.js.em +23 -13
  19. data/generica/app/assets/javascripts/controllers/products/product/offers/new_controller.js.em +17 -0
  20. data/generica/app/assets/javascripts/controllers/users/offers/index_controller.js.em +10 -0
  21. data/generica/app/assets/javascripts/controllers/users/product/edit_controller.js.em +31 -0
  22. data/generica/app/assets/javascripts/controllers/users/products/index_controller.js.em +8 -0
  23. data/generica/app/assets/javascripts/controllers/users/products/new_controller.js.em +22 -0
  24. data/generica/app/assets/javascripts/controllers/users/products/slice_controller.js.em +4 -0
  25. data/generica/app/assets/javascripts/helpers/filte_previewer.js.ls +21 -0
  26. data/generica/app/assets/javascripts/helpers/listing_picture.js.em +17 -0
  27. data/generica/app/assets/javascripts/models/offer.js.em +9 -8
  28. data/generica/app/assets/javascripts/models/user.js.em +12 -0
  29. data/generica/app/assets/javascripts/models/users/product.js.em +12 -0
  30. data/generica/app/assets/javascripts/routes/application_route.js.em +10 -2
  31. data/generica/app/assets/javascripts/routes/products/index_route.js.em +23 -2
  32. data/generica/app/assets/javascripts/routes/products/product/offers/new_route.js.em +18 -0
  33. data/generica/app/assets/javascripts/routes/users/offers/index_route.js.em +1 -0
  34. data/generica/app/assets/javascripts/routes/users/product_route.js.em +3 -0
  35. data/generica/app/assets/javascripts/routes/users/products/index_route.js.em +3 -0
  36. data/generica/app/assets/javascripts/routes/users/products/new_route.js.em +3 -0
  37. data/generica/app/assets/javascripts/templates/admin/product/edit.emblem +2 -0
  38. data/generica/app/assets/javascripts/templates/admin/products/_form-core.emblem +44 -0
  39. data/generica/app/assets/javascripts/templates/admin/products/new.emblem +4 -42
  40. data/generica/app/assets/javascripts/templates/components/offers-summary.emblem +9 -0
  41. data/generica/app/assets/javascripts/templates/components/picture-chunk.emblem +9 -0
  42. data/generica/app/assets/javascripts/templates/components/pictures-group.emblem +6 -0
  43. data/generica/app/assets/javascripts/templates/components/search-and-filter.emblem +5 -1
  44. data/generica/app/assets/javascripts/templates/components/taggable-field.emblem +1 -0
  45. data/generica/app/assets/javascripts/templates/modals/register.emblem +57 -0
  46. data/generica/app/assets/javascripts/templates/products/product/offers/_anonymous-form.emblem +11 -0
  47. data/generica/app/assets/javascripts/templates/products/product/offers/_offer-form.emblem +55 -0
  48. data/generica/app/assets/javascripts/templates/products/product/offers/new.emblem +37 -0
  49. data/generica/app/assets/javascripts/templates/products/product/show.emblem +26 -1
  50. data/generica/app/assets/javascripts/templates/users.emblem +24 -0
  51. data/generica/app/assets/javascripts/templates/users/index.emblem +3 -0
  52. data/generica/app/assets/javascripts/templates/users/offers/index.emblem +25 -0
  53. data/generica/app/assets/javascripts/templates/users/offers/slice.emblem +31 -0
  54. data/generica/app/assets/javascripts/templates/users/product/edit.emblem +82 -0
  55. data/generica/app/assets/javascripts/templates/users/products/index.emblem +22 -0
  56. data/generica/app/assets/javascripts/templates/users/products/new.emblem +28 -0
  57. data/generica/app/assets/javascripts/templates/users/products/slice.emblem +27 -0
  58. data/generica/app/assets/stylesheets/apiv1/_application.css.scss +4 -0
  59. data/generica/app/assets/stylesheets/apiv1/components/_offers-summary.css.scss +20 -0
  60. data/generica/app/assets/stylesheets/apiv1/components/_pictures-group.css.scss +32 -0
  61. data/generica/app/assets/stylesheets/apiv1/components/_taggable-field.css.scss +32 -0
  62. data/generica/app/assets/stylesheets/apiv1/products/product/offers/_new.css.scss +8 -0
  63. data/generica/app/controllers/admin/base_controller.rb +1 -1
  64. data/generica/app/controllers/admin/sessions/destroy_controller.rb +16 -0
  65. data/generica/app/controllers/apiv1/offers/create_controller.rb +30 -0
  66. data/generica/app/controllers/apiv1/offers/index_controller.rb +22 -0
  67. data/generica/app/controllers/apiv1/offers/show_controller.rb +12 -0
  68. data/generica/app/controllers/apiv1/products/destroy_controller.rb +6 -0
  69. data/generica/app/controllers/apiv1/products/index_controller.rb +8 -2
  70. data/generica/app/controllers/apiv1/products/show_controller.rb +7 -3
  71. data/generica/app/controllers/apiv1/taxons/index_controller.rb +5 -1
  72. data/generica/app/controllers/apiv1/users/create_controller.rb +17 -0
  73. data/generica/app/controllers/apiv1/users/show_controller.rb +12 -0
  74. data/generica/app/controllers/apiv1/users_controller.rb +9 -0
  75. data/generica/app/controllers/application_controller.rb +3 -0
  76. data/generica/app/controllers/users/offers/create_controller.rb +26 -0
  77. data/generica/app/controllers/users/products/create_controller.rb +26 -0
  78. data/generica/app/controllers/users/products/update_controller.rb +35 -0
  79. data/generica/app/mailers/apiv1/aggregate_mailer.rb +13 -0
  80. data/generica/app/mailers/apiv1/aggregate_mailer/summary_context.rb +121 -0
  81. data/generica/app/mailers/apiv1/notifications_mailer.rb +19 -0
  82. data/generica/app/mailers/apiv1/notifications_mailer/new_offer_context.rb +53 -0
  83. data/generica/app/models/admin/user.rb +43 -2
  84. data/generica/app/models/apiv1/attachment.rb +2 -0
  85. data/generica/app/models/apiv1/email_object.rb +35 -0
  86. data/generica/app/models/apiv1/email_request.rb +107 -0
  87. data/generica/app/models/apiv1/offer_message.rb +53 -0
  88. data/generica/app/models/apiv1/offer_postboy.rb +33 -0
  89. data/generica/app/models/apiv1/picture.rb +2 -0
  90. data/generica/app/models/apiv1/product.rb +28 -6
  91. data/generica/app/models/apiv1/products/offer_message_factory.rb +13 -0
  92. data/generica/app/models/apiv1/products_machine.rb +8 -2
  93. data/generica/app/models/apiv1/taxon.rb +1 -1
  94. data/generica/app/models/apiv1/users/product_factory.rb +22 -0
  95. data/generica/app/models/apiv1/users/product_relationship.rb +19 -0
  96. data/generica/app/models/users/products/offer_factory.rb +40 -0
  97. data/generica/app/varissets/javascripts/templates/application.emblem.erb +2 -2
  98. data/generica/app/varissets/javascripts/templates/components/offers-overview.emblem.erb +1 -0
  99. data/generica/app/varissets/javascripts/templates/components/search-and-filter.emblem.erb +33 -0
  100. data/generica/app/varissets/javascripts/templates/components/site-nav.emblem.erb +8 -0
  101. data/generica/app/varissets/javascripts/templates/components/taggable-field.emblem.erb +11 -0
  102. data/generica/app/varissets/javascripts/templates/modals/login.emblem.erb +36 -0
  103. data/generica/app/varissets/javascripts/templates/products.emblem.erb +4 -0
  104. data/generica/app/varissets/javascripts/templates/products/index.emblem.erb +17 -0
  105. data/generica/app/varissets/javascripts/templates/products/product/offers/_anonymous-form.emblem.erb +11 -0
  106. data/generica/app/varissets/javascripts/templates/products/product/offers/_offer-form.emblem.erb +55 -0
  107. data/generica/app/varissets/javascripts/templates/products/product/offers/new.emblem.erb +37 -0
  108. data/generica/app/varissets/javascripts/templates/products/product/show.emblem.erb +108 -0
  109. data/generica/app/varissets/stylesheets/apiv1/components/_offers-overview.css.scss.erb +3 -0
  110. data/generica/app/varissets/stylesheets/apiv1/components/_offers_overview.css.scss.erb +3 -0
  111. data/generica/app/varissets/stylesheets/apiv1/components/_search-and-filter.css.scss.erb +15 -0
  112. data/generica/app/varissets/stylesheets/apiv1/components/_site-footer.css.scss.erb +23 -0
  113. data/generica/app/varissets/stylesheets/apiv1/components/_taggable-field.css.scss.erb +32 -0
  114. data/generica/app/views/apiv1/home/index.html.haml +3 -1
  115. data/generica/app/views/apiv1/layouts/application.html.haml +37 -2
  116. data/generica/config/{database.yml.erb → database.yml.str} +3 -3
  117. data/generica/config/email.yml +11 -0
  118. data/generica/config/email_slave.god +9 -0
  119. data/generica/config/initializers/premailer.rb +1 -0
  120. data/generica/config/initializers/squash.rb.erb +3 -0
  121. data/generica/config/nginx.conf.erb +4 -4
  122. data/generica/config/routes.rb +14 -0
  123. data/generica/db/migrate/20141114213427_add_user_rank_to_admin_users.rb +9 -0
  124. data/generica/db/migrate/20141114225019_create_apiv1_users_products.rb +9 -0
  125. data/generica/db/migrate/20141116053522_create_apiv1_offer_messages.rb +16 -0
  126. data/generica/db/migrate/20141116235011_add_deleted_at_to_apiv1_products.rb +5 -0
  127. data/generica/db/migrate/20141116235209_add_deleted_at_to_apiv1_offer_messages.rb +5 -0
  128. data/generica/db/migrate/20141116235651_add_deleted_at_to_apiv1_pictures.rb +5 -0
  129. data/generica/db/migrate/20141116235808_add_deleted_at_to_apiv1_attachments.rb +5 -0
  130. data/generica/db/migrate/20141127230304_create_apiv1_email_requests.rb +16 -0
  131. data/generica/db/migrate/20141127230455_create_apiv1_email_objects.rb +11 -0
  132. data/generica/lib/generica/assets_unretardifier.rb +32 -0
  133. data/generica/lib/generica/email_slave.rb +92 -0
  134. data/generica/lib/tasks/email_slave.rake +11 -0
  135. data/generica/lib/tasks/production.rake +1 -1
  136. data/generica/public/tests/bermese.jpg +0 -0
  137. data/generica/public/tests/chow.jpg +0 -0
  138. data/generica/public/tests/malamute.jpg +0 -0
  139. data/generica/public/tests/malamute2.JPG +0 -0
  140. data/generica/spec/controllers/apiv1/users/create_controller_spec.rb +17 -0
  141. data/generica/spec/controllers/users/products/create_controller_spec.rb +31 -0
  142. data/generica/spec/mailers/apiv1/aggregate_mailer_spec.rb +29 -0
  143. data/generica/spec/models/apiv1/email_request_spec.rb +4 -0
  144. data/generica/spec/models/apiv1/offer_postboy_spec.rb +22 -0
  145. data/generica/spec/models/apiv1/product_spec.rb +1 -0
  146. data/generica/spec/models/apiv1/products/offer_message_factory_spec.rb +37 -0
  147. data/generica/spec/models/apiv1/products_machine_spec.rb +77 -0
  148. data/generica/spec/models/apiv1/users/product_factory_spec.rb +47 -0
  149. data/generica/spec/models/users/products/offer_factory_spec.rb +38 -0
  150. data/generica/test/mailers/.keep +0 -0
  151. data/generica/test/mailers/previews/apiv1/aggregate_preview.rb +6 -0
  152. data/generica/test/mailers/previews/apiv1/notifications_preview.rb +5 -0
  153. data/lib/cloudrider.rb +1 -1
  154. data/lib/cloudrider/apiv1/base.rb +2 -2
  155. data/lib/cloudrider/apiv1/login_modal_emblem.rb +25 -0
  156. data/lib/cloudrider/apiv1/offers_anonymous_form_partial_emblem.rb +12 -0
  157. data/lib/cloudrider/apiv1/offers_new_emblem.rb +15 -0
  158. data/lib/cloudrider/apiv1/offers_overview_component.rb +8 -0
  159. data/lib/cloudrider/apiv1/offers_overview_sass.rb +8 -0
  160. data/lib/cloudrider/apiv1/product_show_emblem.rb +31 -0
  161. data/lib/cloudrider/apiv1/products_emblem.rb +11 -0
  162. data/lib/cloudrider/apiv1/products_index_emblem.rb +14 -0
  163. data/lib/cloudrider/apiv1/search_and_filter_component.rb +11 -0
  164. data/lib/cloudrider/apiv1/search_and_filter_sass.rb +11 -0
  165. data/lib/cloudrider/apiv1/site_footer_component.rb +7 -7
  166. data/lib/cloudrider/apiv1/site_footer_sass.rb +9 -0
  167. data/lib/cloudrider/application_commander.rb +46 -34
  168. data/lib/cloudrider/backend_commander.rb +15 -9
  169. data/lib/cloudrider/protofile.rb +18 -2
  170. data/lib/cloudrider/protosite.example.json +26 -0
  171. data/lib/cloudrider/protosite.rb +66 -0
  172. data/lib/cloudrider/serverside/base.rb +2 -2
  173. data/lib/cloudrider/serverside/database_yaml.rb +9 -4
  174. data/lib/cloudrider/serverside/nginx_conf.rb +7 -2
  175. data/lib/cloudrider/serverside/squash_ruby.rb +14 -0
  176. data/lib/cloudrider/serverside/unicorn_conf_ruby.rb +2 -1
  177. data/lib/cloudrider/version.rb +1 -1
  178. data/lib/cloudrider/web_firm.rb +16 -0
  179. data/lib/cloudrider/web_firm/component_architect.rb +23 -0
  180. data/lib/cloudrider/web_firm/page_designer.rb +13 -0
  181. data/lib/cloudrider/web_firm/project_lead.rb +30 -0
  182. data/lib/cloudrider/web_firm/scumbag_engineer.rb +40 -0
  183. data/lib/cloudrider/web_firm/support_intern.rb +113 -0
  184. data/lib/generators/cloudrider/server/server_generator.rb +4 -8
  185. data/lib/generators/cloudrider/website/website_generator.rb +25 -0
  186. data/spec/cloudrider/protosite_spec.rb +63 -0
  187. data/vanilla/.bowerrc +4 -0
  188. data/vanilla/.editorconfig +33 -0
  189. data/vanilla/.ember-cli +9 -0
  190. data/vanilla/.gitignore +17 -0
  191. data/vanilla/.jshintrc +32 -0
  192. data/vanilla/.travis.yml +16 -0
  193. data/vanilla/Brocfile.js +20 -0
  194. data/vanilla/README.md +51 -0
  195. data/vanilla/app/app.js +16 -0
  196. data/vanilla/app/components/.gitkeep +0 -0
  197. data/vanilla/app/controllers/.gitkeep +0 -0
  198. data/vanilla/app/controllers/admin.coffee +5 -0
  199. data/vanilla/app/helpers/.gitkeep +0 -0
  200. data/vanilla/app/index.html +21 -0
  201. data/vanilla/app/models/.gitkeep +0 -0
  202. data/vanilla/app/router.js +11 -0
  203. data/vanilla/app/routes/.gitkeep +0 -0
  204. data/vanilla/app/styles/.gitkeep +0 -0
  205. data/vanilla/app/styles/app.css +3 -0
  206. data/vanilla/app/templates/.gitkeep +0 -0
  207. data/vanilla/app/templates/application.hbs +3 -0
  208. data/vanilla/app/templates/components/.gitkeep +0 -0
  209. data/vanilla/app/views/.gitkeep +0 -0
  210. data/vanilla/bower.json +17 -0
  211. data/vanilla/config/environment.js +47 -0
  212. data/vanilla/package.json +39 -0
  213. data/vanilla/public/.gitkeep +0 -0
  214. data/vanilla/public/crossdomain.xml +15 -0
  215. data/vanilla/public/robots.txt +3 -0
  216. data/vanilla/testem.json +11 -0
  217. data/vanilla/tests/.jshintrc +74 -0
  218. data/vanilla/tests/helpers/resolver.js +11 -0
  219. data/vanilla/tests/helpers/start-app.js +25 -0
  220. data/vanilla/tests/index.html +45 -0
  221. data/vanilla/tests/test-helper.js +12 -0
  222. data/vanilla/tests/unit/.gitkeep +0 -0
  223. data/vanilla/tests/unit/controllers/admin-test.coffee +12 -0
  224. data/vanilla/vendor/.gitkeep +0 -0
  225. metadata +189 -5
  226. data/generica/app/views/layouts/application.html.erb +0 -14
  227. data/lib/cloudrider/master_context.rb +0 -105
@@ -1,6 +1,6 @@
1
1
  class Cloudrider::Serverside::Base
2
- def initialize(style=nil)
3
- @style = style.to_s
2
+ def initialize(style: style, protosite: protosite)
3
+ @style, @protosite = style, protosite
4
4
  end
5
5
  def protofile
6
6
  Cloudrider::Protofile.new.tap do |p|
@@ -1,6 +1,6 @@
1
1
  class Cloudrider::Serverside::DatabaseYaml < Cloudrider::Serverside::Base
2
2
  class Context
3
- attr_accessor :web_urls, :project_name
3
+ attr_accessor :project_name
4
4
  end
5
5
  private
6
6
  def _file_name
@@ -8,9 +8,14 @@ class Cloudrider::Serverside::DatabaseYaml < Cloudrider::Serverside::Base
8
8
  end
9
9
  def _context
10
10
  Context.new.tap do |c|
11
- c.web_urls = @style.split(" ").tail
12
- c.project_name = @style.split(" ").first
11
+ c.project_name = @style.first if @style.present?
12
+ c.project_name = @protosite.project_name if @protosite.present?
13
13
  end
14
14
  end
15
-
15
+ def _template
16
+ @template ||= Tilt::StringTemplate.new _source
17
+ end
18
+ def _source_file
19
+ _file_name + ".str"
20
+ end
16
21
  end
@@ -9,8 +9,13 @@ class Cloudrider::Serverside::NginxConf < Cloudrider::Serverside::Base
9
9
  end
10
10
  def _context
11
11
  Context.new.tap do |c|
12
- c.web_urls = @style.split(" ").tail
13
- c.project_name = @style.split(" ").first
12
+ if @protosite.present?
13
+ c.web_urls = @protosite.domain_names
14
+ c.project_name = @protosite.project_name
15
+ else
16
+ c.web_urls = @style.tail
17
+ c.project_name = @style.first
18
+ end
14
19
  end
15
20
  end
16
21
  end
@@ -0,0 +1,14 @@
1
+ class Cloudrider::Serverside::SquashRuby < Cloudrider::Serverside::Base
2
+ class Context
3
+ attr_accessor :api_key
4
+ end
5
+ private
6
+ def _file_name
7
+ "initializers/squash.rb"
8
+ end
9
+ def _context
10
+ Context.new.tap do |c|
11
+ c.api_key = @protosite.squash_api_key
12
+ end
13
+ end
14
+ end
@@ -10,7 +10,8 @@ class Cloudrider::Serverside::UnicornConfRuby < Cloudrider::Serverside::Base
10
10
 
11
11
  def _context
12
12
  Context.new.tap do |c|
13
- c.project_name = @style.split(" ").first
13
+ c.project_name = @style.first if @style.present?
14
+ c.project_name = @protosite.project_name if @protosite.present?
14
15
  end
15
16
  end
16
17
 
@@ -1,3 +1,3 @@
1
1
  module Cloudrider
2
- VERSION = "0.3.0"
2
+ VERSION = "0.3.20"
3
3
  end
@@ -0,0 +1,16 @@
1
+ Dir[File.join(__dir__, "*.rb")].each { |f| require f }
2
+ module Cloudrider
3
+ module WebFirm
4
+ class Slave
5
+ def initialize(protosite)
6
+ @protosite = protosite
7
+ end
8
+ end
9
+ Dir[File.join(__dir__, "web_firm", "*.rb")].each { |f| require f }
10
+ class << self
11
+ def make_me_a_fucking_website_you_shit(protosite)
12
+ Cloudrider::WebFirm::ProjectLead.new(protosite).protofiles
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,23 @@
1
+ class Cloudrider::WebFirm::ComponentArchitect < Cloudrider::WebFirm::Slave
2
+ def protofiles
3
+ _component_protofiles + _standardized_component_protofiles
4
+ end
5
+
6
+ private
7
+ def _component_names
8
+ @protosite.pages.map(&:components).flatten.uniq
9
+ end
10
+ def _component_protofiles
11
+ _component_names.map do |name|
12
+ _v name: name, protosite: @protosite
13
+ end.flatten
14
+ end
15
+ def _standardized_component_protofiles
16
+ ["site-nav", "site-footer"].map do |name|
17
+ _v name: name, protosite: @protosite
18
+ end.flatten
19
+ end
20
+ def _v(opts={})
21
+ Cloudrider::ApplicationCommander.varisset_protofiles_for opts
22
+ end
23
+ end
@@ -0,0 +1,13 @@
1
+ class Cloudrider::WebFirm::PageDesigner < Cloudrider::WebFirm::Slave
2
+
3
+ def protofiles
4
+ _page_names.map do |name|
5
+ Cloudrider::ApplicationCommander.varisset_protofiles_for name: name, protosite: @protosite
6
+ end.flatten
7
+ end
8
+
9
+ private
10
+ def _page_names
11
+ @protosite.pages.map(&:name)
12
+ end
13
+ end
@@ -0,0 +1,30 @@
1
+ class Cloudrider::WebFirm::ProjectLead < Cloudrider::WebFirm::Slave
2
+
3
+ def protofiles
4
+ _constant_protofiles + _dynamic_protofiles
5
+ end
6
+
7
+ private
8
+ def _engineer
9
+ @engineer ||= Cloudrider::WebFirm::ScumbagEngineer.new(@protosite)
10
+ end
11
+ def _constant_protofiles
12
+ _engineer.protofiles
13
+ end
14
+
15
+ def _dynamic_protofiles
16
+ _always_needed_protofiles + _page_protofiles + _component_protofiles
17
+ end
18
+
19
+ def _always_needed_protofiles
20
+ Cloudrider::WebFirm::SupportIntern.new(@protosite).protofiles
21
+ end
22
+
23
+ def _page_protofiles
24
+ Cloudrider::WebFirm::PageDesigner.new(@protosite).protofiles
25
+ end
26
+
27
+ def _component_protofiles
28
+ Cloudrider::WebFirm::ComponentArchitect.new(@protosite).protofiles
29
+ end
30
+ end
@@ -0,0 +1,40 @@
1
+ class Cloudrider::WebFirm::ScumbagEngineer < Cloudrider::WebFirm::Slave
2
+
3
+ def protofiles
4
+ _copy_file "bower.json", "bower.json"
5
+ _copy_file ".bowerrc", ".bowerrc"
6
+ _directory "app/models", "app/models"
7
+ _directory "app/controllers", "app/controllers"
8
+ _directory "app/views", "app/views"
9
+ _directory "spec", "spec"
10
+ _directory "db/seeds", "db/seeds"
11
+ _directory "lib/tasks", "lib/tasks"
12
+ _directory "lib/generica", "lib/generica"
13
+ _copy_file "lib/generica.rb", "lib/generica.rb"
14
+ _copy_file "config/desired_languages.yml", "config/desired_languages.yml"
15
+ _copy_file ".rspec", ".rspec"
16
+ _directory "public/tests", "public/tests"
17
+ _copy_file "config/routes.rb", "config/routes.rb"
18
+ _copy_file "config/initializers/sorcery.rb", "config/initializers/sorcery.rb"
19
+ _copy_file "config/initializers/i18n_backend.rb", "config/initializers/i18n_backend.rb"
20
+ _copy_file "Gemfile", "Gemfile"
21
+ _copy_file ".gitignore", ".gitignore"
22
+ _directory "test", "test"
23
+ _push_protofile *_backend_commander.files_to_write
24
+ end
25
+
26
+ private
27
+ def _backend_commander
28
+ @backend_commander ||= Cloudrider::BackendCommander.new name: "configs", protosite: @protosite
29
+ end
30
+ def _copy_file(source, target)
31
+ _push_protofile Cloudrider::Protofile.new(type: :copy_file, source: source, target: target)
32
+ end
33
+ def _directory(source, target)
34
+ _push_protofile Cloudrider::Protofile.new(type: :directory, source: source, target: target)
35
+ end
36
+ def _push_protofile(*protofiles)
37
+ @protofiles ||= []
38
+ @protofiles += protofiles
39
+ end
40
+ end
@@ -0,0 +1,113 @@
1
+ class Cloudrider::WebFirm::SupportIntern < Cloudrider::WebFirm::Slave
2
+
3
+ def protofiles
4
+ _copy_config_files
5
+ _copy_support_folders
6
+ _copy_support_styles
7
+ _copy_static_style_folders
8
+ _copy_asset_images
9
+ _copy_static_components
10
+ _copy_static_pages
11
+ _copy_static_component_styles
12
+ _copy_admin_templates
13
+ end
14
+
15
+ private
16
+ def _copy_file(source, target)
17
+ _push_protofile Cloudrider::Protofile.new(type: :copy_file, source: source, target: target)
18
+ end
19
+ def _directory(source, target)
20
+ _push_protofile Cloudrider::Protofile.new(type: :directory, source: source, target: target)
21
+ end
22
+ def _push_protofile(*protofiles)
23
+ @protofiles ||= []
24
+ @protofiles += protofiles
25
+ end
26
+ def _copy_admin_templates
27
+ _directory "app/assets/javascripts/templates/admin", "app/assets/javascripts/templates/admin"
28
+ end
29
+ def _copy_asset_images
30
+ _directory "app/assets/images", "app/assets/images"
31
+ end
32
+ def _copy_config_files
33
+ ["apiv1.js.ls", "application.js"].each do |file|
34
+ _copy_file "app/assets/javascripts/#{file}", "app/assets/javascripts/#{file}"
35
+ end
36
+ end
37
+ def _copy_support_folders
38
+ [
39
+ "adapters",
40
+ "components",
41
+ "config",
42
+ "controllers",
43
+ "helpers",
44
+ "mixins",
45
+ "models",
46
+ "packages",
47
+ "routes",
48
+ "transforms",
49
+ "views",
50
+ "templates/modals"
51
+ ].each do |folder|
52
+ _directory "app/assets/javascripts/#{folder}", "app/assets/javascripts/#{folder}"
53
+ end
54
+ end
55
+ def _copy_support_styles
56
+ [
57
+ "application.css",
58
+ "apiv1.css.scss",
59
+ "foundation_and_overrides.scss",
60
+ "apiv1/_admin.css.scss"
61
+ ].each do |file|
62
+ _copy_file "app/assets/stylesheets/#{file}", "app/assets/stylesheets/#{file}"
63
+ end
64
+ end
65
+ def _copy_static_style_folders
66
+ ["admin", "shared", "modals"].each do |folder|
67
+ _directory "app/assets/stylesheets/apiv1/#{folder}", "app/assets/stylesheets/apiv1/#{folder}"
68
+ end
69
+ end
70
+ def _copy_static_components
71
+ [
72
+ "tr-span",
73
+ "fancy-paginator",
74
+ "form-for",
75
+ "flash-message",
76
+ "block-grid-pictures",
77
+ "block-picture",
78
+ "flash-slice",
79
+ "promise-button",
80
+ "select-locale",
81
+ "tree-taxon-li",
82
+ "tree-taxon-ul",
83
+ "preload-billboard",
84
+ "tree-taxon-wrapper",
85
+ "pictures-group",
86
+ "picture-chunk",
87
+ "offers-summary"
88
+ ].each do |component|
89
+ _copy_file "app/assets/javascripts/templates/components/#{component}.emblem", "app/assets/javascripts/templates/components/#{component}.emblem"
90
+ end
91
+ end
92
+ def _copy_static_pages
93
+ ["admin"].each do |file|
94
+ _copy_file "app/assets/javascripts/templates/#{file}.emblem", "app/assets/javascripts/templates/#{file}.emblem"
95
+ end
96
+ end
97
+ def _copy_static_component_styles
98
+ [
99
+ "block-grid-pictures",
100
+ "fancy-paginator",
101
+ "files-field",
102
+ "flash-message",
103
+ "promise-button",
104
+ "select-locale",
105
+ "type-ahead",
106
+ "preload-billboard",
107
+ "tree-taxon-wrapper",
108
+ "pictures-group",
109
+ "offers-summary"].each do |file|
110
+ _copy_file "app/assets/stylesheets/apiv1/components/_#{file}.css.scss", "app/assets/stylesheets/apiv1/components/_#{file}.css.scss"
111
+ end
112
+ end
113
+ end
@@ -5,6 +5,8 @@ class Cloudrider::Generators::ServerGenerator < Rails::Generators::NamedBase
5
5
 
6
6
  desc "Generates backend server rubies and conf files and puts them into their right places.
7
7
  Known backend files are: #{Cloudrider::BackendCommander::KnownBackends}"
8
+
9
+ argument :project_specs, type: :array, default: ["cloudrider", "cloudrider.com"]
8
10
  def create_the_variable_files
9
11
  _selective_backend_rubies
10
12
  end
@@ -13,17 +15,11 @@ class Cloudrider::Generators::ServerGenerator < Rails::Generators::NamedBase
13
15
  Cloudrider::BackendCommander.backend_ruby_protofiles_for(_backend_ruby_opts).each do |protofile|
14
16
  create_file protofile.full_name, protofile.content
15
17
  end
16
- end
18
+ end
17
19
  def _all_backend_rubies?
18
20
  _backend_ruby_name == "all"
19
21
  end
20
22
  def _backend_ruby_opts
21
- { name: _backend_ruby_name, style: _backend_ruby_style }
22
- end
23
- def _backend_ruby_name
24
- name.split(":").first
25
- end
26
- def _backend_ruby_style
27
- name.split(":").second
23
+ { name: name, style: project_specs }
28
24
  end
29
25
  end
@@ -0,0 +1,25 @@
1
+ require "cloudrider/web_firm"
2
+ module Cloudrider::Generators; end
3
+ class Cloudrider::Generators::WebsiteGenerator < Rails::Generators::NamedBase
4
+ source_root File.expand_path "../../../../../generica", __FILE__
5
+ desc "Builds a website when given a json file specifying the desired functionalities and such"
6
+ def create_the_variable_files
7
+ _protofiles.each do |protofile|
8
+ case protofile.type.to_s
9
+ when "copy_file"
10
+ copy_file protofile.source, protofile.target
11
+ when "directory"
12
+ directory protofile.source, protofile.target
13
+ else
14
+ create_file protofile.full_name, protofile.content
15
+ end
16
+ end
17
+ end
18
+ private
19
+ def _protofiles
20
+ Cloudrider::WebFirm.make_me_a_fucking_website_you_shit(_protosite)
21
+ end
22
+ def _protosite
23
+ Cloudrider::Protosite.from_hash JSON.parse File.read name
24
+ end
25
+ end
@@ -0,0 +1,63 @@
1
+ require 'spec_helper'
2
+
3
+ describe Cloudrider::Protosite do
4
+ before do
5
+ @hash = {
6
+ project_name: "craigslist inspired market",
7
+ domain_names: ['www.craigslist-clone.com', 'craigslist-clone.com'],
8
+ pages: [
9
+ {
10
+ name: :index,
11
+ components: ["products-showcase", "product-display", "search-and-filter"]
12
+ },
13
+ {
14
+ name: :products_index,
15
+ components: ["produts-catalog", "product-listing", "search-and-filter"]
16
+ },
17
+ {
18
+ name: :product_show,
19
+ components: ["offers-overview"]
20
+ },
21
+ {
22
+ name: :offers_new,
23
+ components: []
24
+ }
25
+ ],
26
+ functionalities: [:admin_panel, :user_accounts, :offerable_products, :categorizable_products],
27
+ theme: :craigslist,
28
+ layout: "mixed-width, hero-narrow"
29
+ }
30
+ @json = JSON.parse @hash.to_json
31
+ end
32
+ let(:protosite) { described_class.from_hash @hash }
33
+ let(:shitsite) { described_class.from_hash @json }
34
+ context "sanity" do
35
+ subject { Cloudrider::Protosite }
36
+ specify { should be_a Class }
37
+ end
38
+
39
+ context '#pages' do
40
+ subject { protosite.pages.count }
41
+ specify { should eq 4 }
42
+ end
43
+
44
+ context '#project_name' do
45
+ subject { protosite.project_name }
46
+ specify { should eq @hash[:project_name] }
47
+ end
48
+
49
+ context '#domain_names' do
50
+ subject { protosite.domain_names }
51
+ specify { should eq @hash[:domain_names] }
52
+ end
53
+
54
+ context '#project_name' do
55
+ subject { shitsite.project_name }
56
+ specify { should eq @hash[:project_name] }
57
+ end
58
+
59
+ context '#domain_names' do
60
+ subject { shitsite.domain_names }
61
+ specify { should eq @hash[:domain_names] }
62
+ end
63
+ end