roro 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (235) hide show
  1. checksums.yaml +5 -5
  2. data/.circleci/config.yml +99 -0
  3. data/.circleci/setup-gem-credentials.sh +3 -0
  4. data/.gitignore +7 -1
  5. data/.ruby-gemset +1 -0
  6. data/.ruby-version +1 -0
  7. data/Gemfile.lock +24 -10
  8. data/Guardfile +46 -0
  9. data/bin/roro +5 -0
  10. data/docker/env_files/.keep +0 -0
  11. data/docker/env_files/circleci.env.enc +2 -0
  12. data/docker/keys/.keep +0 -0
  13. data/lib/roro.rb +2 -0
  14. data/lib/roro/cli.rb +18 -0
  15. data/lib/roro/cli/base.rb +124 -0
  16. data/lib/roro/cli/dockerize.rb +30 -0
  17. data/lib/roro/cli/expose.rb +13 -0
  18. data/lib/roro/cli/generate_keys.rb +79 -0
  19. data/lib/roro/cli/greenfield.rb +37 -0
  20. data/lib/roro/cli/obfuscate.rb +20 -0
  21. data/lib/roro/cli/rollon.rb +21 -0
  22. data/lib/roro/cli/templates/Gemfile.lock +0 -0
  23. data/lib/roro/cli/templates/Guardfile +81 -0
  24. data/lib/roro/cli/templates/circleci/Rakefile +4 -0
  25. data/lib/roro/cli/templates/circleci/config.job-example.yml +33 -0
  26. data/lib/roro/cli/templates/circleci/config.yml +69 -0
  27. data/lib/roro/cli/templates/circleci/config.yml.workflow-example +62 -0
  28. data/lib/roro/cli/templates/circleci/deploy.rake +127 -0
  29. data/lib/roro/cli/templates/config.yml +71 -0
  30. data/lib/roro/cli/templates/config/database.yml +20 -0
  31. data/lib/roro/cli/templates/docker-compose.yml +51 -0
  32. data/lib/roro/cli/templates/docker/containers/app/Dockerfile.tt +12 -0
  33. data/lib/roro/cli/templates/docker/containers/database/.keep +0 -0
  34. data/lib/roro/cli/templates/docker/containers/web/Dockerfile.tt +18 -0
  35. data/lib/roro/cli/templates/docker/containers/web/app.conf.tt +23 -0
  36. data/lib/roro/cli/templates/docker/env_files/.keep +0 -0
  37. data/lib/roro/cli/templates/docker/keys/.keep +0 -0
  38. data/lib/roro/cli/templates/docker/overrides/circleci.yml.tt +19 -0
  39. data/lib/roro/cli/templates/docker/overrides/production.yml.tt +26 -0
  40. data/lib/roro/cli/templates/docker/web/Dockerfile +20 -0
  41. data/lib/roro/cli/templates/docker/web/app.conf +23 -0
  42. data/lib/roro/cli/templates/gitignore +27 -0
  43. data/lib/roro/cli/templates/greenfield/Dockerfile +8 -0
  44. data/lib/roro/cli/templates/greenfield/Gemfile +2 -0
  45. data/lib/roro/cli/templates/greenfield/Gemfile.lock +0 -0
  46. data/lib/roro/cli/templates/greenfield/config/database.yml.example +16 -0
  47. data/lib/roro/cli/templates/greenfield/docker-compose.yml +15 -0
  48. data/lib/roro/cli/templates/lib/tasks/deploy.rake +126 -0
  49. data/lib/roro/version.rb +1 -1
  50. data/lib/tasks/deploy.rake +126 -0
  51. data/roro.gemspec +9 -2
  52. data/test_apps/dummy/.gitignore +27 -0
  53. data/test_apps/dummy/Gemfile +61 -0
  54. data/test_apps/dummy/README.md +24 -0
  55. data/test_apps/dummy/Rakefile +6 -0
  56. data/test_apps/dummy/app/assets/config/manifest.js +3 -0
  57. data/test_apps/dummy/app/assets/images/.keep +0 -0
  58. data/test_apps/dummy/app/assets/javascripts/application.js +16 -0
  59. data/test_apps/dummy/app/assets/javascripts/cable.js +13 -0
  60. data/test_apps/dummy/app/assets/javascripts/channels/.keep +0 -0
  61. data/test_apps/dummy/app/assets/stylesheets/application.css +15 -0
  62. data/test_apps/dummy/app/channels/application_cable/channel.rb +4 -0
  63. data/test_apps/dummy/app/channels/application_cable/connection.rb +4 -0
  64. data/test_apps/dummy/app/controllers/application_controller.rb +2 -0
  65. data/test_apps/dummy/app/controllers/concerns/.keep +0 -0
  66. data/test_apps/dummy/app/helpers/application_helper.rb +2 -0
  67. data/test_apps/dummy/app/jobs/application_job.rb +2 -0
  68. data/test_apps/dummy/app/mailers/application_mailer.rb +4 -0
  69. data/test_apps/dummy/app/models/application_record.rb +3 -0
  70. data/test_apps/dummy/app/models/concerns/.keep +0 -0
  71. data/test_apps/dummy/app/views/layouts/application.html.erb +15 -0
  72. data/test_apps/dummy/app/views/layouts/mailer.html.erb +13 -0
  73. data/test_apps/dummy/app/views/layouts/mailer.text.erb +1 -0
  74. data/test_apps/dummy/bin/bundle +3 -0
  75. data/test_apps/dummy/bin/rails +4 -0
  76. data/test_apps/dummy/bin/rake +4 -0
  77. data/test_apps/dummy/bin/setup +36 -0
  78. data/test_apps/dummy/bin/update +31 -0
  79. data/test_apps/dummy/bin/yarn +11 -0
  80. data/test_apps/dummy/config.ru +5 -0
  81. data/test_apps/dummy/config/application.rb +19 -0
  82. data/test_apps/dummy/config/boot.rb +4 -0
  83. data/test_apps/dummy/config/cable.yml +10 -0
  84. data/test_apps/dummy/config/credentials.yml.enc +1 -0
  85. data/test_apps/dummy/config/database.yml +85 -0
  86. data/test_apps/dummy/config/environment.rb +5 -0
  87. data/test_apps/dummy/config/environments/development.rb +61 -0
  88. data/test_apps/dummy/config/environments/production.rb +94 -0
  89. data/test_apps/dummy/config/environments/test.rb +46 -0
  90. data/test_apps/dummy/config/initializers/application_controller_renderer.rb +8 -0
  91. data/test_apps/dummy/config/initializers/assets.rb +14 -0
  92. data/test_apps/dummy/config/initializers/backtrace_silencers.rb +7 -0
  93. data/test_apps/dummy/config/initializers/content_security_policy.rb +25 -0
  94. data/test_apps/dummy/config/initializers/cookies_serializer.rb +5 -0
  95. data/test_apps/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  96. data/test_apps/dummy/config/initializers/inflections.rb +16 -0
  97. data/test_apps/dummy/config/initializers/mime_types.rb +4 -0
  98. data/test_apps/dummy/config/initializers/wrap_parameters.rb +14 -0
  99. data/test_apps/dummy/config/locales/en.yml +33 -0
  100. data/test_apps/dummy/config/puma.rb +34 -0
  101. data/test_apps/dummy/config/routes.rb +3 -0
  102. data/test_apps/dummy/config/spring.rb +6 -0
  103. data/test_apps/dummy/config/storage.yml +34 -0
  104. data/test_apps/dummy/db/seeds.rb +7 -0
  105. data/test_apps/dummy/lib/assets/.keep +0 -0
  106. data/test_apps/dummy/lib/tasks/.keep +0 -0
  107. data/test_apps/dummy/log/.keep +0 -0
  108. data/test_apps/dummy/package.json +5 -0
  109. data/test_apps/dummy/public/404.html +67 -0
  110. data/test_apps/dummy/public/422.html +67 -0
  111. data/test_apps/dummy/public/500.html +66 -0
  112. data/test_apps/dummy/public/apple-touch-icon-precomposed.png +0 -0
  113. data/test_apps/dummy/public/apple-touch-icon.png +0 -0
  114. data/test_apps/dummy/public/favicon.ico +0 -0
  115. data/test_apps/dummy/public/robots.txt +1 -0
  116. data/test_apps/dummy/storage/.keep +0 -0
  117. data/test_apps/dummy/test/application_system_test_case.rb +5 -0
  118. data/test_apps/dummy/test/controllers/.keep +0 -0
  119. data/test_apps/dummy/test/fixtures/.keep +0 -0
  120. data/test_apps/dummy/test/fixtures/files/.keep +0 -0
  121. data/test_apps/dummy/test/helpers/.keep +0 -0
  122. data/test_apps/dummy/test/integration/.keep +0 -0
  123. data/test_apps/dummy/test/mailers/.keep +0 -0
  124. data/test_apps/dummy/test/models/.keep +0 -0
  125. data/test_apps/dummy/test/system/.keep +0 -0
  126. data/test_apps/dummy/test/test_helper.rb +10 -0
  127. data/test_apps/dummy/vendor/.keep +0 -0
  128. data/test_apps/dummy_roro/.circleci/Rakefile +4 -0
  129. data/test_apps/dummy_roro/.circleci/config.job-example.yml +33 -0
  130. data/test_apps/dummy_roro/.circleci/config.yml +69 -0
  131. data/test_apps/dummy_roro/.circleci/config.yml.workflow-example +62 -0
  132. data/test_apps/dummy_roro/.circleci/deploy.rake +127 -0
  133. data/test_apps/dummy_roro/.gitignore +27 -0
  134. data/test_apps/dummy_roro/Gemfile +64 -0
  135. data/test_apps/dummy_roro/README.md +24 -0
  136. data/test_apps/dummy_roro/Rakefile +6 -0
  137. data/test_apps/dummy_roro/app/assets/config/manifest.js +3 -0
  138. data/test_apps/dummy_roro/app/assets/images/.keep +0 -0
  139. data/test_apps/dummy_roro/app/assets/javascripts/application.js +16 -0
  140. data/test_apps/dummy_roro/app/assets/javascripts/cable.js +13 -0
  141. data/test_apps/dummy_roro/app/assets/javascripts/channels/.keep +0 -0
  142. data/test_apps/dummy_roro/app/assets/stylesheets/application.css +15 -0
  143. data/test_apps/dummy_roro/app/channels/application_cable/channel.rb +4 -0
  144. data/test_apps/dummy_roro/app/channels/application_cable/connection.rb +4 -0
  145. data/test_apps/dummy_roro/app/controllers/application_controller.rb +2 -0
  146. data/test_apps/dummy_roro/app/controllers/concerns/.keep +0 -0
  147. data/test_apps/dummy_roro/app/helpers/application_helper.rb +2 -0
  148. data/test_apps/dummy_roro/app/jobs/application_job.rb +2 -0
  149. data/test_apps/dummy_roro/app/mailers/application_mailer.rb +4 -0
  150. data/test_apps/dummy_roro/app/models/application_record.rb +3 -0
  151. data/test_apps/dummy_roro/app/models/concerns/.keep +0 -0
  152. data/test_apps/dummy_roro/app/views/layouts/application.html.erb +15 -0
  153. data/test_apps/dummy_roro/app/views/layouts/mailer.html.erb +13 -0
  154. data/test_apps/dummy_roro/app/views/layouts/mailer.text.erb +1 -0
  155. data/test_apps/dummy_roro/bin/bundle +3 -0
  156. data/test_apps/dummy_roro/bin/rails +4 -0
  157. data/test_apps/dummy_roro/bin/rake +4 -0
  158. data/test_apps/dummy_roro/bin/setup +36 -0
  159. data/test_apps/dummy_roro/bin/update +31 -0
  160. data/test_apps/dummy_roro/bin/yarn +11 -0
  161. data/test_apps/dummy_roro/config.ru +5 -0
  162. data/test_apps/dummy_roro/config/application.rb +19 -0
  163. data/test_apps/dummy_roro/config/boot.rb +4 -0
  164. data/test_apps/dummy_roro/config/cable.yml +10 -0
  165. data/test_apps/dummy_roro/config/credentials.yml.enc +1 -0
  166. data/test_apps/dummy_roro/config/database.yml +20 -0
  167. data/test_apps/dummy_roro/config/environment.rb +5 -0
  168. data/test_apps/dummy_roro/config/environments/development.rb +61 -0
  169. data/test_apps/dummy_roro/config/environments/production.rb +94 -0
  170. data/test_apps/dummy_roro/config/environments/test.rb +46 -0
  171. data/test_apps/dummy_roro/config/initializers/application_controller_renderer.rb +8 -0
  172. data/test_apps/dummy_roro/config/initializers/assets.rb +14 -0
  173. data/test_apps/dummy_roro/config/initializers/backtrace_silencers.rb +7 -0
  174. data/test_apps/dummy_roro/config/initializers/content_security_policy.rb +25 -0
  175. data/test_apps/dummy_roro/config/initializers/cookies_serializer.rb +5 -0
  176. data/test_apps/dummy_roro/config/initializers/filter_parameter_logging.rb +4 -0
  177. data/test_apps/dummy_roro/config/initializers/inflections.rb +16 -0
  178. data/test_apps/dummy_roro/config/initializers/mime_types.rb +4 -0
  179. data/test_apps/dummy_roro/config/initializers/wrap_parameters.rb +14 -0
  180. data/test_apps/dummy_roro/config/locales/en.yml +33 -0
  181. data/test_apps/dummy_roro/config/puma.rb +34 -0
  182. data/test_apps/dummy_roro/config/routes.rb +3 -0
  183. data/test_apps/dummy_roro/config/spring.rb +6 -0
  184. data/test_apps/dummy_roro/config/storage.yml +34 -0
  185. data/test_apps/dummy_roro/db/seeds.rb +7 -0
  186. data/test_apps/dummy_roro/docker-compose.yml +51 -0
  187. data/test_apps/dummy_roro/docker/containers/app/Dockerfile +12 -0
  188. data/test_apps/dummy_roro/docker/containers/app/circleci.env +2 -0
  189. data/test_apps/dummy_roro/docker/containers/app/development.env +2 -0
  190. data/test_apps/dummy_roro/docker/containers/app/production.env +2 -0
  191. data/test_apps/dummy_roro/docker/containers/app/staging.env +2 -0
  192. data/test_apps/dummy_roro/docker/containers/database/.keep +0 -0
  193. data/test_apps/dummy_roro/docker/containers/database/circleci.env +3 -0
  194. data/test_apps/dummy_roro/docker/containers/database/development.env +3 -0
  195. data/test_apps/dummy_roro/docker/containers/database/production.env +3 -0
  196. data/test_apps/dummy_roro/docker/containers/database/staging.env +3 -0
  197. data/test_apps/dummy_roro/docker/containers/web/Dockerfile +18 -0
  198. data/test_apps/dummy_roro/docker/containers/web/app.conf +23 -0
  199. data/test_apps/dummy_roro/docker/containers/web/circleci.env +1 -0
  200. data/test_apps/dummy_roro/docker/containers/web/development.env +1 -0
  201. data/test_apps/dummy_roro/docker/containers/web/production.env +1 -0
  202. data/test_apps/dummy_roro/docker/containers/web/staging.env +1 -0
  203. data/test_apps/dummy_roro/docker/env_files/circleci.env +12 -0
  204. data/test_apps/dummy_roro/docker/env_files/circleci.env.enc +14 -0
  205. data/test_apps/dummy_roro/docker/env_files/production.env +2 -0
  206. data/test_apps/dummy_roro/docker/env_files/production.env.enc +2 -0
  207. data/test_apps/dummy_roro/docker/keys/.keep +0 -0
  208. data/test_apps/dummy_roro/docker/overrides/circleci.yml +19 -0
  209. data/test_apps/dummy_roro/docker/overrides/production.yml +26 -0
  210. data/test_apps/dummy_roro/lib/assets/.keep +0 -0
  211. data/test_apps/dummy_roro/lib/tasks/.keep +0 -0
  212. data/test_apps/dummy_roro/lib/tasks/deploy.rake +126 -0
  213. data/test_apps/dummy_roro/log/.keep +0 -0
  214. data/test_apps/dummy_roro/package.json +5 -0
  215. data/test_apps/dummy_roro/public/404.html +67 -0
  216. data/test_apps/dummy_roro/public/422.html +67 -0
  217. data/test_apps/dummy_roro/public/500.html +66 -0
  218. data/test_apps/dummy_roro/public/apple-touch-icon-precomposed.png +0 -0
  219. data/test_apps/dummy_roro/public/apple-touch-icon.png +0 -0
  220. data/test_apps/dummy_roro/public/favicon.ico +0 -0
  221. data/test_apps/dummy_roro/public/robots.txt +1 -0
  222. data/test_apps/dummy_roro/storage/.keep +0 -0
  223. data/test_apps/dummy_roro/test/application_system_test_case.rb +5 -0
  224. data/test_apps/dummy_roro/test/controllers/.keep +0 -0
  225. data/test_apps/dummy_roro/test/fixtures/.keep +0 -0
  226. data/test_apps/dummy_roro/test/fixtures/files/.keep +0 -0
  227. data/test_apps/dummy_roro/test/helpers/.keep +0 -0
  228. data/test_apps/dummy_roro/test/integration/.keep +0 -0
  229. data/test_apps/dummy_roro/test/mailers/.keep +0 -0
  230. data/test_apps/dummy_roro/test/models/.keep +0 -0
  231. data/test_apps/dummy_roro/test/system/.keep +0 -0
  232. data/test_apps/dummy_roro/test/test_helper.rb +10 -0
  233. data/test_apps/dummy_roro/vendor/.keep +0 -0
  234. data/test_apps/greenfield/.keep +0 -0
  235. metadata +292 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA256:
