roro 0.3.22 → 0.3.23

Sign up to get free protection for your applications and to get access to all the features.
Files changed (333) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +99 -68
  3. data/.gitignore +31 -7
  4. data/.ruby-version +1 -0
  5. data/Gemfile +1 -1
  6. data/Guardfile +23 -13
  7. data/README.md +9 -10
  8. data/bin/console +1 -1
  9. data/bin/setup +1 -1
  10. data/docker-compose.yml +3 -3
  11. data/lib/roro/cli/generate/generate.rb +52 -1
  12. data/lib/roro/cli/generate/generate_containers.rb +23 -0
  13. data/lib/roro/cli/generate/generate_environments.rb +25 -0
  14. data/lib/roro/cli/generate/generate_exposed.rb +4 -11
  15. data/lib/roro/cli/generate/generate_keys.rb +7 -6
  16. data/lib/roro/cli/generate/generate_mise.rb +13 -0
  17. data/lib/roro/cli/generate/generate_obfuscated.rb +5 -25
  18. data/lib/roro/cli/roll_your_own.rb +12 -0
  19. data/lib/roro/cli/rollon.rb +11 -138
  20. data/lib/roro/cli.rb +30 -23
  21. data/lib/roro/common/file_reflection.rb +33 -0
  22. data/lib/roro/common/utilities.rb +185 -0
  23. data/lib/roro/configurator.rb +14 -14
  24. data/lib/roro/configurators/adventure_case_builder.rb +65 -0
  25. data/lib/roro/configurators/adventure_chooser.rb +46 -0
  26. data/lib/roro/configurators/adventure_picker.rb +68 -0
  27. data/lib/roro/configurators/adventure_writer.rb +34 -0
  28. data/lib/roro/configurators/catalog_builder.rb +17 -0
  29. data/lib/roro/configurators/configurator.rb +64 -0
  30. data/lib/roro/configurators/eligibility.rb +141 -0
  31. data/lib/roro/configurators/question_asker.rb +29 -0
  32. data/lib/roro/configurators/question_builder.rb +83 -0
  33. data/lib/roro/configurators/structure_builder.rb +34 -0
  34. data/lib/roro/configurators/utilities.rb +188 -0
  35. data/lib/roro/configurators/validator.rb +109 -0
  36. data/lib/roro/crypto/cipher.rb +35 -0
  37. data/lib/roro/crypto/exposer.rb +33 -0
  38. data/lib/roro/crypto/file_writer.rb +14 -0
  39. data/lib/roro/crypto/key_writer.rb +35 -0
  40. data/lib/roro/crypto/obfuscator.rb +25 -0
  41. data/lib/roro/error.rb +31 -0
  42. data/lib/roro/stacks/catalog/unstoppable/developer_styles/fatsufodo/fatsufodo.yml +1 -0
  43. data/lib/roro/stacks/catalog/unstoppable/developer_styles/fatsufodo/stories/django/django.yml +38 -0
  44. data/lib/roro/stacks/catalog/unstoppable/developer_styles/fatsufodo/stories/django/templates/stage_one/Dockerfile.tt +7 -0
  45. data/lib/roro/stacks/catalog/unstoppable/developer_styles/fatsufodo/stories/django/templates/stage_one/docker-compose.yml.tt +20 -0
  46. data/lib/roro/stacks/catalog/unstoppable/developer_styles/fatsufodo/stories/django/templates/stage_one/requirements.txt.tt +2 -0
  47. data/lib/roro/stacks/catalog/unstoppable/developer_styles/fatsufodo/stories/django/templates/stage_two/settings.py +130 -0
  48. data/lib/roro/{templates/base/jumpstart → stacks/catalog/unstoppable/developer_styles/fatsufodo/stories/django/test/stage_one/dummy}/.keep +0 -0
  49. data/lib/roro/stacks/catalog/unstoppable/developer_styles/fatsufodo/stories/django/test/stage_one/stage_one_test.rb +37 -0
  50. data/lib/roro/{templates/base/roro → stacks/catalog/unstoppable/developer_styles/fatsufodo/stories/django/test/stage_two/dummy}/.keep +0 -0
  51. data/lib/roro/stacks/catalog/unstoppable/developer_styles/fatsufodo/stories/expressjs/expressjs.yml +8 -0
  52. data/lib/roro/stacks/catalog/unstoppable/developer_styles/fatsufodo/stories/expressjs/templates/stage_one/Dockerfile.tt +14 -0
  53. data/lib/roro/stacks/catalog/unstoppable/developer_styles/fatsufodo/stories/expressjs/templates/stage_one/docker-compose.yml.tt +21 -0
  54. data/lib/roro/stacks/catalog/unstoppable/developer_styles/fatsufodo/stories/flask/flask.yml +14 -0
  55. data/lib/roro/{templates/base/roro/roro → stacks/catalog/unstoppable/developer_styles/fatsufodo/stories/flask/templates/stage_one}/.keep +0 -0
  56. data/lib/roro/stacks/catalog/unstoppable/developer_styles/fatsufodo/stories/flask/templates/stage_one/Dockerfile +11 -0
  57. data/lib/roro/stacks/catalog/unstoppable/developer_styles/fatsufodo/stories/flask/templates/stage_one/app.py +23 -0
  58. data/lib/roro/stacks/catalog/unstoppable/developer_styles/fatsufodo/stories/flask/templates/stage_one/docker-compose.yml +8 -0
  59. data/lib/roro/stacks/catalog/unstoppable/developer_styles/fatsufodo/stories/flask/templates/stage_one/requirements.txt +2 -0
  60. data/lib/roro/{templates/base/roro/roro/containers → stacks/catalog/unstoppable/developer_styles/fatsufodo/stories/flask/test}/.keep +0 -0
  61. data/lib/roro/{templates/base/roro/roro/containers/app → stacks/catalog/unstoppable/developer_styles/fatsufodo/stories/flask/test/stage_one}/.keep +0 -0
  62. data/lib/roro/{templates/base/roro/roro/containers/frontend → stacks/catalog/unstoppable/developer_styles/fatsufodo/stories/flask/test/stage_one/stage_dummy}/.keep +0 -0
  63. data/lib/roro/stacks/catalog/unstoppable/developer_styles/fatsufodo/stories/flask/test/stage_one/stage_test.rb +37 -0
  64. data/lib/roro/stacks/catalog/unstoppable/developer_styles/fatsufodo/stories/rails/rails.yml +12 -0
  65. data/lib/roro/stacks/catalog/unstoppable/developer_styles/fatsufodo/stories/rails/templates/stage_one/Dockerfile.tt +16 -0
  66. data/lib/roro/{templates/base/roro/roro/keys/.keep → stacks/catalog/unstoppable/developer_styles/fatsufodo/stories/rails/templates/stage_one/Gemfile.lock.tt} +0 -0
  67. data/lib/roro/stacks/catalog/unstoppable/developer_styles/fatsufodo/stories/rails/templates/stage_one/Gemfile.tt +2 -0
  68. data/lib/roro/stacks/catalog/unstoppable/developer_styles/fatsufodo/stories/rails/templates/stage_one/docker-compose.yml.tt +9 -0
  69. data/lib/roro/{templates/base/roro/roro/docker-entrypoint.sh.tt → stacks/catalog/unstoppable/developer_styles/fatsufodo/stories/rails/templates/stage_one/entrypoint.sh} +1 -1
  70. data/lib/roro/stacks/catalog/unstoppable/developer_styles/fatsufodo/stories/rails/templates/stage_two/database.yml.tt +16 -0
  71. data/lib/roro/stacks/catalog/unstoppable/developer_styles/fatsufodo/stories/wordpress/templates/stage_one/docker-compose.yml.tt +31 -0
  72. data/lib/roro/stacks/catalog/unstoppable/developer_styles/fatsufodo/stories/wordpress/wordpress.yml +17 -0
  73. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/okonomi.yml +1 -0
  74. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/stories/roll_your_own/roll_your_own.yml +23 -0
  75. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/stories/roll_your_own/templates/stage_one/%interpolated_stack_path%/%interpolated_story_name%.yml.tt +10 -0
  76. data/lib/roro/{templates/rails/.circleci → stacks/catalog/unstoppable/developer_styles/okonomi/stories/roll_your_own/templates/stage_one/%interpolated_stack_path%/templates/stage_one}/.keep +0 -0
  77. data/lib/roro/{templates/rails → stacks/catalog/unstoppable/developer_styles/okonomi/stories/roll_your_own/templates/stage_one/%interpolated_stack_path%/test}/.keep +0 -0
  78. data/lib/roro/{templates/rails/database/with_postgresql → stacks/catalog/unstoppable/developer_styles/okonomi/stories/roll_your_own/templates/stage_one/%interpolated_stack_path%/test/stage_one}/.keep +0 -0
  79. data/lib/roro/{templates/rails/dotenv → stacks/catalog/unstoppable/developer_styles/okonomi/stories/roll_your_own/templates/stage_one/%interpolated_stack_path%/test/stage_one/stage_dummy}/.keep +0 -0
  80. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/stories/roll_your_own/templates/stage_one/%interpolated_stack_path%/test/stage_one/stage_test.rb.tt +37 -0
  81. data/lib/roro/{templates/rails/roro → stacks/catalog/unstoppable/developer_styles/okonomi/stories/roll_your_own/test/stage_one/dummy}/.keep +0 -0
  82. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/stories/roll_your_own/test/stage_one/stage_one_test.rb +58 -0
  83. data/lib/roro/stacks/catalog/unstoppable/developer_styles/omakase/omakase.yml +1 -0
  84. data/lib/roro/stacks/catalog/unstoppable/developer_styles/omakase/stories/rails/rails.yml +13 -0
  85. data/lib/roro/stacks/catalog/unstoppable/developer_styles/omakase/stories/rails/templates/stage_one/Dockerfile.tt +16 -0
  86. data/lib/roro/{templates/rails/roro/containers/.keep → stacks/catalog/unstoppable/developer_styles/omakase/stories/rails/templates/stage_one/Gemfile.lock.tt} +0 -0
  87. data/lib/roro/stacks/catalog/unstoppable/developer_styles/omakase/stories/rails/templates/stage_one/Gemfile.tt +2 -0
  88. data/lib/roro/stacks/catalog/unstoppable/developer_styles/omakase/stories/rails/templates/stage_one/docker-compose.yml.tt +17 -0
  89. data/lib/roro/stacks/catalog/unstoppable/developer_styles/omakase/stories/rails/templates/stage_one/entrypoint.sh +8 -0
  90. data/lib/roro/stacks/catalog/unstoppable/developer_styles/omakase/stories/rails/templates/stage_two/database.yml.tt +16 -0
  91. data/lib/roro/stacks/catalog/unstoppable/developer_styles/omakase/stories/wordpress/templates/stage_one/.env +38 -0
  92. data/lib/roro/{templates/rails/roro/containers/app → stacks/catalog/unstoppable/developer_styles/omakase/stories/wordpress/templates/stage_one}/.keep +0 -0
  93. data/lib/roro/stacks/catalog/unstoppable/developer_styles/omakase/stories/wordpress/templates/stage_one/LICENSE +674 -0
  94. data/lib/roro/stacks/catalog/unstoppable/developer_styles/omakase/stories/wordpress/templates/stage_one/README.md +346 -0
  95. data/lib/roro/stacks/catalog/unstoppable/developer_styles/omakase/stories/wordpress/templates/stage_one/build.sh +39 -0
  96. data/lib/roro/stacks/catalog/unstoppable/developer_styles/omakase/stories/wordpress/templates/stage_one/config/nginx/cfg/nginx-custom-configs.conf +117 -0
  97. data/lib/roro/stacks/catalog/unstoppable/developer_styles/omakase/stories/wordpress/templates/stage_one/config/nginx/cfg/nginx-wp-hardening.conf +131 -0
  98. data/lib/roro/stacks/catalog/unstoppable/developer_styles/omakase/stories/wordpress/templates/stage_one/config/nginx/tpl/nginx-http.conf.template +103 -0
  99. data/lib/roro/stacks/catalog/unstoppable/developer_styles/omakase/stories/wordpress/templates/stage_one/config/nginx/tpl/nginx-https.conf.example +123 -0
  100. data/lib/roro/stacks/catalog/unstoppable/developer_styles/omakase/stories/wordpress/templates/stage_one/config/php.conf.ini +3 -0
  101. data/lib/roro/{templates/rails/roro/containers/frontend/.keep → stacks/catalog/unstoppable/developer_styles/omakase/stories/wordpress/templates/stage_one/data/certbot/conf/.placeholder} +0 -0
  102. data/lib/roro/{templates/rails/roro/keys/.keep → stacks/catalog/unstoppable/developer_styles/omakase/stories/wordpress/templates/stage_one/data/certbot/www/.placeholder} +0 -0
  103. data/lib/roro/stacks/catalog/unstoppable/developer_styles/omakase/stories/wordpress/templates/stage_one/docker-compose-build.yml +24 -0
  104. data/lib/roro/stacks/catalog/unstoppable/developer_styles/omakase/stories/wordpress/templates/stage_one/docker-compose-dev.yml +96 -0
  105. data/lib/roro/stacks/catalog/unstoppable/developer_styles/omakase/stories/wordpress/templates/stage_one/docker-compose-prod.yml +147 -0
  106. data/lib/roro/stacks/catalog/unstoppable/developer_styles/omakase/stories/wordpress/templates/stage_one/dump_mysql.sh +16 -0
  107. data/lib/roro/stacks/catalog/unstoppable/developer_styles/omakase/stories/wordpress/templates/stage_one/init_letsencrypt.sh +80 -0
  108. data/lib/roro/{templates/rails/roro/kube/.keep → stacks/catalog/unstoppable/developer_styles/omakase/stories/wordpress/templates/stage_one/mysql-dumps/.placeholder} +0 -0
  109. data/lib/roro/stacks/catalog/unstoppable/developer_styles/omakase/stories/wordpress/templates/stage_one/push.sh +22 -0
  110. data/lib/roro/stacks/catalog/unstoppable/developer_styles/omakase/stories/wordpress/templates/stage_one/wordpress/Dockerfile +14 -0
  111. data/lib/roro/stacks/catalog/unstoppable/developer_styles/omakase/stories/wordpress/templates/stage_one/wordpress/adduser.sh +15 -0
  112. data/lib/roro/{templates/rails/roro/kube/certificate.yml.tt → stacks/catalog/unstoppable/developer_styles/omakase/stories/wordpress/templates/stage_one/wordpress-sql/.placeholder} +0 -0
  113. data/lib/roro/{templates/rails/roro/kube/cluster-issuer.yml.tt → stacks/catalog/unstoppable/developer_styles/omakase/stories/wordpress/templates/stage_one/wordpress-src/.placeholder} +0 -0
  114. data/lib/roro/{templates/ruby_gem/.circleci → stacks/catalog/unstoppable/developer_styles/omakase/stories/wordpress/test}/.keep +0 -0
  115. data/lib/roro/{templates/ruby_gem/roro/containers → stacks/catalog/unstoppable/developer_styles/omakase/stories/wordpress/test/stage_one}/.keep +0 -0
  116. data/lib/roro/{templates/ruby_gem/roro/keys → stacks/catalog/unstoppable/developer_styles/omakase/stories/wordpress/test/stage_one/stage_dummy}/.keep +0 -0
  117. data/lib/roro/stacks/catalog/unstoppable/developer_styles/omakase/stories/wordpress/test/stage_one/stage_test.rb +40 -0
  118. data/lib/roro/stacks/catalog/unstoppable/developer_styles/omakase/stories/wordpress/wordpress.yml +76 -0
  119. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/fatsufodo.yml +1 -0
  120. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/django/django.yml +36 -0
  121. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/django/templates/stage_one/Dockerfile.tt +7 -0
  122. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/django/templates/stage_one/docker-compose.yml.tt +20 -0
  123. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/django/templates/stage_one/requirements.txt.tt +2 -0
  124. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/django/templates/stage_two/settings.py +130 -0
  125. data/{roro/containers → lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/django/test/stage_one/dummy}/.keep +0 -0
  126. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/django/test/stage_one/stage_one_test.rb +37 -0
  127. data/{roro/keys → lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/django/test/stage_two/dummy}/.keep +0 -0
  128. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/expressjs/expressjs.yml +7 -0
  129. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/expressjs/templates/stage_one/Dockerfile.tt +14 -0
  130. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/expressjs/templates/stage_one/docker-compose.yml.tt +21 -0
  131. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/rails/rails.yml +12 -0
  132. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/rails/templates/stage_one/Dockerfile.tt +16 -0
  133. data/lib/roro/{templates/rails/roro/kube/ingress.yml.tt → stacks/catalog/unstoppable/developer_styles/sashimi/stories/rails/templates/stage_one/Gemfile.lock.tt} +0 -0
  134. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/rails/templates/stage_one/Gemfile.tt +2 -0
  135. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/rails/templates/stage_one/docker-compose.yml.tt +17 -0
  136. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/rails/templates/stage_one/entrypoint.sh +8 -0
  137. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/rails/templates/stage_two/database.yml.tt +16 -0
  138. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roro/templates/__MACOSX/scripts/._.DS_Store +0 -0
  139. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roro/templates/scripts/.DS_Store +0 -0
  140. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roro/templates/scripts/base/bundler.sh +22 -0
  141. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roro/templates/scripts/base/git.sh +21 -0
  142. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roro/templates/scripts/base/rvm.sh +38 -0
  143. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roro/templates/scripts/base/utilities.sh +53 -0
  144. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roro/templates/scripts/base.sh +6 -0
  145. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roro/templates/scripts/initialize/clone_idea.sh +14 -0
  146. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roro/templates/scripts/initialize/clone_repos.sh +33 -0
  147. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roro/templates/scripts/initialize/install_correct_bundler.sh +21 -0
  148. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roro/templates/scripts/initialize/install_rubies.sh +6 -0
  149. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roro/templates/scripts/initialize.sh +18 -0
  150. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roro/templates/scripts/roro.sh +15 -0
  151. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roro/templates/scripts/source.sh +28 -0
  152. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roro/templates/scripts/utility/bundle_all.sh +12 -0
  153. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roro/templates/scripts/utility/git_pull_all.sh +15 -0
  154. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roro/templates/scripts/utility/rvm_install_all.sh +12 -0
  155. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roro/templates/scripts/utility/yarn_install_all.sh +10 -0
  156. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/wordpress/templates/stage_one/docker-compose.yml.tt +31 -0
  157. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/wordpress/wordpress.yml +16 -0
  158. data/{sandbox → lib/roro/stacks/library/roro}/.keep +0 -0
  159. data/lib/roro/stacks/library/roro/docker_compose/docker-compose.yml +22 -0
  160. data/lib/roro/stacks/library/roro/k8s/k8s.yml +15 -0
  161. data/lib/roro/{templates/rails/roro/kube/job-migrate.yml.tt → stacks/library/roro/plots/node/.keep} +0 -0
  162. data/lib/roro/stacks/library/roro/plots/node/node.yml +22 -0
  163. data/lib/roro/stacks/library/roro/plots/php/.keep +0 -0
  164. data/lib/roro/stacks/library/roro/plots/php/php.yml +22 -0
  165. data/lib/roro/stacks/library/roro/plots/python/plots/django/.keep +0 -0
  166. data/lib/roro/stacks/library/roro/plots/python/plots/django/django.yml +10 -0
  167. data/lib/roro/stacks/library/roro/plots/python/plots/django/templates/Dockerfile +7 -0
  168. data/lib/roro/stacks/library/roro/plots/python/plots/django/templates/docker-compose.yml +20 -0
  169. data/lib/roro/stacks/library/roro/plots/python/plots/django/templates/requirements.txt +2 -0
  170. data/lib/roro/stacks/library/roro/plots/python/plots/flask/flask.yml +0 -0
  171. data/lib/roro/stacks/library/roro/plots/python/python.yml +1 -0
  172. data/lib/roro/stacks/library/roro/plots/ruby/plots/rails/databases/.keep +0 -0
  173. data/lib/roro/stacks/library/roro/plots/ruby/plots/rails/databases/mysql.yml +22 -0
  174. data/lib/roro/stacks/library/roro/plots/ruby/plots/rails/databases/postgres.yml +22 -0
  175. data/lib/roro/stacks/library/roro/plots/ruby/plots/rails/plots/rails/rails.yml +22 -0
  176. data/lib/roro/stacks/library/roro/plots/ruby/plots/rails/plots/rails/templates/.keep +0 -0
  177. data/lib/roro/stacks/library/roro/plots/ruby/plots/rails/plots/rails_react/rails_react.yml +22 -0
  178. data/lib/roro/stacks/library/roro/plots/ruby/plots/rails/plots/rails_react/templates/.keep +0 -0
  179. data/lib/roro/stacks/library/roro/plots/ruby/plots/rails/plots/rails_vue/rails_vue.yml +22 -0
  180. data/lib/roro/stacks/library/roro/plots/ruby/plots/rails/plots/rails_vue/templates/.keep +0 -0
  181. data/lib/roro/stacks/library/roro/plots/ruby/plots/rails/rails.yml +16 -0
  182. data/lib/roro/stacks/library/roro/plots/ruby/plots/rails/templates/.keep +0 -0
  183. data/lib/roro/stacks/library/roro/plots/ruby/plots/ruby_gem/ruby_gem.yml +22 -0
  184. data/lib/roro/stacks/library/roro/plots/ruby/ruby.yml +22 -0
  185. data/lib/roro/stacks/library/roro/roro/roro.yml +15 -0
  186. data/lib/roro/{stories → stacks/stories_v1}/greenfield/rails.yml +2 -2
  187. data/lib/roro/stacks/stories_v1/greenfield/roro.yml +7 -0
  188. data/lib/roro/{stories → stacks/stories_v1}/greenfield.yml +0 -0
  189. data/lib/roro/{stories → stacks/stories_v1}/rollon/rails/ci_cd/circleci.yml +0 -0
  190. data/lib/roro/{stories → stacks/stories_v1}/rollon/rails/ci_cd.yml +0 -0
  191. data/lib/roro/{stories → stacks/stories_v1}/rollon/rails/database/mysql.yml +1 -1
  192. data/lib/roro/{stories → stacks/stories_v1}/rollon/rails/database/postgresql.yml +1 -1
  193. data/lib/roro/{stories → stacks/stories_v1}/rollon/rails/database.yml +0 -0
  194. data/lib/roro/{stories → stacks/stories_v1}/rollon/rails/kubernetes/postgresql/default.yml +0 -0
  195. data/lib/roro/{stories → stacks/stories_v1}/rollon/rails/kubernetes/postgresql/edge.yml +0 -0
  196. data/lib/roro/stacks/stories_v1/rollon/rails/kubernetes/postgresql.yml +10 -0
  197. data/lib/roro/{stories → stacks/stories_v1}/rollon/rails/kubernetes.yml +0 -0
  198. data/lib/roro/{stories → stacks/stories_v1}/rollon/rails.yml +7 -7
  199. data/lib/roro/stacks/stories_v1/rollon/roro.yml +5 -0
  200. data/lib/roro/{stories → stacks/stories_v1}/rollon/ruby_gem.yml +0 -0
  201. data/lib/roro/{stories → stacks/stories_v1}/rollon.yml +0 -0
  202. data/lib/roro/stacks/stories_v1/templates/rails/.circleci/.keep +0 -0
  203. data/lib/roro/{templates → stacks/stories_v1/templates}/rails/.circleci/config.yml.tt +0 -0
  204. data/lib/roro/{templates → stacks/stories_v1/templates}/rails/.circleci/jobs/_build.yml +1 -1
  205. data/lib/roro/{templates → stacks/stories_v1/templates}/rails/.circleci/jobs/_push.yml +1 -1
  206. data/lib/roro/stacks/stories_v1/templates/rails/.circleci/jobs/_test.yml +12 -0
  207. data/lib/roro/{templates → stacks/stories_v1/templates}/rails/.circleci/setup-gem-credentials.sh +0 -0
  208. data/lib/roro/{templates → stacks/stories_v1/templates}/rails/.circleci/workflows/_build_test_push.yml +0 -0
  209. data/lib/roro/stacks/stories_v1/templates/rails/.keep +0 -0
  210. data/lib/roro/{templates → stacks/stories_v1/templates}/rails/Dockerfile.greenfield.tt +0 -0
  211. data/lib/roro/{templates → stacks/stories_v1/templates}/rails/config/database.mysql.yml +0 -0
  212. data/lib/roro/{templates → stacks/stories_v1/templates}/rails/config/database.pg.yml +0 -0
  213. data/lib/roro/stacks/stories_v1/templates/rails/database/with_mysql/_service.yml +10 -0
  214. data/lib/roro/stacks/stories_v1/templates/rails/database/with_postgresql/.keep +0 -0
  215. data/lib/roro/stacks/stories_v1/templates/rails/database/with_postgresql/_service.yml +7 -0
  216. data/lib/roro/{templates → stacks/stories_v1/templates}/rails/docker-compose.yml.tt +0 -0
  217. data/lib/roro/stacks/stories_v1/templates/rails/dotenv/.keep +0 -0
  218. data/lib/roro/{templates → stacks/stories_v1/templates}/rails/dotenv/database.mysql.env.tt +0 -0
  219. data/lib/roro/{templates → stacks/stories_v1/templates}/rails/dotenv/database.pg.env.tt +0 -0
  220. data/lib/roro/{templates → stacks/stories_v1/templates}/rails/dotenv/web.env.tt +0 -0
  221. data/lib/roro/{templates → stacks/stories_v1/templates}/rails/kube.rake.tt +0 -0
  222. data/lib/roro/stacks/stories_v1/templates/rails/roro/.keep +0 -0
  223. data/lib/roro/stacks/stories_v1/templates/rails/roro/containers/.keep +0 -0
  224. data/lib/roro/stacks/stories_v1/templates/rails/roro/containers/app/.keep +0 -0
  225. data/lib/roro/{templates → stacks/stories_v1/templates}/rails/roro/containers/app/Dockerfile.tt +0 -0
  226. data/lib/roro/stacks/stories_v1/templates/rails/roro/containers/frontend/.keep +0 -0
  227. data/lib/roro/{templates → stacks/stories_v1/templates}/rails/roro/docker-entrypoint.sh +0 -0
  228. data/lib/roro/stacks/stories_v1/templates/rails/roro/keys/.keep +0 -0
  229. data/lib/roro/stacks/stories_v1/templates/rails/roro/kube/.keep +0 -0
  230. data/lib/roro/stacks/stories_v1/templates/rails/roro/kube/certificate.yml.tt +0 -0
  231. data/lib/roro/stacks/stories_v1/templates/rails/roro/kube/cluster-issuer.yml.tt +0 -0
  232. data/lib/roro/{templates → stacks/stories_v1/templates}/rails/roro/kube/deployment.yml.tt +0 -0
  233. data/lib/roro/{templates → stacks/stories_v1/templates}/rails/roro/kube/deployments/postgres_deploy.yaml +3 -3
  234. data/lib/roro/{templates → stacks/stories_v1/templates}/rails/roro/kube/deployments/rails_deploy.yaml +5 -5
  235. data/lib/roro/{templates → stacks/stories_v1/templates}/rails/roro/kube/deployments/redis_deploy.yaml +2 -2
  236. data/lib/roro/{templates → stacks/stories_v1/templates}/rails/roro/kube/deployments/sidekiq_deploy.yaml +3 -3
  237. data/lib/roro/stacks/stories_v1/templates/rails/roro/kube/ingress.yml.tt +0 -0
  238. data/lib/roro/{templates → stacks/stories_v1/templates}/rails/roro/kube/ingresses/ingress.yaml +0 -0
  239. data/lib/roro/stacks/stories_v1/templates/rails/roro/kube/job-migrate.yml.tt +0 -0
  240. data/lib/roro/{templates → stacks/stories_v1/templates}/rails/roro/kube/jobs/setup.yaml +1 -1
  241. data/lib/roro/{templates → stacks/stories_v1/templates}/rails/roro/kube/secret-digital-ocean.yml.tt +0 -0
  242. data/lib/roro/{templates → stacks/stories_v1/templates}/rails/roro/kube/service.yml.tt +0 -0
  243. data/lib/roro/{templates → stacks/stories_v1/templates}/rails/roro/kube/services/postgres_svc.yaml +2 -2
  244. data/lib/roro/{templates → stacks/stories_v1/templates}/rails/roro/kube/services/rails_svc.yaml +3 -3
  245. data/lib/roro/{templates → stacks/stories_v1/templates}/rails/roro/kube/services/redis_svc.yaml +2 -2
  246. data/lib/roro/{templates → stacks/stories_v1/templates}/rails/roro/kube/volumes/postgres_volumes.yaml +0 -0
  247. data/lib/roro/stacks/stories_v1/templates/roro/containers/.keep +0 -0
  248. data/lib/roro/stacks/stories_v1/templates/roro/containers/database/env/.keep +0 -0
  249. data/lib/roro/stacks/stories_v1/templates/roro/containers/database/scripts/.keep +0 -0
  250. data/lib/roro/stacks/stories_v1/templates/roro/env/.keep +0 -0
  251. data/lib/roro/stacks/stories_v1/templates/roro/keys/.keep +0 -0
  252. data/lib/roro/stacks/stories_v1/templates/roro/scripts/.keep +0 -0
  253. data/lib/roro/stacks/stories_v1/templates/roro/scripts/base/bundler.sh +22 -0
  254. data/lib/roro/stacks/stories_v1/templates/roro/scripts/base/git.sh +21 -0
  255. data/lib/roro/stacks/stories_v1/templates/roro/scripts/base/rvm.sh +38 -0
  256. data/lib/roro/stacks/stories_v1/templates/roro/scripts/base/utilities.sh +53 -0
  257. data/lib/roro/stacks/stories_v1/templates/roro/scripts/base.sh +6 -0
  258. data/lib/roro/stacks/stories_v1/templates/roro/scripts/initialize/clone_idea.sh +14 -0
  259. data/lib/roro/stacks/stories_v1/templates/roro/scripts/initialize/clone_repos.sh +33 -0
  260. data/lib/roro/stacks/stories_v1/templates/roro/scripts/initialize/install_correct_bundler.sh +21 -0
  261. data/lib/roro/stacks/stories_v1/templates/roro/scripts/initialize/install_rubies.sh +6 -0
  262. data/lib/roro/stacks/stories_v1/templates/roro/scripts/initialize.sh +18 -0
  263. data/lib/roro/stacks/stories_v1/templates/roro/scripts/roro.sh +15 -0
  264. data/lib/roro/stacks/stories_v1/templates/roro/scripts/source.sh +28 -0
  265. data/lib/roro/stacks/stories_v1/templates/roro/scripts/utility/bundle_all.sh +12 -0
  266. data/lib/roro/stacks/stories_v1/templates/roro/scripts/utility/git_pull_all.sh +15 -0
  267. data/lib/roro/stacks/stories_v1/templates/roro/scripts/utility/rvm_install_all.sh +12 -0
  268. data/lib/roro/stacks/stories_v1/templates/roro/scripts/utility/yarn_install_all.sh +10 -0
  269. data/lib/roro/stacks/stories_v1/templates/ruby_gem/.circleci/.keep +0 -0
  270. data/lib/roro/{templates → stacks/stories_v1/templates}/ruby_gem/.circleci/config.yml.tt +0 -0
  271. data/lib/roro/{templates → stacks/stories_v1/templates}/ruby_gem/.circleci/jobs/_test.yml +0 -0
  272. data/lib/roro/{templates → stacks/stories_v1/templates}/ruby_gem/.circleci/setup-gem-credentials.sh +0 -0
  273. data/lib/roro/{templates → stacks/stories_v1/templates}/ruby_gem/docker-compose.yml +1 -1
  274. data/lib/roro/stacks/stories_v1/templates/ruby_gem/roro/containers/.keep +0 -0
  275. data/lib/roro/{templates → stacks/stories_v1/templates}/ruby_gem/roro/containers/ruby_image/Dockerfile.tt +0 -0
  276. data/lib/roro/{templates → stacks/stories_v1/templates}/ruby_gem/roro/containers/ruby_image/ci.env.tt +0 -0
  277. data/lib/roro/stacks/stories_v1/templates/ruby_gem/roro/keys/.keep +0 -0
  278. data/lib/roro/version.rb +1 -1
  279. data/lib/roro.rb +59 -14
  280. data/mise/containers/ruby_gem/Dockerfile +16 -0
  281. data/{roro/containers/app/Dockerfile → mise/containers/ruby_gem/Dockerfile-app} +0 -0
  282. data/{roro/containers/ruby_image/Dockerfile → mise/containers/ruby_gem/Dockerfile-ruby_gem} +0 -0
  283. data/mise/containers/ruby_gem/env/.keep +0 -0
  284. data/mise/containers/ruby_gem/env/base.env.enc +1 -0
  285. data/mise/containers/ruby_gem/env/ci.env.enc +2 -0
  286. data/mise/containers/ruby_gem/env/development.env.enc +1 -0
  287. data/mise/containers/ruby_gem/env/production.env.enc +1 -0
  288. data/mise/containers/ruby_gem/scripts/.keep +0 -0
  289. data/mise/env/base.env.enc +1 -0
  290. data/mise/env/ci.env.enc +1 -0
  291. data/mise/env/development.env.enc +1 -0
  292. data/mise/env/production.env.enc +1 -0
  293. data/mise/mise.roro +0 -0
  294. data/process.yml +401 -0
  295. data/roro.gemspec +6 -1
  296. metadata +322 -118
  297. data/lib/roro/cli/generate/generate_story.rb +0 -18
  298. data/lib/roro/cli/greenfield/rails.rb +0 -14
  299. data/lib/roro/cli/rollon/rails/base/base.rb +0 -4
  300. data/lib/roro/cli/rollon/rails/base/insert_gems.rb +0 -23
  301. data/lib/roro/cli/rollon/rails/base/insertions.rb +0 -27
  302. data/lib/roro/cli/rollon/rails/database/with_mysql.rb +0 -22
  303. data/lib/roro/cli/rollon/rails/database/with_postgresql.rb +0 -20
  304. data/lib/roro/cli/rollon/rails/database.rb +0 -26
  305. data/lib/roro/cli/rollon/ruby_gem/with_ci_cd.rb +0 -45
  306. data/lib/roro/cli/rollon/ruby_gem.rb +0 -1
  307. data/lib/roro/cli/rollon/stories.rb +0 -2
  308. data/lib/roro/configurator/eligibility.rb +0 -137
  309. data/lib/roro/configurator/okonomi.rb +0 -28
  310. data/lib/roro/configurator/omakase.rb +0 -170
  311. data/lib/roro/crypto.rb +0 -113
  312. data/lib/roro/stories/rollon/rails/kubernetes/postgresql.yml +0 -10
  313. data/lib/roro/templates/base/.circleci/_aliases.yml +0 -8
  314. data/lib/roro/templates/base/.circleci/_commands.yml +0 -31
  315. data/lib/roro/templates/base/.circleci/_defaults.yml +0 -5
  316. data/lib/roro/templates/base/.circleci/_executors.yml +0 -11
  317. data/lib/roro/templates/base/.circleci/_major_only.yml +0 -4
  318. data/lib/roro/templates/base/.circleci/_version.yml +0 -1
  319. data/lib/roro/templates/base/.circleci/_workflow.yml +0 -2
  320. data/lib/roro/templates/base/.circleci/config.job-example.yml +0 -33
  321. data/lib/roro/templates/base/.circleci/jobs/_build.yml +0 -4
  322. data/lib/roro/templates/base/.circleci/jobs/_release.yml +0 -12
  323. data/lib/roro/templates/base/.circleci/workflows/_build_release.yml +0 -10
  324. data/lib/roro/templates/base/.dockerignore +0 -51
  325. data/lib/roro/templates/base/dotenv +0 -1
  326. data/lib/roro/templates/base/jumpstart/Dockerfile.tt +0 -30
  327. data/lib/roro/templates/base/jumpstart/docker-compose.yml +0 -59
  328. data/lib/roro/templates/base/jumpstart/docker-entrypoint.sh +0 -16
  329. data/lib/roro/templates/base/livereload/hosts.example +0 -7
  330. data/lib/roro/templates/rails/.circleci/jobs/_test.yml +0 -12
  331. data/lib/roro/templates/rails/database/with_mysql/_service.yml +0 -10
  332. data/lib/roro/templates/rails/database/with_postgresql/_service.yml +0 -7
  333. data/roro/containers/app/dotenv +0 -1
