roro 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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