3
- metadata.gz: 27679c26596f45916f6f2009f9cad23d0c4b43b0d4d5a1fb7158723631363f2e
4
- data.tar.gz: 9d2fc410d229f3773da1062dbcca807e2abd3c6ae2fcdfbcb83804ceb1dfa679
2
+ SHA1:
3
+ metadata.gz: 8785a69852a94916710e3a3e11735e850ca39549
4
+ data.tar.gz: b26a42ce7df419812da00458b851b3e7877b3ccd
5
5
  SHA512:
6
- metadata.gz: 5d99d54bbe77d32d9a814c3636281d5b2d87e3954defd5b8f62a3b8a4ed4e4c50e9aa9ccdf6390242cd4cd06586e0bd74a11b99483f5c7b32ec402bc91b6af9a
7
- data.tar.gz: 5c5480add5034524fbf57e8ef35d1c34d0e2b0e5e816771a2cf8d024ec99d6b8267d64647a09f5724c690dfb9e8364d4c65d2494c28d2f370b7486276c773871
6
+ metadata.gz: 545508ba70759f7d51e93c17f22e7c85b6c05353051afa3c2d7bbef3856606853c6b25247fbfbdfcbaac2cb1a2e60163a4b989dcefa12bfad4702b198a50a968
7
+ data.tar.gz: 3b323886a568f6ae9e18ea7e8ad8f556584d73223600b8ed2ce05dbcd73bb3d66e9c5d9fe80ef440688756fa68e9b1802843fa59d6567f79bcee93239d1616f8
@@ -0,0 +1,99 @@
1
+ defaults: &defaults
2
+ working_directory: /repo
3
+
4
+ version: 2
5
+
6
+ jobs:
7
+ build:
8
+ docker:
9
+ - image: circleci/ruby:2.5.3
10
+ steps:
11
+ - checkout
12
+
13
+ test:
14
+ docker:
15
+ - image: circleci/ruby:2.5.3
16
+ steps:
17
+ - checkout
18
+ - run: gem install bundler
19
+ - run: bundle
20
+ - run: rake install
21
+ - run: mkdir tmp
22
+ - run: rake test
23
+
24
+ build-greenfield:
25
+ machine: true
26
+ steps:
27
+ - checkout
28
+ - run: bundle
29
+ - run: rake install
30
+ - run:
31
+ name: Greenfield
32
+ working_directory: sooperdooper
33
+ command: |
34
+ bundle
35
+ sleep 2s
36
+ rake install
37
+ sleep 5s
38
+ roro greenfield
39
+ sleep 5s
40
+ curl -Is localhost:3000 | head -n 1
41
+
42
+ build-rollon:
43
+ machine: true
44
+ steps:
45
+ - checkout
46
+ - run: bundle
47
+ - run: rake install
48
+ - run:
49
+ name: Rollon
50
+ working_directory: test_apps/dummy
51
+ command: |
52
+ roro rollon
53
+ docker-compose up -d
54
+ docker-compose exec app bin/rails db:create
55
+ docker-compose exec app rake test
56
+ curl -Is localhost:3000 | head -n 1
57
+
58
+ release:
59
+ machine: true
60
+ steps:
61
+ - checkout
62
+ - run: printenv
63
+ - run: bundle
64
+ - run: rake install
65
+ - run: roro expose
66
+ - run: echo 'source docker/env_files/circleci.env' >> $BASH_ENV
67
+ - run: bash .circleci/setup-gem-credentials.sh
68
+ - run: gem install gem-release
69
+ - run: gem release
70
+
71
+
72
+ workflows:
73
+ version: 2
74
+ build-and-deploy:
75
+ jobs:
76
+ - build
77
+ - test:
78
+ filters:
79
+ branches:
80
+ ignore:
81
+ - /build-.*/
82
+ - release
83
+ - build-greenfield:
84
+ filters:
85
+ branches:
86
+ only:
87
+ - build-greenfield
88
+ - master
89
+ - build-rollon:
90
+ filters:
91
+ branches:
92
+ only:
93
+ - build-rollon
94
+ - master
95
+ - release:
96
+ filters:
97
+ branches:
98
+ only:
99
+ - release
@@ -0,0 +1,3 @@
1
+ mkdir ~/.gem
2
+ echo -e "---\r\n:rubygems_api_key: $RUBYGEMS_API_KEY" > ~/.gem/credentials
3
+ chmod 0600 /home/circleci/.gem/credentials
data/.gitignore CHANGED
@@ -5,4 +5,10 @@
5
5
  /doc/
