roro 0.3.14 → 0.3.16
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.circleci/config.yml +35 -10
- data/Guardfile +7 -7
- data/lib/roro.rb +1 -1
- 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 → rails}/database.rb +3 -6
- data/lib/roro/cli/rollon/{stories/rails → rails}/database/with_mysql.rb +2 -2
- data/lib/roro/cli/rollon/{stories/rails → rails}/database/with_postgresql.rb +2 -2
- data/lib/roro/cli/rollon/ruby_gem.rb +1 -0
- data/lib/roro/cli/rollon/{stories/ruby_gem → ruby_gem}/with_ci_cd.rb +1 -1
- data/lib/roro/cli/rollon/stories.rb +2 -2
- 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/dotenv +1 -0
- data/lib/roro/cli/{rollon/stories/rails → templates/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/{base → 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/{stories/rails → rails}/database/with_mysql/_service.yml +0 -0
- data/lib/roro/cli/templates/{stories/rails → rails}/database/with_postgresql/.keep +0 -0
- data/lib/roro/cli/templates/{stories/rails → rails}/database/with_postgresql/_service.yml +0 -0
- data/lib/roro/cli/{rollon/stories/database.rb → 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/rails/roro/docker-compose.yml.tt +59 -0
- 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 +4 -4
- data/lib/roro/cli/templates/ruby_gem/.circleci/config.yml.tt +9 -33
- 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/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 +94 -72
- 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/ruby_gem.rb +0 -67
- 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
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
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
|
data/.circleci/config.yml
CHANGED
@@ -1,22 +1,47 @@
|
|
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
|
+
|
1
14
|
version: 2.1
|
2
15
|
|
16
|
+
executors:
|
17
|
+
machine-executor:
|
18
|
+
machine: true
|
19
|
+
ruby-executor:
|
20
|
+
docker:
|
21
|
+
- image: cimg/ruby:2.7
|
22
|
+
|
3
23
|
jobs:
|
4
24
|
|
5
25
|
build:
|
6
|
-
|
26
|
+
<<: *defaults
|
7
27
|
steps:
|
8
28
|
- checkout
|
9
29
|
|
10
|
-
test-
|
11
|
-
|
30
|
+
test-rollon-rails:
|
31
|
+
executor: ruby-executor
|
12
32
|
steps:
|
13
33
|
- checkout
|
14
|
-
-
|
15
|
-
|
16
|
-
|
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'
|
17
42
|
|
18
43
|
test:
|
19
|
-
|
44
|
+
<<: *defaults
|
20
45
|
steps:
|
21
46
|
- checkout
|
22
47
|
- run: RUBY_VERSION=2.5 docker-compose build ruby_gem
|
@@ -30,7 +55,7 @@ jobs:
|
|
30
55
|
- run: RUBY_VERSION=2.7 docker-compose run ruby_gem bundle exec rake test
|
31
56
|
|
32
57
|
release:
|
33
|
-
|
58
|
+
<<: *defaults
|
34
59
|
steps:
|
35
60
|
- checkout
|
36
61
|
- run: gem install roro
|
@@ -47,10 +72,10 @@ jobs:
|
|
47
72
|
workflows:
|
48
73
|
version: 2
|
49
74
|
|
50
|
-
build-
|
75
|
+
build-cli:
|
51
76
|
jobs:
|
52
77
|
- build
|
53
|
-
- test-
|
78
|
+
- test-rollon-rails:
|
54
79
|
filters:
|
55
80
|
branches:
|
56
81
|
only: development
|
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: true
|
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/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_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
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'roro/cli/rollon/stories'
|
2
|
+
require 'roro/cli/rollon/rails/database'
|
3
|
+
|
4
|
+
module Roro
|
5
|
+
|
6
|
+
class CLI < Thor
|
7
|
+
|
8
|
+
desc "rollon::rails", "Generates files for and makes changes to your app
|
9
|
+
so it can run using Docker containers."
|
10
|
+
method_option :interactive, desc: "Set up your environment variables as
|
11
|
+
you go."
|
12
|
+
map "rollon::rails" => "rollon_rails"
|
13
|
+
|
14
|
+
def rollon_rails(*args)
|
15
|
+
confirm_directory_not_empty
|
16
|
+
confirm_dependencies
|
17
|
+
configure_for_rollon
|
18
|
+
copy_rails_files
|
19
|
+
generate_config
|
20
|
+
startup_commands
|
21
|
+
end
|
22
|
+
|
23
|
+
no_commands do
|
24
|
+
|
25
|
+
def copy_rails_files
|
26
|
+
template 'rails/.circleci/config.yml.tt', './.circleci/config.yml'
|
27
|
+
configure_database
|
28
|
+
directory 'roro', './', @config.app
|
29
|
+
template 'base/dotenv', './.env', @config.app
|
30
|
+
directory 'rails/roro', './roro', @config.app
|
31
|
+
take_thor_actions
|
32
|
+
end
|
33
|
+
|
34
|
+
def startup_commands
|
35
|
+
success_msg = "'\n\n#{'*' * 5 }\n\nYour Rails app is available at http://localhost:3000/'\n\n#{'*' * 5 }"
|
36
|
+
system 'docker-compose build'
|
37
|
+
system 'docker-compose run web bundle'
|
38
|
+
system 'docker-compose run web bin/rails webpacker:install'
|
39
|
+
system 'docker-compose run web bin/rails yarn:install'
|
40
|
+
system 'docker-compose run web bin/rails db:create'
|
41
|
+
system 'docker-compose run web bin/rails db:migrate'
|
42
|
+
system 'docker-compose up -d'
|
43
|
+
system "docker-compose run web echo '\n\nYour Rails app is available at http://localhost:3000/'"
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|