roro 0.3.8 → 0.3.16
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.
- checksums.yaml +5 -5
- data/{lib/roro/cli/templates/base → .circleci}/.keep +0 -0
- data/.circleci/config.yml +92 -0
- data/{lib/roro/cli/templates/ruby_gem → .circleci}/setup-gem-credentials.sh +1 -1
- data/.gitignore +2 -2
- data/Guardfile +7 -7
- data/docker-compose.yml +15 -0
- data/lib/roro.rb +1 -2
- data/lib/roro/cli.rb +12 -76
- data/lib/roro/cli/base/check_dependencies.rb +0 -1
- data/lib/roro/cli/base/utilities.rb +0 -1
- data/lib/roro/cli/generate/config.rb +6 -8
- data/lib/roro/cli/generate/exposed.rb +14 -0
- data/lib/roro/cli/generate/{generate_keys.rb → keys.rb} +22 -0
- data/lib/roro/cli/generate/obfuscated.rb +17 -0
- data/lib/roro/cli/greenfield/rails.rb +36 -0
- data/lib/roro/cli/rollon.rb +2 -66
- data/lib/roro/cli/rollon/rails.rb +47 -0
- data/lib/roro/cli/rollon/{stories/rails/database → rails}/database.rb +3 -4
- data/lib/roro/cli/rollon/{stories/rails → rails}/database/with_mysql.rb +2 -2
- data/lib/roro/cli/rollon/{stories/rails/database/with_postgres.rb → rails/database/with_postgresql.rb} +2 -2
- data/lib/roro/cli/rollon/ruby_gem.rb +1 -0
- data/lib/roro/cli/rollon/ruby_gem/with_ci_cd.rb +45 -0
- data/lib/roro/cli/rollon/stories.rb +2 -3
- data/lib/roro/cli/rollon/stories/stories.rb +0 -4
- data/lib/roro/cli/templates/base/.circleci/_defaults.yml +15 -0
- data/lib/roro/cli/templates/base/.circleci/_workflow.yml +2 -0
- data/lib/roro/cli/templates/base/.circleci/config.job-example.yml +33 -0
- data/lib/roro/cli/templates/base/.circleci/jobs/_build.yml +4 -0
- data/lib/roro/cli/templates/base/.circleci/jobs/_release.yml +12 -0
- data/lib/roro/cli/templates/base/.circleci/workflows/_build_release.yml +10 -0
- data/lib/roro/cli/templates/base/.dockerignore +2 -2
- data/lib/roro/cli/templates/base/dotenv +1 -0
- data/lib/roro/cli/templates/{dockerize → rails/.circleci}/.keep +0 -0
- data/lib/roro/cli/templates/rails/.circleci/_aliases.yml +8 -0
- data/lib/roro/cli/templates/rails/.circleci/config.yml.tt +15 -0
- data/lib/roro/cli/templates/rails/.circleci/jobs/_build.yml +16 -0
- data/lib/roro/cli/templates/rails/.circleci/jobs/_push.yml +23 -0
- data/lib/roro/cli/templates/rails/.circleci/jobs/_test.yml +10 -0
- data/lib/roro/cli/templates/rails/.circleci/setup-gem-credentials.sh +3 -0
- data/lib/roro/cli/templates/rails/.circleci/workflows/_build_test_push.yml +9 -0
- data/lib/roro/cli/templates/{ruby_gem/roro/env_files → rails}/.keep +0 -0
- data/lib/roro/cli/templates/{greenfield/Dockerfile.tt → rails/Dockerfile.greenfield.tt} +11 -7
- data/lib/roro/cli/templates/{base → rails}/config/database.mysql.yml +0 -0
- data/lib/roro/cli/templates/{base → rails}/config/database.pg.yml +0 -0
- data/lib/roro/cli/templates/rails/database/with_mysql/_service.yml +10 -0
- data/lib/roro/cli/{rollon/stories/database.rb → templates/rails/database/with_postgresql/.keep} +0 -0
- data/lib/roro/cli/templates/rails/database/with_postgresql/_service.yml +7 -0
- data/lib/roro/cli/templates/rails/dotenv/.keep +0 -0
- data/lib/roro/cli/templates/rails/dotenv/database.mysql.env.tt +3 -0
- data/lib/roro/cli/templates/rails/dotenv/database.pg.env.tt +4 -0
- data/lib/roro/cli/templates/rails/dotenv/web.env.tt +2 -0
- data/lib/roro/cli/templates/rails/roro/.keep +0 -0
- data/lib/roro/cli/templates/rails/roro/containers/.keep +0 -0
- data/lib/roro/cli/templates/rails/roro/containers/app/.keep +0 -0
- data/lib/roro/cli/templates/{base → rails/roro/containers/app}/Dockerfile.tt +18 -9
- data/lib/roro/cli/templates/rails/roro/containers/frontend/.keep +0 -0
- data/lib/roro/cli/templates/{dockerize → rails/roro}/docker-compose.yml.tt +15 -16
- data/lib/roro/cli/templates/rails/roro/docker-entrypoint.sh.tt +8 -0
- data/lib/roro/cli/templates/rails/roro/roro/.keep +0 -0
- data/lib/roro/cli/templates/rails/roro/roro/containers/.keep +0 -0
- data/lib/roro/cli/templates/rails/roro/roro/containers/app/.keep +0 -0
- data/lib/roro/cli/templates/rails/roro/roro/containers/frontend/.keep +0 -0
- data/lib/roro/cli/templates/rails/roro/roro/docker-entrypoint.sh.tt +8 -0
- data/lib/roro/cli/templates/roro/docker-compose.yml.tt +6 -7
- data/lib/roro/cli/templates/ruby_gem/.circleci/.keep +0 -0
- data/lib/roro/cli/templates/ruby_gem/.circleci/config.yml.tt +16 -0
- data/lib/roro/cli/templates/ruby_gem/.circleci/setup-gem-credentials.sh +3 -0
- data/lib/roro/cli/templates/ruby_gem/docker-compose.yml +8 -2
- data/lib/roro/cli/templates/ruby_gem/roro/containers/.keep +0 -0
- data/lib/roro/cli/templates/ruby_gem/roro/containers/ruby_image/Dockerfile.tt +16 -0
- data/lib/roro/cli/templates/ruby_gem/roro/containers/ruby_image/ci.env.tt +1 -0
- data/lib/roro/cli/templates/stories/ruby_gem/with_ci_cd/_build.yml +11 -0
- data/lib/roro/cli/templates/stories/with_mysql/_service.yml +2 -2
- data/lib/roro/cli/templates/stories/with_postgresql/_service.yml +2 -2
- data/lib/roro/version.rb +1 -1
- data/roro.gemspec +5 -5
- data/roro/containers/.keep +0 -0
- data/roro/containers/ruby_image/Dockerfile +16 -0
- data/roro/containers/ruby_image/ci.env.enc +2 -0
- data/roro/keys/.keep +0 -0
- data/tmp/.keep +0 -0
- data/vendor/cache/apparition-0.6.0.gem +0 -0
- data/vendor/cache/capybara-3.33.0.gem +0 -0
- data/vendor/cache/childprocess-3.0.0.gem +0 -0
- data/vendor/cache/handsome_fencer-crypto-0.1.9.gem +0 -0
- data/vendor/cache/handsome_fencer-test-0.2.2.gem +0 -0
- data/vendor/cache/mini_mime-1.0.2.gem +0 -0
- data/vendor/cache/regexp_parser-1.7.1.gem +0 -0
- data/vendor/cache/rubyzip-2.3.0.gem +0 -0
- data/vendor/cache/selenium-webdriver-3.142.7.gem +0 -0
- data/vendor/cache/shoulda-2.11.3.gem +0 -0
- data/vendor/cache/shoulda-context-2.0.0.rc2.gem +0 -0
- data/vendor/cache/shoulda-matchers-4.4.1.gem +0 -0
- data/vendor/cache/websocket-driver-0.7.3.gem +0 -0
- data/vendor/cache/websocket-extensions-0.1.5.gem +0 -0
- data/vendor/cache/xpath-3.2.0.gem +0 -0
- metadata +112 -82
- data/lib/roro/cli/cli.rb +0 -99
- data/lib/roro/cli/expose.rb +0 -14
- data/lib/roro/cli/greenfield.rb +0 -31
- data/lib/roro/cli/obfuscate.rb +0 -19
- data/lib/roro/cli/rollon/stories/rails.rb +0 -1
- data/lib/roro/cli/rollon/stories/ruby_gem.rb +0 -77
- data/lib/roro/cli/rollon/stories/ruby_gem/with_ci_cd.rb +0 -60
- data/lib/roro/cli/ruby_gem.rb +0 -67
- data/lib/roro/cli/templates/circleci/config.yml.tt +0 -70
- data/lib/roro/cli/templates/dockerize/Dockerfile.tt +0 -23
- data/lib/roro/cli/templates/dockerize/docker-entrypoint.sh +0 -9
- data/lib/roro/cli/templates/ruby_gem/.circleci/config.yml +0 -122
- data/lib/roro/cli/templates/ruby_gem/roro/containers/gem/Dockerfile.tt +0 -9
- data/vendor/cache/actionpack-6.0.3.2.gem +0 -0
- data/vendor/cache/actionview-6.0.3.2.gem +0 -0
- data/vendor/cache/builder-3.2.4.gem +0 -0
- data/vendor/cache/crass-1.0.6.gem +0 -0
- data/vendor/cache/erubi-1.9.0.gem +0 -0
- data/vendor/cache/handsome_fencer-crypto-0.1.6.gem +0 -0
- data/vendor/cache/handsome_fencer-test-0.1.1.gem +0 -0
- data/vendor/cache/loofah-2.6.0.gem +0 -0
- data/vendor/cache/minitest-rails-6.0.1.gem +0 -0
- data/vendor/cache/rails-dom-testing-2.0.3.gem +0 -0
- data/vendor/cache/rails-html-sanitizer-1.3.0.gem +0 -0
- data/vendor/cache/railties-6.0.3.2.gem +0 -0
- data/vendor/cache/shoulda-4.0.0.gem +0 -0
- data/vendor/cache/shoulda-context-2.0.0.gem +0 -0
- data/vendor/cache/shoulda-matchers-4.3.0.gem +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: c21dea82b0e30a105b0ac41e03d9630418672d63
|
4
|
+
data.tar.gz: 7eb7950531987c7a93a8f1e21b286c1d149b2eb0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bd8d5fd5b9b5b51c4063b8b167aadb3f00d7f87e2f7928730eee9ca281bc30a65131e15fd73757ec87ae61fc8c01cc7fa5399389bc29c64f673f1aca97ad70c2
|
7
|
+
data.tar.gz: 23cfe00c8535806eb5102db12325e70392abf942fe32749d5dfc7f44525e5694e6a1fb9664fa1fba23bcde86a431d4446b5f3cd28b47ebbfb9b489d72de4dd6e
|
File without changes
|
@@ -0,0 +1,92 @@
|
|
1
|
+
aliases:
|
2
|
+
- &workspace-location
|
3
|
+
at: /tmp/workspace
|
4
|
+
- ©-ci-dotenv |
|
5
|
+
cp -rf /tmp/workspace/roro .
|
6
|
+
- &source-ci-variables |
|
7
|
+
echo 'source roro/containers/app/ci.env' >> $BASH_ENV
|
8
|
+
source $BASH_ENV
|
9
|
+
|
10
|
+
defaults: &defaults
|
11
|
+
executor: machine-executor
|
12
|
+
working_directory: ~/project
|
13
|
+
|
14
|
+
version: 2.1
|
15
|
+
|
16
|
+
executors:
|
17
|
+
machine-executor:
|
18
|
+
machine: true
|
19
|
+
ruby-executor:
|
20
|
+
docker:
|
21
|
+
- image: cimg/ruby:2.7
|
22
|
+
|
23
|
+
jobs:
|
24
|
+
|
25
|
+
build:
|
26
|
+
<<: *defaults
|
27
|
+
steps:
|
28
|
+
- checkout
|
29
|
+
|
30
|
+
test-rollon-rails:
|
31
|
+
executor: ruby-executor
|
32
|
+
steps:
|
33
|
+
- checkout
|
34
|
+
- setup_remote_docker:
|
35
|
+
version: 19.03.12
|
36
|
+
- run: |
|
37
|
+
rake install
|
38
|
+
mkdir greenfield
|
39
|
+
cd greenfield
|
40
|
+
(yes || true) | roro greenfield
|
41
|
+
- run: echo 'success'
|
42
|
+
|
43
|
+
test:
|
44
|
+
<<: *defaults
|
45
|
+
steps:
|
46
|
+
- checkout
|
47
|
+
- run: RUBY_VERSION=2.5 docker-compose build ruby_gem
|
48
|
+
- run: RUBY_VERSION=2.5 docker-compose up -d --force-recreate ruby_gem
|
49
|
+
- run: RUBY_VERSION=2.5 docker-compose run ruby_gem bundle exec rake test
|
50
|
+
- run: RUBY_VERSION=2.6 docker-compose build ruby_gem
|
51
|
+
- run: RUBY_VERSION=2.6 docker-compose up -d --force-recreate ruby_gem
|
52
|
+
- run: RUBY_VERSION=2.6 docker-compose run ruby_gem bundle exec rake test
|
53
|
+
- run: RUBY_VERSION=2.7 docker-compose build ruby_gem
|
54
|
+
- run: RUBY_VERSION=2.7 docker-compose up -d --force-recreate ruby_gem
|
55
|
+
- run: RUBY_VERSION=2.7 docker-compose run ruby_gem bundle exec rake test
|
56
|
+
|
57
|
+
release:
|
58
|
+
<<: *defaults
|
59
|
+
steps:
|
60
|
+
- checkout
|
61
|
+
- run: gem install roro
|
62
|
+
- run: roro generate::exposed ci
|
63
|
+
- run: |
|
64
|
+
echo $(cat ./roro/containers/ruby_image/ci.env) >> $BASH_ENV
|
65
|
+
source $BASH_ENV
|
66
|
+
- run: chmod +x ./.circleci/setup-gem-credentials.sh
|
67
|
+
- run: ./.circleci/setup-gem-credentials.sh
|
68
|
+
- run: chmod 0600 ~/.gem/credentials
|
69
|
+
- run: git checkout .
|
70
|
+
- run: gem release
|
71
|
+
|
72
|
+
workflows:
|
73
|
+
version: 2
|
74
|
+
|
75
|
+
build-cli:
|
76
|
+
jobs:
|
77
|
+
- build
|
78
|
+
- test-rollon-rails:
|
79
|
+
filters:
|
80
|
+
branches:
|
81
|
+
only: development
|
82
|
+
- test:
|
83
|
+
filters:
|
84
|
+
branches:
|
85
|
+
only: master
|
86
|
+
|
87
|
+
- release:
|
88
|
+
requires:
|
89
|
+
- build
|
90
|
+
filters:
|
91
|
+
branches:
|
92
|
+
only: release
|
data/.gitignore
CHANGED
data/Guardfile
CHANGED
@@ -1,17 +1,17 @@
|
|
1
|
-
# A sample Guardfile
|
2
|
-
# More info at https://github.com/guard/guard#readme
|
3
|
-
|
4
1
|
options = {
|
5
|
-
cli: '-f',
|
6
2
|
all_on_start: true,
|
7
|
-
all_after_pass:
|
3
|
+
all_after_pass: true,
|
8
4
|
}
|
9
5
|
|
10
6
|
guard :minitest, options do
|
11
7
|
|
12
|
-
watch(%r{^test/(.*)\/?test_(.*)\.rb$})
|
13
8
|
watch(%r{^test/(.*)\/?(.*)_test\.rb$})
|
14
9
|
watch(%r{^lib/roro/(.+)\.rb$}) { |m| "test/#{m[1]}_test.rb" }
|
15
10
|
watch(%r{^test/thor_helper\.rb$}) { 'test' }
|
16
|
-
watch(%r{^
|
11
|
+
watch(%r{^lib/roro/cli/(.+)\.rb$}) { |m| "test/cli/#{m[1]}_test.rb" }
|
12
|
+
watch(%r{^lib/roro/cli/templates/base(.+)\.yml$}) { |m| "test/cli" }
|
13
|
+
watch(%r{^lib/roro/cli/templates/rollon(.+)\.yml$}) { |m| "test/cli/rollon" }
|
14
|
+
watch(%r{^lib/roro/cli/templates/rollon(.+)\.tt$}) { |m| "test/cli/rollon" }
|
15
|
+
watch(%r{^lib/roro/cli/templates/greenfield(.+)\.yml$}) { |m| "test/cli/greenfield" }
|
16
|
+
watch(%r{^lib/roro/cli/templates/greenfield(.+)\.tt$}) { |m| "test/cli/greenfield" }
|
17
17
|
end
|
data/docker-compose.yml
ADDED
data/lib/roro.rb
CHANGED
data/lib/roro/cli.rb
CHANGED
@@ -1,13 +1,17 @@
|
|
1
1
|
require 'roro/cli/base/base'
|
2
|
-
require 'roro/cli/greenfield'
|
3
|
-
require 'roro/cli/obfuscate'
|
4
|
-
require 'roro/cli/expose'
|
5
|
-
require 'roro/cli/generate/config/rails'
|
6
|
-
require 'roro/cli/generate/config'
|
7
|
-
require 'roro/cli/generate/generate_keys'
|
8
2
|
require 'roro/cli/configuration'
|
9
|
-
|
3
|
+
require 'roro/cli/generate/config'
|
4
|
+
require 'roro/cli/generate/exposed'
|
5
|
+
require 'roro/cli/generate/keys'
|
6
|
+
require 'roro/cli/generate/obfuscated'
|
7
|
+
require 'roro/cli/greenfield/rails'
|
10
8
|
require 'roro/cli/rollon'
|
9
|
+
require 'roro/cli/rollon/rails'
|
10
|
+
require 'roro/cli/rollon/rails/database/with_mysql'
|
11
|
+
require 'roro/cli/rollon/rails/database/with_postgresql'
|
12
|
+
|
13
|
+
require 'roro/cli/rollon/ruby_gem'
|
14
|
+
|
11
15
|
module Roro
|
12
16
|
|
13
17
|
class CLI < Thor
|
@@ -16,74 +20,6 @@ module Roro
|
|
16
20
|
|
17
21
|
def self.source_root
|
18
22
|
File.dirname(__FILE__) + '/cli/templates'
|
19
|
-
end
|
20
|
-
|
21
|
-
|
22
|
-
desc "rollon::rails", "Generates files for and makes changes to your app
|
23
|
-
so it can run using Docker containers."
|
24
|
-
method_option :interactive, desc: "Set up your environment variables as
|
25
|
-
you go."
|
26
|
-
map "rollon::rails" => "rollon_rails"
|
27
|
-
|
28
|
-
def rollon_rails
|
29
|
-
rollon
|
30
|
-
end
|
31
|
-
|
32
|
-
|
33
|
-
desc "greenfield::rails", "Greenfield a new, dockerized rails app with
|
34
|
-
either MySQL or PostgreSQL in a separate container."
|
35
|
-
|
36
|
-
method_option :env_vars, type: :hash, default: {}, desc: "Pass a list of environment variables like so: env:var", banner: "key1:value1 key2:value2"
|
37
|
-
method_option :interactive, desc: "Set up your environment variables as you go."
|
38
|
-
method_option :force, desc: "force over-write of existing files"
|
39
|
-
|
40
|
-
map "greenfield::rails" => "greenfield_rails"
|
41
|
-
|
42
|
-
def greenfield_rails(*args)
|
43
|
-
greenfield(*args)
|
44
|
-
end
|
45
|
-
desc "generate::exposed", "Generate private .env files from
|
46
|
-
encrypted .env.enc files inside the roro directory."
|
47
|
-
map "generate::exposed" => "generate_exposed"
|
48
|
-
|
49
|
-
def generate_exposed(*args)
|
50
|
-
expose(*args)
|
51
|
-
end
|
52
|
-
|
53
|
-
desc "generate::key", "Generate a key inside roro/keys. Takes the name of
|
54
|
-
an environment as an argument to private .env files from
|
55
|
-
encrypted .env.enc files inside the roro directory.
|
56
|
-
Expose encrypted files"
|
57
|
-
|
58
|
-
map "generate::key" => "generate_key"
|
59
|
-
method_option :environment, type: :hash, default: {}, desc: "Pass a list of environment variables like so: env:var", banner: "development, staging"
|
60
|
-
|
61
|
-
def generate_key(*args)
|
62
|
-
generate_key_or_keys(*args)
|
63
|
-
end
|
64
|
-
|
65
|
-
desc "generate::keys", "Generate keys for each environment inside roro/keys.
|
66
|
-
If you have .env files like 'roro/containers/app/[staging_env].env' and
|
67
|
-
'roro/[circle_ci_env].env' it will generate '/roro/keys/[staging_env].key'
|
68
|
-
and '/roro/keys/[circle_ci_env].key'."
|
69
|
-
map "generate::keys" => "generate_keys"
|
70
|
-
|
71
|
-
def generate_keys(*args)
|
72
|
-
generate_key(*args)
|
73
|
-
end
|
74
|
-
|
75
|
-
desc "generate::config", "Generate a config file at .roro_config.yml"
|
76
|
-
map "generate::config" => "generate_config"
|
77
|
-
|
78
|
-
def generate_config
|
79
|
-
create_file ".roro_config.yml", @config.app.to_yaml
|
80
|
-
end
|
81
|
-
|
82
|
-
desc "generate::obfuscated", "obfuscates any files matching the pattern ./roro/**/*.env"
|
83
|
-
map "generate::obfuscated" => "generate_obfuscated"
|
84
|
-
|
85
|
-
def generate_obfuscated(*args)
|
86
|
-
obfuscate(*args)
|
87
|
-
end
|
23
|
+
end
|
88
24
|
end
|
89
25
|
end
|
@@ -1,13 +1,11 @@
|
|
1
1
|
module Roro
|
2
2
|
class CLI < Thor
|
3
|
-
include Thor::Actions
|
4
3
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
# end
|
4
|
+
desc "generate::config", "Generate a config file at .roro_config.yml"
|
5
|
+
map "generate::config" => "generate_config"
|
6
|
+
|
7
|
+
def generate_config
|
8
|
+
create_file ".roro_config.yml", @config.app.to_yaml
|
9
|
+
end
|
12
10
|
end
|
13
11
|
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Roro
|
2
|
+
class CLI < Thor
|
3
|
+
|
4
|
+
desc "generate::exposed", "Generate private .env files from encrypted .env.enc files inside the roro directory."
|
5
|
+
map "generate::exposed" => "generate_exposed"
|
6
|
+
|
7
|
+
def generate_exposed(*args)
|
8
|
+
environments = args.first ? [args.first] : gather_environments
|
9
|
+
environments.each do |environment|
|
10
|
+
HandsomeFencer::Crypto.expose(environment, 'roro')
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -2,6 +2,28 @@ module Roro
|
|
2
2
|
|
3
3
|
class CLI < Thor
|
4
4
|
|
5
|
+
desc "generate::key", "Generate a key inside roro/keys. Takes the name of
|
6
|
+
an environment as an argument to private .env files from
|
7
|
+
encrypted .env.enc files inside the roro directory.
|
8
|
+
Expose encrypted files"
|
9
|
+
|
10
|
+
map "generate::key" => "generate_key"
|
11
|
+
method_option :environment, type: :hash, default: {}, desc: "Pass a list of environment variables like so: env:var", banner: "development, staging"
|
12
|
+
|
13
|
+
def generate_key(*args)
|
14
|
+
generate_key_or_keys(*args)
|
15
|
+
end
|
16
|
+
|
17
|
+
desc "generate::keys", "Generate keys for each environment inside roro/keys.
|
18
|
+
If you have .env files like 'roro/containers/app/[staging_env].env' and
|
19
|
+
'roro/[circle_ci_env].env' it will generate '/roro/keys/[staging_env].key'
|
20
|
+
and '/roro/keys/[circle_ci_env].key'."
|
21
|
+
map "generate::keys" => "generate_keys"
|
22
|
+
|
23
|
+
def generate_keys(*args)
|
24
|
+
generate_key(*args)
|
25
|
+
end
|
26
|
+
|
5
27
|
no_commands do
|
6
28
|
|
7
29
|
def generate_key_or_keys(*args)
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'handsome_fencer/crypto'
|
2
|
+
|
3
|
+
module Roro
|
4
|
+
|
5
|
+
class CLI < Thor
|
6
|
+
|
7
|
+
desc "generate::obfuscated", "obfuscates any files matching the pattern ./roro/**/*.env"
|
8
|
+
map "generate::obfuscated" => "generate_obfuscated"
|
9
|
+
|
10
|
+
def generate_obfuscated(*args)
|
11
|
+
environments = args.first ? [args.first] : gather_environments
|
12
|
+
environments.each do |environment|
|
13
|
+
HandsomeFencer::Crypto.obfuscate(environment, 'roro')
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module Roro
|
2
|
+
|
3
|
+
class CLI < Thor
|
4
|
+
|
5
|
+
desc "greenfield::rails", "Greenfield a new, dockerized rails app with
|
6
|
+
either MySQL or PostgreSQL in a separate container."
|
7
|
+
|
8
|
+
method_option :env_vars, type: :hash, default: {}, desc: "Pass a list of environment variables like so: env:var", banner: "key1:value1 key2:value2"
|
9
|
+
method_option :interactive, desc: "Set up your environment variables as you go."
|
10
|
+
method_option :force, desc: "force over-write of existing files"
|
11
|
+
|
12
|
+
map "greenfield::rails" => "greenfield_rails"
|
13
|
+
|
14
|
+
def greenfield_rails(*args)
|
15
|
+
confirm_directory_empty
|
16
|
+
configure_for_rollon
|
17
|
+
copy_greenfield_files
|
18
|
+
run_greenfield_commands
|
19
|
+
rollon_rails(*args)
|
20
|
+
end
|
21
|
+
|
22
|
+
no_commands do
|
23
|
+
|
24
|
+
def copy_greenfield_files
|
25
|
+
@config.app['force'] = true
|
26
|
+
src = 'rails/Dockerfile.greenfield.tt'
|
27
|
+
dest = 'roro/containers/app/Dockerfile'
|
28
|
+
template src, dest, @config.app
|
29
|
+
end
|
30
|
+
|
31
|
+
def run_greenfield_commands
|
32
|
+
system "DOCKER_BUILDKIT=1 docker build --file roro/containers/app/Dockerfile --output . ."
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
data/lib/roro/cli/rollon.rb
CHANGED
@@ -1,29 +1,10 @@
|
|
1
|
-
require 'roro/cli/rollon/stories'
|
2
|
-
|
3
1
|
module Roro
|
4
|
-
|
5
2
|
class CLI < Thor
|
6
|
-
|
7
|
-
desc "rollon", "Generates files for and makes changes to your app
|
8
|
-
so it can run using Docker containers."
|
9
|
-
method_option :interactive, desc: "Set up your environment variables as
|
10
|
-
you go."
|
11
|
-
|
12
|
-
def rollon
|
13
|
-
confirm_directory_not_empty
|
14
|
-
confirm_dependencies
|
15
|
-
remove_roro_artifacts
|
16
|
-
|
17
|
-
configure_for_rollon
|
18
|
-
|
19
|
-
copy_roro_files
|
20
|
-
generate_roro_config
|
21
|
-
startup_commands
|
22
|
-
end
|
23
|
-
|
3
|
+
|
24
4
|
no_commands do
|
25
5
|
|
26
6
|
def configure_for_rollon
|
7
|
+
confirm_dependencies
|
27
8
|
@config ||= Roro::Configuration.new(options)
|
28
9
|
end
|
29
10
|
|
@@ -31,54 +12,9 @@ module Roro
|
|
31
12
|
File.read(File.dirname(__FILE__) + "/templates/#{file}")
|
32
13
|
end
|
33
14
|
|
34
|
-
def copy_roro_files
|
35
|
-
configure_database
|
36
|
-
directory 'roro', './', @config.app
|
37
|
-
template 'base/Dockerfile.tt', 'roro/containers/app/Dockerfile', @config.app
|
38
|
-
take_thor_actions
|
39
|
-
end
|
40
|
-
|
41
15
|
def take_thor_actions
|
42
16
|
@config.thor_actions.each {|k, v| eval(k) if v.eql?('y') }
|
43
17
|
end
|
44
|
-
|
45
|
-
def startup_commands
|
46
|
-
system 'docker-compose build'
|
47
|
-
system 'docker-compose run web bundle'
|
48
|
-
system 'docker-compose run web bin/rails webpacker:install'
|
49
|
-
system 'docker-compose run web bin/rails yarn:install'
|
50
|
-
system 'docker-compose run web bin/rails db:create'
|
51
|
-
system 'docker-compose run web bin/rails db:migrate'
|
52
|
-
system 'docker-compose up'
|
53
|
-
end
|
54
|
-
|
55
|
-
def confirm_directory_empty
|
56
|
-
confirm = confirm_dependency({
|
57
|
-
system_query: "ls -A",
|
58
|
-
warning: "this is not an empty directory. Roro will not greenfield a new Rails app unless either a) the current directory is empty or b) you run greenfield with the --force flag",
|
59
|
-
suggestion: "$ roro greenfield --force",
|
60
|
-
conditional: "Dir.glob('*').empty?" })
|
61
|
-
confirm || true
|
62
|
-
end
|
63
|
-
|
64
|
-
|
65
|
-
def confirm_dependency(options)
|
66
|
-
msg = []
|
67
|
-
msg << ""
|
68
|
-
msg << delineator
|
69
|
-
msg << "It looks like #{options[:warning]}. The following bash command returns false:"
|
70
|
-
msg << "\t$ #{options[:system_query]}"
|
71
|
-
msg << "Please try these instructions:"
|
72
|
-
msg << ("\t" + options[:suggestion])
|
73
|
-
msg << delineator
|
74
|
-
conditional = options[:conditional] ? eval(options[:conditional]) : system(options[:system_query])
|
75
|
-
if conditional == false
|
76
|
-
raise(Roro::Error.new(msg.join("\n\n")))
|
77
|
-
else
|
78
|
-
true
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
18
|
end
|
83
19
|
end
|
84
20
|
end
|