6
6
  /pkg/
7
7
  /spec/reports/
8
- /tmp/
8
+ tmp/
9
+ !tmp/.keep
10
+ greenfield/**/*
11
+ .byebug_history
12
+
13
+ docker/**/*.env
14
+ docker/**/*.key
@@ -0,0 +1 @@
1
+ roro
@@ -0,0 +1 @@
1
+ 2.5.3
@@ -1,7 +1,10 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- roro (0.1.0)
4
+ roro (0.1.1)
5
+ handsome_fencer-crypto (= 0.1.4)
6
+ sshkit
7
+ thor
5
8
 
6
9
  GEM
7
10
  remote: https://rubygems.org/
@@ -27,13 +30,14 @@ GEM
27
30
  addressable (2.5.2)
28
31
  public_suffix (>= 2.0.2, < 4.0)
29
32
  builder (3.2.3)
33
+ byebug (10.0.2)
30
34
  coderay (1.1.2)
31
- concurrent-ruby (1.1.3)
35
+ concurrent-ruby (1.1.4)
32
36
  crass (1.0.4)
33
37
  em-websocket (0.5.1)
34
38
  eventmachine (>= 0.12.9)
35
39
  http_parser.rb (~> 0.6.0)
36
- erubi (1.7.1)
40
+ erubi (1.8.0)
37
41
  eventmachine (1.2.7)