@@ -0,0 +1,40 @@
1
+ require 'test_helper'
2
+
3
+ describe 'lib roro stacks catalog unstoppable developer_styles omakase stories wordpress' do
4
+ Given(:workbench) { 'empty' }
5
+ Given(:cli) { Roro::CLI.new }
6
+ Given(:adventures) { %w[3 2] }
7
+ Given(:overrides) { %w[] }
8
+
9
+ Given(:rollon) {
10
+ ## Answers adventure questions according to values set in the :adventures array.
11
+ stub_adventure
12
+ ## Answers environment variable questions according to values set in
13
+ # the overrides array. Defaults to 'y'.
14
+ stub_overrides
15
+ ## Ensures Thor run commands are stubbed.
16
+ stub_run_actions
17
+ cli.rollon
18
+ ## To quiet the test output do:
19
+ # quiet { cli.rollon }
20
+ }
21
+
22
+ ## Tests will hang if the :adventures array is empty.
23
+ Given { rollon unless adventures.empty?}
24
+
25
+ describe 'must have docker-compose.yml file' do
26
+ Then { assert_file 'docker-compose.yml' }
27
+ end
28
+
29
+ describe 'must have a mise en place' do
30
+ Then { assert_file 'mise/mise.roro' }
31
+ end
32
+
33
+ describe 'must have correct containers' do
34
+ Then { assert_file 'mise/containers/wordpress' }
35
+ end
36
+
37
+ describe 'must have correct variables in files' do
38
+ Then { assert_file 'mise/env/base.env', /WORDPRESS_IMAGE=wordpress/ }
39
+ end
40
+ end
@@ -0,0 +1,76 @@
1
+ preface: some string
2
+
3
+ env:
4
+ base:
5
+ WORDPRESS_IMAGE:
6
+ value: wordpress
7
+ WORDPRESS_PROD_VERSION:
8
+ value: php7.4-fpm
9
+ WORDPRESS_DEV_VERSION:
10
+ value: php7.4
11
+ WORDPRESS_CLI_VERSION:
12
+ value: cli-php7.4
13
+ WORDPRESS_DB_NAME:
14
+ value: wordpress
15
+ WORDPRESS_TABLE_PREFIX:
16
+ value: wp_
17
+ WORDPRESS_DB_HOST:
18
+ value: mysql
19
+ WORDPRESS_DB_USER:
20
+ value: wordpress
21
+ WORDPRESS_DB_PASSWORD:
22
+ value: password
23
+ MARIADB_VERSION:
24
+ value: latest
25
+ MYSQL_ROOT_PASSWORD:
26
+ value: s3cretPassW0rd
27
+ MYSQL_DATA_DIR:
28
+ value: ./wordpress-sql
29
+ MYSQL_DUMP_DIR:
30
+ value: ./mysql-dumps
31
+ NGINX_VERSION:
32
+ value: latest
33
+ SERVER_NAME:
34
+ value: example.com
35
+ SERVER_ALT_NAME:
36
+ value: www.example.com
37
+ WP_CONTAINER_NAME:
38
+ value: wordpress
39
+ SECURE_SUBNET:
40
+ value: 192.168.0.0/16
41
+ NGINX_CONF_DIR:
42
+ value: ./config/nginx/cfg/
43
+ NGINX_TEMPLATE_DIR:
44
+ value: ./config/nginx/tpl/
45
+ WORDPRESS_DATA_DIR:
46
+ value: ./wordpress-src
47
+ WORDPRESS_UID:
48
+ value: 1000
49
+ WORDPRESS_GID:
50
+ value: 1000
51
+ WORDPRESS_USER:
52
+ value: app
53
+ WORDPRESS_GROUP:
54
+ value: app
55
+ CUSTOM_WORDPRESS_IMAGE:
56
+ value: my-wordpress
57
+
58
+ production:
59
+ ENV:
60
+ value: PROD
61
+
62
+ development:
63
+ ENV:
64
+ value: DEV
65
+
66
+ actions:
67
+ - directory 'stage_one', '.', @env
68
+ - copy_file 'stage_one/docker-compose-dev.yml', './docker-compose.yml'
69
+ - |
70
+ containers = ['wordpress', 'mysql', 'wordpress-cli', 'pma', 'nginx']
71
+ generator = Roro::CLI.new
72
+ generator.generate_mise
73
+ generator.generate_containers(*containers)
74
+ generator.generate_environments(@env)
75
+ generator.generate_keys
76
+ - run "sudo docker-compose up"
@@ -0,0 +1,36 @@
1
+ preface: Django is a high-level Python Web framework that encourages rapid development and clean, pragmatic design. Built by experienced developers, it takes care of much of the hassle of Web development, so you can focus on writing your app without needing to reinvent the wheel. It’s free and open source.
2
+ env:
3
+ base:
4
+ python_version:
5
+ name: Python version
6
+ value: 3
7
+ help: https://www.python.org/doc/versions/
8
+ POSTGRES_DB:
9
+ name: Postgres databasconfigurarbe name
10
+ value: postgres
11
+ help: https://www.postgresql.org/docs/9.0/manage-ag-createdb.html
12
+ POSTGRES_USER:
13
+ name: Postgres user name
14
+ value: postgres
15
+ help: https://www.postgresql.org/docs/8.0/user-manag.html#DATABASE-USERS
16
+ POSTGRES_PASSWORD:
17
+ name: Postgres password
18
+ value: password
19
+ help: https://www.postgresql.org/docs/8.0/sql-alteruser.html
20
+ app_name:
21
+ name: Then name of your application or project
22
+ value: unstoppable_django
23
+ help: https://www.forbes.com/sites/allbusiness/2016/10/23/12-tips-for-naming-your-startup-business/
24
+
25
+ actions:
26
+ - directory 'stage_one', '.', @env
27
+ - |
28
+ system "sudo docker-compose run web django-admin startproject \"#{@env[:base][:app_name][:value]}\" . &&
29
+ sudo chown -R $USER:$USER ."
30
+ - directory 'stage_two/settings.py', "./#{@env[:base][:app_name][:value]}/", @env
31
+ - |
32
+ system "sudo chown -R $USER:$USER . &&
33
+ docker-compose up --build"
34
+ - system "echo 'You may open your app at http://localhost:8000/'"
35
+
36
+
@@ -0,0 +1,7 @@
1
+ # syntax=docker/dockerfile:1
2
+ FROM python:<%= @env[:base][:python_version][:value] %>
3
+ ENV PYTHONUNBUFFERED=1
4
+ WORKDIR /code
5
+ COPY requirements.txt /code/
6
+ RUN pip install -r requirements.txt
7
+ COPY . /code/
@@ -0,0 +1,20 @@
1
+ version: "3"
2
+
3
+ services:
4
+ db:
5
+ image: postgres
6
+ volumes:
7
+ - ./data/db:/var/lib/postgresql/data
8
+ environment:
9
+ - POSTGRES_DB=<%= @env[:base][:POSTGRES_DB][:value] %>
10
+ - POSTGRES_USER=<%= @env[:base][:POSTGRES_USER][:value] %>
11
+ - POSTGRES_PASSWORD=<%= @env[:base][:POSTGRES_PASSWORD][:value] %>
12
+ web:
13
+ build: .
14
+ command: python manage.py runserver 0.0.0.0:8000
15
+ volumes:
16
+ - .:/code
17
+ ports:
18
+ - "8000:8000"
19
+ depends_on:
20
+ - db
@@ -0,0 +1,130 @@
1
+ """
2
+ Django settings for <%= @env[:base][:POSTGRES_DB][:value] %> project.
3
+
4
+ Generated by 'django-admin startproject' using Django 3.2.8.
5
+
6
+ For more information on this file, see
7
+ https://docs.djangoproject.com/en/3.2/topics/settings/
8
+
9
+ For the full list of settings and their values, see
10
+ https://docs.djangoproject.com/en/3.2/ref/settings/
11
+ """
12
+
13
+ from pathlib import Path
14
+
15
+ # Build paths inside the project like this: BASE_DIR / 'subdir'.
16
+ BASE_DIR = Path(__file__).resolve().parent.parent
17
+
18
+
19
+ # Quick-start development settings - unsuitable for production
20
+ # See https://docs.djangoproject.com/en/3.2/howto/deployment/checklist/
21
+
22
+ # SECURITY WARNING: keep the secret key used in production secret!
23
+ SECRET_KEY = 'django-insecure-p!ndt2*mek)30&60gxab$j1s$_j1$p3wedmeq2a)3j4$q+py%r'
24
+
25
+ # SECURITY WARNING: don't run with debug turned on in production!
26
+ DEBUG = True
27
+
28
+ ALLOWED_HOSTS = ['0.0.0.0']
29
+
30
+
31
+ # Application definition
32
+
33
+ INSTALLED_APPS = [
34
+ 'django.contrib.admin',
35
+ 'django.contrib.auth',
36
+ 'django.contrib.contenttypes',
37
+ 'django.contrib.sessions',
38
+ 'django.contrib.messages',
39
+ 'django.contrib.staticfiles',
40
+ ]
41
+
42
+ MIDDLEWARE = [
43
+ 'django.middleware.security.SecurityMiddleware',
44
+ 'django.contrib.sessions.middleware.SessionMiddleware',
45
+ 'django.middleware.common.CommonMiddleware',
46
+ 'django.middleware.csrf.CsrfViewMiddleware',
47
+ 'django.contrib.auth.middleware.AuthenticationMiddleware',
48
+ 'django.contrib.messages.middleware.MessageMiddleware',
49
+ 'django.middleware.clickjacking.XFrameOptionsMiddleware',
50
+ ]
51
+
52
+ ROOT_URLCONF = '<%= @env[:base][:POSTGRES_DB][:value] %>.urls'
53
+
54
+ TEMPLATES = [
55
+ {
56
+ 'BACKEND': 'django.template.backends.django.DjangoTemplates',
57
+ 'DIRS': [],
58
+ 'APP_DIRS': True,
59
+ 'OPTIONS': {
60
+ 'context_processors': [
61
+ 'django.template.context_processors.debug',
62
+ 'django.template.context_processors.request',
63
+ 'django.contrib.auth.context_processors.auth',
64
+ 'django.contrib.messages.context_processors.messages',
65
+ ],
66
+ },
67
+ },
68
+ ]
69
+
70
+ WSGI_APPLICATION = '<%= @env[:base][:POSTGRES_DB][:value] %>.wsgi.application'
71
+
72
+
73
+ # Database
74
+ # https://docs.djangoproject.com/en/3.2/ref/settings/#databases
75
+
76
+ DATABASES = {
77
+ 'default': {
78
+ 'ENGINE': 'django.db.backends.postgresql',
79
+ 'NAME': 'postgres',
80
+ 'USER': 'postgres',
81
+ 'PASSWORD': 'postgres',
82
+ 'HOST': 'db',
83
+ 'PORT': 5432,
84
+ }
85
+ }
86
+
87
+
88
+
89
+ # Password validation
90
+ # https://docs.djangoproject.com/en/3.2/ref/settings/#auth-password-validators
91
+
92
+ AUTH_PASSWORD_VALIDATORS = [
93
+ {
94
+ 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
95
+ },
96
+ {
97
+ 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
98
+ },
99
+ {
100
+ 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
101
+ },
102
+ {
103
+ 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
104
+ },
105
+ ]
106
+
107
+
108
+ # Internationalization
109
+ # https://docs.djangoproject.com/en/3.2/topics/i18n/
110
+
111
+ LANGUAGE_CODE = 'en-us'
112
+
113
+ TIME_ZONE = 'UTC'
114
+
115
+ USE_I18N = True
116
+
117
+ USE_L10N = True
118
+
119
+ USE_TZ = True
120
+
121
+
122
+ # Static files (CSS, JavaScript, Images)
123
+ # https://docs.djangoproject.com/en/3.2/howto/static-files/
124
+
125
+ STATIC_URL = '/static/'
126
+
127
+ # Default primary key field type
128
+ # https://docs.djangoproject.com/en/3.2/ref/settings/#default-auto-field
129
+
130
+ DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
@@ -0,0 +1,37 @@
1
+ require "test_helper"
2
+
3
+ describe 'Roro::CLI#rollon' do
4
+
5
+ # Given(:workbench) { }
6
+ # Given(:cli) { Roro::CLI.new }
7
+ # Given(:rollon) {
8
+ # stub_adventure
9
+ # stub_overrides
10
+ # quiet { cli.rollon }
11
+ # }
12
+ #
13
+ # context 'when fatsufodo django' do
14
+ # Given(:adventures) { %w[fatsufodo django] }
15
+ # Given(:overrides) { %w[] }
16
+ #
17
+ # context 'when default variables' do
18
+ # Given { rollon }
19
+ # Then { assert_file 'unstoppable_django/Dockerfile', /python:3/ }
20
+ # And { assert_file 'unstoppable_django/docker-compose.yml', /=password/ }
21
+ # end
22
+ #
23
+ # context 'when overrides variables' do
24
+ # When(:overrides) { %w[3.2 y y newpass] }
25
+ # Given { rollon }
26
+ # Then { assert_file 'unstoppable_django/Dockerfile', /python:3.2/ }
27
+ # And { assert_file 'unstoppable_django/docker-compose.yml', /=newpass/ }
28
+ # end
29
+ #
30
+ # context 'stage two' do
31
+ # When(:overrides) { %w[3.2 y y newpass] }
32
+ # Given { rollon }
33
+ # Then { assert_file 'unstoppable_django/Dockerfile', /python:3.2/ }
34
+ # And { assert_file 'unstoppable_django/docker-compose.yml', /=newpass/ }
35
+ # end
36
+ # end
37
+ end
@@ -0,0 +1,7 @@
1
+ preface: Fast, unopinionated, minimalist web framework for Node.js
2
+
3
+
4
+ actions:
5
+ - directory 'stage_one', '.', @env
6
+ - system "sudo docker-compose build"
7
+ - system "sudo docker-compose build"
@@ -0,0 +1,14 @@
1
+ FROM node:11-alpine
2
+
3
+ RUN mkdir -p /usr/src/app
4
+
5
+ WORKDIR /usr/src/app
6
+
7
+ COPY . .
8
+
9
+ RUN npm install
10
+
11
+ EXPOSE 3000
12
+
13
+ CMD ["npm", "run", "dev"]
14
+
@@ -0,0 +1,21 @@
1
+ version: '3'
2
+ services:
3
+ api:
4
+ image: sample-express-app
5
+ build: .
6
+ networks:
7
+ - backend
8
+ ports:
9
+ - "3000:3000"
10
+ volumes:
11
+ - ./:/usr/src/app
12
+
13
+ web-cli:
14
+ image: sample-express-app
15
+ networks:
16
+ - backend
17
+ command: sh
18
+
19
+ networks:
20
+ backend:
21
+ driver: bridge
@@ -0,0 +1,12 @@
1
+ preface: A dynamic, open source programming language with a focus on simplicity and productivity. It has an elegant
2
+ syntax that is natural to read and easy to write.
3
+
4
+ actions:
5
+ - directory 'stage_one', '.', @env
6
+ - system "docker-compose run --no-deps web rails new . --force --database=postgresql"
7
+ - system "sudo chown -R $USER:$USER ."
8
+ - template 'stage_two/database.yml.tt', './config/database.yml', @env
9
+ - system "docker-compose build"
10
+ - system "sudo chown -R $USER:$USER ."
11
+ - system "docker-compose run web rake db:create"
12
+ - system "docker-compose up"
@@ -0,0 +1,16 @@
1
+ # syntax=docker/dockerfile:1
2
+ FROM ruby:2.5
3
+ RUN apt-get update -qq && apt-get install -y nodejs postgresql-client
4
+ WORKDIR /myapp
5
+ COPY Gemfile /myapp/Gemfile
6
+ COPY Gemfile.lock /myapp/Gemfile.lock
7
+ RUN bundle install
8
+
9
+ # Add a script to be executed every time the container starts.
10
+ COPY entrypoint.sh /usr/bin/
11
+ RUN chmod +x /usr/bin/entrypoint.sh
12
+ ENTRYPOINT ["entrypoint.sh"]
13
+ EXPOSE 3000
14
+
15
+ # Configure the main process to run when running the image
16
+ CMD ["rails", "server", "-b", "0.0.0.0"]
@@ -0,0 +1,2 @@
1
+ source 'https://rubygems.org'
2
+ gem 'rails', '~>5'
@@ -0,0 +1,17 @@
1
+ version: "3"
2
+ services:
3
+ db:
4
+ image: postgres
5
+ volumes:
6
+ - ./tmp/db:/var/lib/postgresql/data
7
+ environment:
8
+ POSTGRES_PASSWORD: password
9
+ web:
10
+ build: .
11
+ command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
12
+ volumes:
13
+ - .:/myapp
14
+ ports:
15
+ - "3000:3000"
16
+ depends_on:
17
+ - db
@@ -0,0 +1,8 @@
1
+ #!/bin/bash
2
+ set -e
3
+
4
+ # Remove a potentially pre-existing server.pid for Rails.
5
+ rm -f /myapp/tmp/pids/server.pid
6
+
7
+ # Then exec the container's main process (what's set as CMD in the Dockerfile).
8
+ exec "$@"
@@ -0,0 +1,16 @@
1
+ default: &default
2
+ adapter: postgresql
3
+ encoding: unicode
4
+ host: db
5
+ username: postgres
6
+ password: password
7
+ pool: 5
8
+
9
+ development:
10
+ <<: *default
11
+ database: myapp_development
12
+
13
+
14
+ test:
15
+ <<: *default
16
+ database: myapp_test
@@ -0,0 +1,22 @@
1
+ #!/bin/zsh --login
2
+
3
+ set -e
4
+ set -a
5
+ DEFAULT_BRANCH='development'
6
+
7
+ bundle_install () {
8
+ REPO=${1}
9
+ BRANCH=${2:-$DEFAULT_BRANCH}
10
+
11
+ cd "${WORKBENCH}/${REPO}"
12
+ rvm_ruby_and_gemset_use "${REPO}"
13
+
14
+ pretty_echo "Checking out git branch: " "${BRANCH}..."
15
+ pretty_echo "Bundling gems in: " "${WORKBENCH}/${REPO}"
16
+ pretty_echo "Git branch: " "$(git status)"
17
+ pretty_echo "Bundling with: " "${RORO_RVM_RUBY_AND_GEMSET}"
18
+ pretty_echo "Current directory: " "${PWD}"
19
+ pretty_echo "Current directory: " "${REPO}"
20
+ rvm_ruby_and_gemset_create "${REPO}" gem install bundler
21
+ bundle install
22
+ }
@@ -0,0 +1,21 @@
1
+ #!/bin/zsh --login
2
+
3
+ DEFAULT_BRANCH='development'
4
+
5
+ update_repo () {
6
+ REPO=${1}
7
+ BRANCH=${2:-$DEFAULT_BRANCH}
8
+
9
+ cd $WORKBENCH/$REPO
10
+ pretty_echo "Updating ${REPO}..."
11
+ pretty_echo "checking out ${BRANCH}..." " "
12
+ git checkout ${BRANCH}
13
+ pretty_echo "fetching origin..."
14
+ git fetch origin
15
+ pretty_echo "pulling latest ${BRANCH} for ${REPO} from origin..."
16
+ git pull origin $BRANCH
17
+ git submodule init .
18
+
19
+ SUCCESS+=("Successfully updated ${green}$REPO${default}, branch: ${BRANCH}")
20
+ }
21
+
@@ -0,0 +1,38 @@
1
+ #!/bin/zsh --login
2
+
3
+ set -e
4
+ set -a
5
+
6
+ rvm_ruby_and_gemset_set() {
7
+ case $1 in
8
+ api)
9
+ RORO_RVM_RUBY="jruby-9.2.9.0"
10
+ RORO_RVM_GEMSET="api"
11
+ ;;
12
+ client-api)
13
+ RORO_RVM_RUBY="ruby-3.0.1"
14
+ RORO_RVM_GEMSET="client-api"
15
+ ;;
16
+ public-api)
17
+ RORO_RVM_RUBY="2.7.2"
18
+ RORO_RVM_GEMSET="public-api"
19
+ ;;
20
+ tokenizer-rails)
21
+ RORO_RVM_RUBY="2.6.5"
22
+ RORO_RVM_GEMSET="tokenizer-rails"
23
+ ;;
24
+ esac
25
+
26
+ RORO_RVM_RUBY_AND_GEMSET="${RORO_RVM_RUBY}@${RORO_RVM_GEMSET}"
27
+ }
28
+
29
+ rvm_ruby_and_gemset_use() {
30
+ rvm_ruby_and_gemset_set $1
31
+ rvm use "${RORO_RVM_RUBY_AND_GEMSET}" --create
32
+ }
33
+
34
+ rvm_ruby_and_gemset_create() {
35
+ rvm_ruby_and_gemset_set $1
36
+ rvm install "${RORO_RVM_RUBY}"
37
+ rvm use "${RORO_RVM_RUBY_AND_GEMSET}" --create
38
+ }
@@ -0,0 +1,53 @@
1
+ #!/bin/zsh
2
+
3
+ echo $DEV_ENV
4
+ source_environment() {
5
+ if [ -n "$DEV_ENV" ]; then
6
+ ENV_SOURCED_FROM=RubyMine
7
+ else
8
+ ENV_SOURCED_FROM=${ENVDIR}/current.env
9
+ . "${ENV_SOURCED_FROM}"
10
+ fi
11
+ }
12
+
13
+
14
+ pretty_echo() {
15
+ echo " ${DEFAULT_COLOR}${1}"
16
+ echo "\t${GREEN}${2}${DEFAULT_COLOR}"
17
+ }
18
+
19
+ include() {
20
+ FILE="${RORODIR}/${1}"
21
+ if [ -f $FILE ]; then
22
+ pretty_echo "Sourcing:" "${GREEN}${FILE}" >&2
23
+ source $FILE
24
+ else
25
+ pretty_echo "No override at:" "${YELLOW}${FILE}" >&2
26
+ fi
27
+ }
28
+
29
+ confirm_if_overwrite () {
30
+ DIRECTORY="${PWD}/${1}"
31
+ if test -d "${DIRECTORY}"; then
32
+ echo "${DIRECTORY} exists."
33
+ read -p "Copy over existing ${DIRECTORY} directory? " answer
34
+ case ${answer:0:1} in y|Y )
35
+ mkdir -p backup
36
+ mv ${DIRECTORY} ./backup/
37
+ ;;
38
+ * )
39
+ ;;
40
+ esac
41
+ fi
42
+ }
43
+
44
+ yarn_install() {
45
+ REPO=${1}
46
+
47
+ cd "${WORKBENCH}/${REPO}"
48
+ pretty_echo "Initializing any git submodules..."
49
+ git submodule init .
50
+ pretty_echo "Running yarn install in:" "${PWD}"
51
+ yarn install
52
+ cd ..
53
+ }
@@ -0,0 +1,6 @@
1
+ #!/bin/zsh --login
2
+
3
+ source "${SCRIPTDIR}"/base/bundler.sh
4
+ source "${SCRIPTDIR}"/base/rvm.sh
5
+ source "${SCRIPTDIR}"/base/git.sh
6
+ source "${SCRIPTDIR}"/base/utilities.sh
@@ -0,0 +1,14 @@
1
+ #!/bin/zsh
2
+
3
+ DEFAULT_IDEA_FILE=bench
4
+
5
+ IDEA_FILE=${1:-$DEFAULT_IDEA_FILE}
6
+
7
+ pretty_echo "Copying RubyMine .idea file: " "${IDEA_FILE}"
8
+
9
+ confirm_if_overwrite .idea
10
+
11
+ mkdir -p .idea
12
+
13
+ cp -r ./roro/ideas/${IDEA_FILE}/runConfigurations .idea/
14
+