roro 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.circleci/config.yml +99 -0
- data/.circleci/setup-gem-credentials.sh +3 -0
- data/.gitignore +7 -1
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/Gemfile.lock +24 -10
- data/Guardfile +46 -0
- data/bin/roro +5 -0
- data/docker/env_files/.keep +0 -0
- data/docker/env_files/circleci.env.enc +2 -0
- data/docker/keys/.keep +0 -0
- data/lib/roro.rb +2 -0
- data/lib/roro/cli.rb +18 -0
- data/lib/roro/cli/base.rb +124 -0
- data/lib/roro/cli/dockerize.rb +30 -0
- data/lib/roro/cli/expose.rb +13 -0
- data/lib/roro/cli/generate_keys.rb +79 -0
- data/lib/roro/cli/greenfield.rb +37 -0
- data/lib/roro/cli/obfuscate.rb +20 -0
- data/lib/roro/cli/rollon.rb +21 -0
- data/lib/roro/cli/templates/Gemfile.lock +0 -0
- data/lib/roro/cli/templates/Guardfile +81 -0
- data/lib/roro/cli/templates/circleci/Rakefile +4 -0
- data/lib/roro/cli/templates/circleci/config.job-example.yml +33 -0
- data/lib/roro/cli/templates/circleci/config.yml +69 -0
- data/lib/roro/cli/templates/circleci/config.yml.workflow-example +62 -0
- data/lib/roro/cli/templates/circleci/deploy.rake +127 -0
- data/lib/roro/cli/templates/config.yml +71 -0
- data/lib/roro/cli/templates/config/database.yml +20 -0
- data/lib/roro/cli/templates/docker-compose.yml +51 -0
- data/lib/roro/cli/templates/docker/containers/app/Dockerfile.tt +12 -0
- data/lib/roro/cli/templates/docker/containers/database/.keep +0 -0
- data/lib/roro/cli/templates/docker/containers/web/Dockerfile.tt +18 -0
- data/lib/roro/cli/templates/docker/containers/web/app.conf.tt +23 -0
- data/lib/roro/cli/templates/docker/env_files/.keep +0 -0
- data/lib/roro/cli/templates/docker/keys/.keep +0 -0
- data/lib/roro/cli/templates/docker/overrides/circleci.yml.tt +19 -0
- data/lib/roro/cli/templates/docker/overrides/production.yml.tt +26 -0
- data/lib/roro/cli/templates/docker/web/Dockerfile +20 -0
- data/lib/roro/cli/templates/docker/web/app.conf +23 -0
- data/lib/roro/cli/templates/gitignore +27 -0
- data/lib/roro/cli/templates/greenfield/Dockerfile +8 -0
- data/lib/roro/cli/templates/greenfield/Gemfile +2 -0
- data/lib/roro/cli/templates/greenfield/Gemfile.lock +0 -0
- data/lib/roro/cli/templates/greenfield/config/database.yml.example +16 -0
- data/lib/roro/cli/templates/greenfield/docker-compose.yml +15 -0
- data/lib/roro/cli/templates/lib/tasks/deploy.rake +126 -0
- data/lib/roro/version.rb +1 -1
- data/lib/tasks/deploy.rake +126 -0
- data/roro.gemspec +9 -2
- data/test_apps/dummy/.gitignore +27 -0
- data/test_apps/dummy/Gemfile +61 -0
- data/test_apps/dummy/README.md +24 -0
- data/test_apps/dummy/Rakefile +6 -0
- data/test_apps/dummy/app/assets/config/manifest.js +3 -0
- data/test_apps/dummy/app/assets/images/.keep +0 -0
- data/test_apps/dummy/app/assets/javascripts/application.js +16 -0
- data/test_apps/dummy/app/assets/javascripts/cable.js +13 -0
- data/test_apps/dummy/app/assets/javascripts/channels/.keep +0 -0
- data/test_apps/dummy/app/assets/stylesheets/application.css +15 -0
- data/test_apps/dummy/app/channels/application_cable/channel.rb +4 -0
- data/test_apps/dummy/app/channels/application_cable/connection.rb +4 -0
- data/test_apps/dummy/app/controllers/application_controller.rb +2 -0
- data/test_apps/dummy/app/controllers/concerns/.keep +0 -0
- data/test_apps/dummy/app/helpers/application_helper.rb +2 -0
- data/test_apps/dummy/app/jobs/application_job.rb +2 -0
- data/test_apps/dummy/app/mailers/application_mailer.rb +4 -0
- data/test_apps/dummy/app/models/application_record.rb +3 -0
- data/test_apps/dummy/app/models/concerns/.keep +0 -0
- data/test_apps/dummy/app/views/layouts/application.html.erb +15 -0
- data/test_apps/dummy/app/views/layouts/mailer.html.erb +13 -0
- data/test_apps/dummy/app/views/layouts/mailer.text.erb +1 -0
- data/test_apps/dummy/bin/bundle +3 -0
- data/test_apps/dummy/bin/rails +4 -0
- data/test_apps/dummy/bin/rake +4 -0
- data/test_apps/dummy/bin/setup +36 -0
- data/test_apps/dummy/bin/update +31 -0
- data/test_apps/dummy/bin/yarn +11 -0
- data/test_apps/dummy/config.ru +5 -0
- data/test_apps/dummy/config/application.rb +19 -0
- data/test_apps/dummy/config/boot.rb +4 -0
- data/test_apps/dummy/config/cable.yml +10 -0
- data/test_apps/dummy/config/credentials.yml.enc +1 -0
- data/test_apps/dummy/config/database.yml +85 -0
- data/test_apps/dummy/config/environment.rb +5 -0
- data/test_apps/dummy/config/environments/development.rb +61 -0
- data/test_apps/dummy/config/environments/production.rb +94 -0
- data/test_apps/dummy/config/environments/test.rb +46 -0
- data/test_apps/dummy/config/initializers/application_controller_renderer.rb +8 -0
- data/test_apps/dummy/config/initializers/assets.rb +14 -0
- data/test_apps/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test_apps/dummy/config/initializers/content_security_policy.rb +25 -0
- data/test_apps/dummy/config/initializers/cookies_serializer.rb +5 -0
- data/test_apps/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/test_apps/dummy/config/initializers/inflections.rb +16 -0
- data/test_apps/dummy/config/initializers/mime_types.rb +4 -0
- data/test_apps/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test_apps/dummy/config/locales/en.yml +33 -0
- data/test_apps/dummy/config/puma.rb +34 -0
- data/test_apps/dummy/config/routes.rb +3 -0
- data/test_apps/dummy/config/spring.rb +6 -0
- data/test_apps/dummy/config/storage.yml +34 -0
- data/test_apps/dummy/db/seeds.rb +7 -0
- data/test_apps/dummy/lib/assets/.keep +0 -0
- data/test_apps/dummy/lib/tasks/.keep +0 -0
- data/test_apps/dummy/log/.keep +0 -0
- data/test_apps/dummy/package.json +5 -0
- data/test_apps/dummy/public/404.html +67 -0
- data/test_apps/dummy/public/422.html +67 -0
- data/test_apps/dummy/public/500.html +66 -0
- data/test_apps/dummy/public/apple-touch-icon-precomposed.png +0 -0
- data/test_apps/dummy/public/apple-touch-icon.png +0 -0
- data/test_apps/dummy/public/favicon.ico +0 -0
- data/test_apps/dummy/public/robots.txt +1 -0
- data/test_apps/dummy/storage/.keep +0 -0
- data/test_apps/dummy/test/application_system_test_case.rb +5 -0
- data/test_apps/dummy/test/controllers/.keep +0 -0
- data/test_apps/dummy/test/fixtures/.keep +0 -0
- data/test_apps/dummy/test/fixtures/files/.keep +0 -0
- data/test_apps/dummy/test/helpers/.keep +0 -0
- data/test_apps/dummy/test/integration/.keep +0 -0
- data/test_apps/dummy/test/mailers/.keep +0 -0
- data/test_apps/dummy/test/models/.keep +0 -0
- data/test_apps/dummy/test/system/.keep +0 -0
- data/test_apps/dummy/test/test_helper.rb +10 -0
- data/test_apps/dummy/vendor/.keep +0 -0
- data/test_apps/dummy_roro/.circleci/Rakefile +4 -0
- data/test_apps/dummy_roro/.circleci/config.job-example.yml +33 -0
- data/test_apps/dummy_roro/.circleci/config.yml +69 -0
- data/test_apps/dummy_roro/.circleci/config.yml.workflow-example +62 -0
- data/test_apps/dummy_roro/.circleci/deploy.rake +127 -0
- data/test_apps/dummy_roro/.gitignore +27 -0
- data/test_apps/dummy_roro/Gemfile +64 -0
- data/test_apps/dummy_roro/README.md +24 -0
- data/test_apps/dummy_roro/Rakefile +6 -0
- data/test_apps/dummy_roro/app/assets/config/manifest.js +3 -0
- data/test_apps/dummy_roro/app/assets/images/.keep +0 -0
- data/test_apps/dummy_roro/app/assets/javascripts/application.js +16 -0
- data/test_apps/dummy_roro/app/assets/javascripts/cable.js +13 -0
- data/test_apps/dummy_roro/app/assets/javascripts/channels/.keep +0 -0
- data/test_apps/dummy_roro/app/assets/stylesheets/application.css +15 -0
- data/test_apps/dummy_roro/app/channels/application_cable/channel.rb +4 -0
- data/test_apps/dummy_roro/app/channels/application_cable/connection.rb +4 -0
- data/test_apps/dummy_roro/app/controllers/application_controller.rb +2 -0
- data/test_apps/dummy_roro/app/controllers/concerns/.keep +0 -0
- data/test_apps/dummy_roro/app/helpers/application_helper.rb +2 -0
- data/test_apps/dummy_roro/app/jobs/application_job.rb +2 -0
- data/test_apps/dummy_roro/app/mailers/application_mailer.rb +4 -0
- data/test_apps/dummy_roro/app/models/application_record.rb +3 -0
- data/test_apps/dummy_roro/app/models/concerns/.keep +0 -0
- data/test_apps/dummy_roro/app/views/layouts/application.html.erb +15 -0
- data/test_apps/dummy_roro/app/views/layouts/mailer.html.erb +13 -0
- data/test_apps/dummy_roro/app/views/layouts/mailer.text.erb +1 -0
- data/test_apps/dummy_roro/bin/bundle +3 -0
- data/test_apps/dummy_roro/bin/rails +4 -0
- data/test_apps/dummy_roro/bin/rake +4 -0
- data/test_apps/dummy_roro/bin/setup +36 -0
- data/test_apps/dummy_roro/bin/update +31 -0
- data/test_apps/dummy_roro/bin/yarn +11 -0
- data/test_apps/dummy_roro/config.ru +5 -0
- data/test_apps/dummy_roro/config/application.rb +19 -0
- data/test_apps/dummy_roro/config/boot.rb +4 -0
- data/test_apps/dummy_roro/config/cable.yml +10 -0
- data/test_apps/dummy_roro/config/credentials.yml.enc +1 -0
- data/test_apps/dummy_roro/config/database.yml +20 -0
- data/test_apps/dummy_roro/config/environment.rb +5 -0
- data/test_apps/dummy_roro/config/environments/development.rb +61 -0
- data/test_apps/dummy_roro/config/environments/production.rb +94 -0
- data/test_apps/dummy_roro/config/environments/test.rb +46 -0
- data/test_apps/dummy_roro/config/initializers/application_controller_renderer.rb +8 -0
- data/test_apps/dummy_roro/config/initializers/assets.rb +14 -0
- data/test_apps/dummy_roro/config/initializers/backtrace_silencers.rb +7 -0
- data/test_apps/dummy_roro/config/initializers/content_security_policy.rb +25 -0
- data/test_apps/dummy_roro/config/initializers/cookies_serializer.rb +5 -0
- data/test_apps/dummy_roro/config/initializers/filter_parameter_logging.rb +4 -0
- data/test_apps/dummy_roro/config/initializers/inflections.rb +16 -0
- data/test_apps/dummy_roro/config/initializers/mime_types.rb +4 -0
- data/test_apps/dummy_roro/config/initializers/wrap_parameters.rb +14 -0
- data/test_apps/dummy_roro/config/locales/en.yml +33 -0
- data/test_apps/dummy_roro/config/puma.rb +34 -0
- data/test_apps/dummy_roro/config/routes.rb +3 -0
- data/test_apps/dummy_roro/config/spring.rb +6 -0
- data/test_apps/dummy_roro/config/storage.yml +34 -0
- data/test_apps/dummy_roro/db/seeds.rb +7 -0
- data/test_apps/dummy_roro/docker-compose.yml +51 -0
- data/test_apps/dummy_roro/docker/containers/app/Dockerfile +12 -0
- data/test_apps/dummy_roro/docker/containers/app/circleci.env +2 -0
- data/test_apps/dummy_roro/docker/containers/app/development.env +2 -0
- data/test_apps/dummy_roro/docker/containers/app/production.env +2 -0
- data/test_apps/dummy_roro/docker/containers/app/staging.env +2 -0
- data/test_apps/dummy_roro/docker/containers/database/.keep +0 -0
- data/test_apps/dummy_roro/docker/containers/database/circleci.env +3 -0
- data/test_apps/dummy_roro/docker/containers/database/development.env +3 -0
- data/test_apps/dummy_roro/docker/containers/database/production.env +3 -0
- data/test_apps/dummy_roro/docker/containers/database/staging.env +3 -0
- data/test_apps/dummy_roro/docker/containers/web/Dockerfile +18 -0
- data/test_apps/dummy_roro/docker/containers/web/app.conf +23 -0
- data/test_apps/dummy_roro/docker/containers/web/circleci.env +1 -0
- data/test_apps/dummy_roro/docker/containers/web/development.env +1 -0
- data/test_apps/dummy_roro/docker/containers/web/production.env +1 -0
- data/test_apps/dummy_roro/docker/containers/web/staging.env +1 -0
- data/test_apps/dummy_roro/docker/env_files/circleci.env +12 -0
- data/test_apps/dummy_roro/docker/env_files/circleci.env.enc +14 -0
- data/test_apps/dummy_roro/docker/env_files/production.env +2 -0
- data/test_apps/dummy_roro/docker/env_files/production.env.enc +2 -0
- data/test_apps/dummy_roro/docker/keys/.keep +0 -0
- data/test_apps/dummy_roro/docker/overrides/circleci.yml +19 -0
- data/test_apps/dummy_roro/docker/overrides/production.yml +26 -0
- data/test_apps/dummy_roro/lib/assets/.keep +0 -0
- data/test_apps/dummy_roro/lib/tasks/.keep +0 -0
- data/test_apps/dummy_roro/lib/tasks/deploy.rake +126 -0
- data/test_apps/dummy_roro/log/.keep +0 -0
- data/test_apps/dummy_roro/package.json +5 -0
- data/test_apps/dummy_roro/public/404.html +67 -0
- data/test_apps/dummy_roro/public/422.html +67 -0
- data/test_apps/dummy_roro/public/500.html +66 -0
- data/test_apps/dummy_roro/public/apple-touch-icon-precomposed.png +0 -0
- data/test_apps/dummy_roro/public/apple-touch-icon.png +0 -0
- data/test_apps/dummy_roro/public/favicon.ico +0 -0
- data/test_apps/dummy_roro/public/robots.txt +1 -0
- data/test_apps/dummy_roro/storage/.keep +0 -0
- data/test_apps/dummy_roro/test/application_system_test_case.rb +5 -0
- data/test_apps/dummy_roro/test/controllers/.keep +0 -0
- data/test_apps/dummy_roro/test/fixtures/.keep +0 -0
- data/test_apps/dummy_roro/test/fixtures/files/.keep +0 -0
- data/test_apps/dummy_roro/test/helpers/.keep +0 -0
- data/test_apps/dummy_roro/test/integration/.keep +0 -0
- data/test_apps/dummy_roro/test/mailers/.keep +0 -0
- data/test_apps/dummy_roro/test/models/.keep +0 -0
- data/test_apps/dummy_roro/test/system/.keep +0 -0
- data/test_apps/dummy_roro/test/test_helper.rb +10 -0
- data/test_apps/dummy_roro/vendor/.keep +0 -0
- data/test_apps/greenfield/.keep +0 -0
- metadata +292 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 8785a69852a94916710e3a3e11735e850ca39549
|
4
|
+
data.tar.gz: b26a42ce7df419812da00458b851b3e7877b3ccd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
data/.gitignore
CHANGED
data/.ruby-gemset
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
roro
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.5.3
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,10 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
roro (0.1.
|
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.
|
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.
|
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.
|
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.
|
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
|
-
|
99
|
-
|
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.
|
126
|
-
ffi (
|
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.
|
165
|
+
1.17.3
|
data/Guardfile
ADDED
@@ -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
|
data/bin/roro
ADDED
File without changes
|
data/docker/keys/.keep
ADDED
File without changes
|
data/lib/roro.rb
CHANGED
data/lib/roro/cli.rb
ADDED
@@ -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
|