38
42
  ffi (1.9.25)
39
43
  formatador (0.2.5)
@@ -57,6 +61,9 @@ GEM
57
61
  guard-minitest (2.4.6)
58
62
  guard-compat (~> 1.2)
59
63
  minitest (>= 3.0)
64
+ handsome_fencer-crypto (0.1.4)
65
+ guard
66
+ guard-minitest
60
67
  handsome_fencer-test (0.1.1)
61
68
  guard
62
69
  guard-livereload
@@ -70,7 +77,7 @@ GEM
70
77
  shoulda-matchers
71
78
  thor
72
79
  http_parser.rb (0.6.0)
73
- i18n (1.2.0)
80
+ i18n (1.3.0)
74
81
  concurrent-ruby (~> 1.0)
75
82
  launchy (2.4.3)
76
83
  addressable (~> 2.3)
@@ -83,7 +90,7 @@ GEM
83
90
  nokogiri (>= 1.5.9)
84
91
  lumberjack (1.0.13)
85
92
  method_source (0.9.2)
86
- mini_portile2 (2.3.0)
93
+ mini_portile2 (2.4.0)
87
94
  minitest (5.11.3)
88
95
  minitest-given (3.8.0)
89
96
  given_core (= 3.8.0)
@@ -95,8 +102,11 @@ GEM
95
102
  railties (~> 5.0)
