cloudrider 0.3.0 → 0.3.20

Sign up to get free protection for your applications and to get access to all the features.
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