96
103
  multi_json (1.13.1)
97
104
  nenv (0.3.0)
98
- nokogiri (1.8.5)
99
- mini_portile2 (~> 2.3.0)
105
+ net-scp (1.2.1)
106
+ net-ssh (>= 2.6.5)
107
+ net-ssh (5.1.0)
108
+ nokogiri (1.9.1)
109
+ mini_portile2 (~> 2.4.0)
100
110
  notiffany (0.1.1)
101
111
  nenv (~> 0.1)
102
112
  shellany (~> 0.0)
@@ -122,8 +132,8 @@ GEM
122
132
  thor (>= 0.19.0, < 2.0)
123
133
  rake (10.5.0)
124
134
  rb-fsevent (0.10.3)
125
- rb-inotify (0.9.10)
126
- ffi (>= 0.5.0, < 2)
135
+ rb-inotify (0.10.0)
136
+ ffi (~> 1.0)
127
137
  ruby_dep (1.5.0)
128
138
  shellany (0.0.1)
129
139
  shoulda (3.6.0)
@@ -133,6 +143,9 @@ GEM
133
143
  shoulda-matchers (3.1.2)
134
144
  activesupport (>= 4.0.0)
135
145
  sorcerer (1.0.2)
146
+ sshkit (1.18.0)
147
+ net-scp (>= 1.1.2)
148
+ net-ssh (>= 2.8.0)
136
149
  thor (0.20.3)
137
150
  thread_safe (0.3.6)
138
151
  tzinfo (1.2.5)
@@ -143,9 +156,10 @@ PLATFORMS
143
156
 
144
157
  DEPENDENCIES
145
158
  bundler (~> 1.17)
159
+ byebug
146
160
  handsome_fencer-test
147
161
  rake (~> 10.0)
148
162
  roro!
149
163
 
150
164
  BUNDLED WITH
151
- 1.17.2
165
+ 1.17.3
@@ -0,0 +1,46 @@
1
+ # A sample Guardfile
2
+ # More info at https://github.com/guard/guard#readme
3
+
4
+ ## Uncomment and set this to only include directories you want to watch
5
+ # directories %w(app lib config test spec features) \
6
+ # .select{|d| Dir.exist?(d) ? d : UI.warning("Directory #{d} does not exist")}
7
+
8
+ ## Note: if you are using the `directories` clause above and you are not
9
+ ## watching the project directory ('.'), then you will want to move
10
+ ## the Guardfile to a watched dir and symlink it back, e.g.
11
+ #
12
+ # $ mkdir config
13
+ # $ mv Guardfile config/
14
+ # $ ln -s config/Guardfile .
15
+ #
16
+ # and, you'll have to watch "config/Guardfile" instead of "Guardfile"
17
+
18
+
19
+ guard :minitest, cli: '' do
20
+ # with Minitest::Unit
21
+ watch(%r{^test/(.*)\/?test_(.*)\.rb$})
22
+ watch(%r{^test/(.*)\/?(.*)_test\.rb$})
23
+ watch(%r{^lib/(.*/)?([^/]+)\.rb$}) { |m| "test/#{m[1]}test_#{m[2]}.rb" }
24
+ watch(%r{^lib/(.*/)?([^/]+)\.rb$}) { 'test' }
25
+ watch(%r{^test/test_helper\.rb$}) { 'test' }
26
+ watch(%r{^test/thor_helper\.rb$}) { 'test' }
27
+
28
+ # with Minitest::Spec
29
+ # watch(%r{^spec/(.*)_spec\.rb$})
30
+ # watch(%r{^lib/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
31
+ # watch(%r{^spec/spec_helper\.rb$}) { 'spec' }
32
+
33
+ # Rails 4
34
+ # watch(%r{^app/(.+)\.rb$}) { |m| "test/#{m[1]}_test.rb" }
35
+ # watch(%r{^app/controllers/application_controller\.rb$}) { 'test/controllers' }
36
+ # watch(%r{^app/controllers/(.+)_controller\.rb$}) { |m| "test/integration/#{m[1]}_test.rb" }
37
+ # watch(%r{^app/views/(.+)_mailer/.+}) { |m| "test/mailers/#{m[1]}_mailer_test.rb" }
38
+ # watch(%r{^lib/(.+)\.rb$}) { |m| "test/lib/#{m[1]}_test.rb" }
39
+ # watch(%r{^test/.+_test\.rb$})
40
+ # watch(%r{^test/test_helper\.rb$}) { 'test' }
41
+
42
+ # Rails < 4
43
+ # watch(%r{^app/controllers/(.*)\.rb$}) { |m| "test/functional/#{m[1]}_test.rb" }
44
+ # watch(%r{^app/helpers/(.*)\.rb$}) { |m| "test/helpers/#{m[1]}_test.rb" }
45
+ # watch(%r{^app/models/(.*)\.rb$}) { |m| "test/unit/#{m[1]}_test.rb" }
46
+ end
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'roro'
4
+
5
+ Roro::CLI.start( ARGV )
File without changes
@@ -0,0 +1,2 @@
1
+ WDN8iYm/r+dQDS2TvKXWU/HfVzSo2vkufmfRWIr3DadCGmvQxLz2GhBN1/JJ
2
+ QgjtMoLsgeL26jYt9Z9icx60+g==
File without changes
@@ -1,4 +1,6 @@
1
1
  require "roro/version"
2
+ require "thor"
3
+ require "roro/cli"
2
4
 
3
5
  module Roro
4
6
  class Error < StandardError; end
@@ -0,0 +1,18 @@
1
+ require 'thor'
2
+ require 'roro/cli/base'
3
+ require 'roro/cli/rollon'
4
+ require 'roro/cli/greenfield'
5
+ require 'roro/cli/generate_keys'
6
+ require 'roro/cli/obfuscate'
7
+ require 'roro/cli/expose'
8
+
9
+ module Roro
10
+ class CLI < Thor
11
+
12
+ include Thor::Actions
13
+
14
+ def self.source_root
15
+ File.dirname(__FILE__) + '/cli/templates'
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,124 @@
1
+ module Roro
2
+
3
+ class CLI < Thor
4
+
5
+ no_commands do
6
+
7
+ def set_interactively
8
+ set_from_defaults
9
+ set_from_env_vars
10
+ @env_hash.map do |key, prompt|
11
+ answer = ask("Please provide #{prompt.keys.first}:")
12
+ @env_hash[key] = (answer == "") ? prompt.values.first : answer
13
+ end
14
+ end
15
+
16
+ def set_from_env_vars
17
+ @env_hash.map { |key, hash| @env_hash[key] = hash.values.last }
18
+ options["env_vars"].map { |key, value| @env_hash[key] = value }
19
+ end
20
+
21
+ def set_from_defaults
22
+ @env_hash.map { |key, hash| @env_hash[key] = hash.values.last }
23
+ end
24
+
25
+ def configurate
26
+ @env_hash = get_defaults
27
+ case
28
+ when options["interactive"]
29
+ set_interactively
30
+ when options["env_vars"]
31
+ set_from_env_vars
32
+ when options.empty?
33
+ set_from_defaults
34
+ end
35
+
36
+ @env_hash['DEPLOY_TAG'] = "${CIRCLE_SHA1:0:7}"
37
+ @env_hash['SERVER_PORT'] = "22"
38
+ @env_hash['SERVER_USER'] = "root"
39
+ @env_hash
40
+ end
41
+
42
+ def copy_base_files
43
+ copy_file "docker-compose.yml", force: true
44
+ copy_file "gitignore", ".gitignore", skip: true
45
+ copy_file "Guardfile"
46
+ copy_file "config/database.yml", force: true
47
+ copy_file "docker/containers/web/app.conf"
48
+ directory "circleci", "./.circleci"
49
+ directory "docker/containers/database"
50
+ directory "docker/env_files"
51
+ directory "docker/keys"
52
+ directory "lib", "lib", recursive: true
53
+ %w[development circleci staging production].each do |environment|
54
+ base = "docker/containers/"
55
+
56
+ app_env = create_file "#{base}app/#{environment}.env"
57
+ append_to_file app_env, "DATABASE_HOST=database\n"
58
+ append_to_file app_env, "RAILS_ENV=#{environment}\n"
59
+
60
+ database_env = create_file "#{base}database/#{environment}.env"
61
+ append_to_file database_env, "POSTGRES_USER=postgres\n"
62
+ append_to_file database_env, "POSTGRES_DB=#{@env_hash['APP_NAME']}_#{environment}\n"
63
+ append_to_file database_env, "POSTGRES_PASSWORD=#{@env_hash['POSTGRES_PASSWORD']}\n"
64
+
65
+ ssl = (environment == "production") ? true : false
66
+ web_env = create_file "#{base}web/#{environment}.env"
67
+ append_to_file web_env, "CA_SSL=#{ssl}\n"
68
+ end
69
+
70
+ %w[circleci production].each do |environment|
71
+ template "docker/overrides/#{environment}.yml.tt", "docker/overrides/#{environment}.yml", force: true
72
+ end
73
+
74
+ %w[app web].each do |container|
75
+ options = {
76
+ email: @env_hash['DOCKERHUB_EMAIL'],
77
+ app_name: @env_hash['APP_NAME'] }
78
+
79
+ template("docker/containers/#{container}/Dockerfile.tt", "docker/containers/#{container}/Dockerfile", options)
80
+ end
81
+ create_file 'docker/env_files/circleci.env'
82
+ @env_hash.map do |key, value|
83
+ append_to_file 'docker/env_files/circleci.env', "\nexport #{key}=#{value}"
84
+ end
85
+ end
86
+
87
+ def append_to_existing_files
88
+ append_to_file ".gitignore", "\ndocker/**/*.env"
89
+ append_to_file ".gitignore", "\ndocker/**/*.key"
90
+ end
91
+
92
+ def copy_greenfield_files
93
+ copy_file 'greenfield/Gemfile', 'Gemfile'
94
+ copy_file 'greenfield/Gemfile.lock', 'Gemfile.lock'
95
+ copy_file 'greenfield/docker-compose.yml', 'docker-compose.yml'
96
+ copy_file 'greenfield/Dockerfile', 'Dockerfile'
97
+ copy_file 'greenfield/config/database.yml.example', 'config/database.yml.example'
98
+ end
99
+ end
100
+
101
+ private
102
+
103
+ def get_defaults
104
+ {
105
+ "APP_NAME" => {
106
+ "the name of your app" => "sooperdooper" },
107
+ "SERVER_HOST" => {
108
+ "the ip address of your server" => "ip-address-of-your-server"
109
+ },
110
+ "DOCKERHUB_EMAIL" => {
111
+ "your Docker Hub email" => "your-docker-hub-email"},
112
+ "DOCKERHUB_USER" => {
113
+ "your Docker Hub username" => "your-docker-hub-user-name" },
114
+ "DOCKERHUB_ORG" => {
115
+ "your Docker Hub organization name" => "your-docker-hub-org-name"},
116
+ "DOCKERHUB_PASS" => {
117
+ "your Docker Hub password" => "your-docker-hub-password"},
118
+ "POSTGRES_USER" => {
119
+ "your Postgres username" => "postgres"},
120
+ "POSTGRES_PASSWORD" => {
121
+ "your Postgres password" => "your-postgres-password"} }
122
+ end
123
+ end
124
+ end