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.
Files changed (126) hide show
  1. checksums.yaml +5 -5
  2. data/{lib/roro/cli/templates/base → .circleci}/.keep +0 -0
  3. data/.circleci/config.yml +92 -0
  4. data/{lib/roro/cli/templates/ruby_gem → .circleci}/setup-gem-credentials.sh +1 -1
  5. data/.gitignore +2 -2
  6. data/Guardfile +7 -7
  7. data/docker-compose.yml +15 -0
  8. data/lib/roro.rb +1 -2
  9. data/lib/roro/cli.rb +12 -76
  10. data/lib/roro/cli/base/check_dependencies.rb +0 -1
  11. data/lib/roro/cli/base/utilities.rb +0 -1
  12. data/lib/roro/cli/generate/config.rb +6 -8
  13. data/lib/roro/cli/generate/exposed.rb +14 -0
  14. data/lib/roro/cli/generate/{generate_keys.rb → keys.rb} +22 -0
  15. data/lib/roro/cli/generate/obfuscated.rb +17 -0
  16. data/lib/roro/cli/greenfield/rails.rb +36 -0
  17. data/lib/roro/cli/rollon.rb +2 -66
  18. data/lib/roro/cli/rollon/rails.rb +47 -0
  19. data/lib/roro/cli/rollon/{stories/rails/database → rails}/database.rb +3 -4
  20. data/lib/roro/cli/rollon/{stories/rails → rails}/database/with_mysql.rb +2 -2
  21. data/lib/roro/cli/rollon/{stories/rails/database/with_postgres.rb → rails/database/with_postgresql.rb} +2 -2
  22. data/lib/roro/cli/rollon/ruby_gem.rb +1 -0
  23. data/lib/roro/cli/rollon/ruby_gem/with_ci_cd.rb +45 -0
  24. data/lib/roro/cli/rollon/stories.rb +2 -3
  25. data/lib/roro/cli/rollon/stories/stories.rb +0 -4
  26. data/lib/roro/cli/templates/base/.circleci/_defaults.yml +15 -0
  27. data/lib/roro/cli/templates/base/.circleci/_workflow.yml +2 -0
  28. data/lib/roro/cli/templates/base/.circleci/config.job-example.yml +33 -0
  29. data/lib/roro/cli/templates/base/.circleci/jobs/_build.yml +4 -0
  30. data/lib/roro/cli/templates/base/.circleci/jobs/_release.yml +12 -0
  31. data/lib/roro/cli/templates/base/.circleci/workflows/_build_release.yml +10 -0
  32. data/lib/roro/cli/templates/base/.dockerignore +2 -2
  33. data/lib/roro/cli/templates/base/dotenv +1 -0
  34. data/lib/roro/cli/templates/{dockerize → rails/.circleci}/.keep +0 -0
  35. data/lib/roro/cli/templates/rails/.circleci/_aliases.yml +8 -0
  36. data/lib/roro/cli/templates/rails/.circleci/config.yml.tt +15 -0
  37. data/lib/roro/cli/templates/rails/.circleci/jobs/_build.yml +16 -0
  38. data/lib/roro/cli/templates/rails/.circleci/jobs/_push.yml +23 -0
  39. data/lib/roro/cli/templates/rails/.circleci/jobs/_test.yml +10 -0
  40. data/lib/roro/cli/templates/rails/.circleci/setup-gem-credentials.sh +3 -0
  41. data/lib/roro/cli/templates/rails/.circleci/workflows/_build_test_push.yml +9 -0
  42. data/lib/roro/cli/templates/{ruby_gem/roro/env_files → rails}/.keep +0 -0
  43. data/lib/roro/cli/templates/{greenfield/Dockerfile.tt → rails/Dockerfile.greenfield.tt} +11 -7
  44. data/lib/roro/cli/templates/{base → rails}/config/database.mysql.yml +0 -0
  45. data/lib/roro/cli/templates/{base → rails}/config/database.pg.yml +0 -0
  46. data/lib/roro/cli/templates/rails/database/with_mysql/_service.yml +10 -0
  47. data/lib/roro/cli/{rollon/stories/database.rb → templates/rails/database/with_postgresql/.keep} +0 -0
  48. data/lib/roro/cli/templates/rails/database/with_postgresql/_service.yml +7 -0
  49. data/lib/roro/cli/templates/rails/dotenv/.keep +0 -0
  50. data/lib/roro/cli/templates/rails/dotenv/database.mysql.env.tt +3 -0
  51. data/lib/roro/cli/templates/rails/dotenv/database.pg.env.tt +4 -0
  52. data/lib/roro/cli/templates/rails/dotenv/web.env.tt +2 -0
  53. data/lib/roro/cli/templates/rails/roro/.keep +0 -0
  54. data/lib/roro/cli/templates/rails/roro/containers/.keep +0 -0
  55. data/lib/roro/cli/templates/rails/roro/containers/app/.keep +0 -0
  56. data/lib/roro/cli/templates/{base → rails/roro/containers/app}/Dockerfile.tt +18 -9
  57. data/lib/roro/cli/templates/rails/roro/containers/frontend/.keep +0 -0
  58. data/lib/roro/cli/templates/{dockerize → rails/roro}/docker-compose.yml.tt +15 -16
  59. data/lib/roro/cli/templates/rails/roro/docker-entrypoint.sh.tt +8 -0
  60. data/lib/roro/cli/templates/rails/roro/roro/.keep +0 -0
  61. data/lib/roro/cli/templates/rails/roro/roro/containers/.keep +0 -0
  62. data/lib/roro/cli/templates/rails/roro/roro/containers/app/.keep +0 -0
  63. data/lib/roro/cli/templates/rails/roro/roro/containers/frontend/.keep +0 -0
  64. data/lib/roro/cli/templates/rails/roro/roro/docker-entrypoint.sh.tt +8 -0
  65. data/lib/roro/cli/templates/roro/docker-compose.yml.tt +6 -7
  66. data/lib/roro/cli/templates/ruby_gem/.circleci/.keep +0 -0
  67. data/lib/roro/cli/templates/ruby_gem/.circleci/config.yml.tt +16 -0
  68. data/lib/roro/cli/templates/ruby_gem/.circleci/setup-gem-credentials.sh +3 -0
  69. data/lib/roro/cli/templates/ruby_gem/docker-compose.yml +8 -2
  70. data/lib/roro/cli/templates/ruby_gem/roro/containers/.keep +0 -0
  71. data/lib/roro/cli/templates/ruby_gem/roro/containers/ruby_image/Dockerfile.tt +16 -0
  72. data/lib/roro/cli/templates/ruby_gem/roro/containers/ruby_image/ci.env.tt +1 -0
  73. data/lib/roro/cli/templates/stories/ruby_gem/with_ci_cd/_build.yml +11 -0
  74. data/lib/roro/cli/templates/stories/with_mysql/_service.yml +2 -2
  75. data/lib/roro/cli/templates/stories/with_postgresql/_service.yml +2 -2
  76. data/lib/roro/version.rb +1 -1
  77. data/roro.gemspec +5 -5
  78. data/roro/containers/.keep +0 -0
  79. data/roro/containers/ruby_image/Dockerfile +16 -0
  80. data/roro/containers/ruby_image/ci.env.enc +2 -0
  81. data/roro/keys/.keep +0 -0
  82. data/tmp/.keep +0 -0
  83. data/vendor/cache/apparition-0.6.0.gem +0 -0
  84. data/vendor/cache/capybara-3.33.0.gem +0 -0
  85. data/vendor/cache/childprocess-3.0.0.gem +0 -0
  86. data/vendor/cache/handsome_fencer-crypto-0.1.9.gem +0 -0
  87. data/vendor/cache/handsome_fencer-test-0.2.2.gem +0 -0
  88. data/vendor/cache/mini_mime-1.0.2.gem +0 -0
  89. data/vendor/cache/regexp_parser-1.7.1.gem +0 -0
  90. data/vendor/cache/rubyzip-2.3.0.gem +0 -0
  91. data/vendor/cache/selenium-webdriver-3.142.7.gem +0 -0
  92. data/vendor/cache/shoulda-2.11.3.gem +0 -0
  93. data/vendor/cache/shoulda-context-2.0.0.rc2.gem +0 -0
  94. data/vendor/cache/shoulda-matchers-4.4.1.gem +0 -0
  95. data/vendor/cache/websocket-driver-0.7.3.gem +0 -0
  96. data/vendor/cache/websocket-extensions-0.1.5.gem +0 -0
  97. data/vendor/cache/xpath-3.2.0.gem +0 -0
  98. metadata +112 -82
  99. data/lib/roro/cli/cli.rb +0 -99
  100. data/lib/roro/cli/expose.rb +0 -14
  101. data/lib/roro/cli/greenfield.rb +0 -31
  102. data/lib/roro/cli/obfuscate.rb +0 -19
  103. data/lib/roro/cli/rollon/stories/rails.rb +0 -1
  104. data/lib/roro/cli/rollon/stories/ruby_gem.rb +0 -77
  105. data/lib/roro/cli/rollon/stories/ruby_gem/with_ci_cd.rb +0 -60
  106. data/lib/roro/cli/ruby_gem.rb +0 -67
  107. data/lib/roro/cli/templates/circleci/config.yml.tt +0 -70
  108. data/lib/roro/cli/templates/dockerize/Dockerfile.tt +0 -23
  109. data/lib/roro/cli/templates/dockerize/docker-entrypoint.sh +0 -9
  110. data/lib/roro/cli/templates/ruby_gem/.circleci/config.yml +0 -122
  111. data/lib/roro/cli/templates/ruby_gem/roro/containers/gem/Dockerfile.tt +0 -9
  112. data/vendor/cache/actionpack-6.0.3.2.gem +0 -0
  113. data/vendor/cache/actionview-6.0.3.2.gem +0 -0
  114. data/vendor/cache/builder-3.2.4.gem +0 -0
  115. data/vendor/cache/crass-1.0.6.gem +0 -0
  116. data/vendor/cache/erubi-1.9.0.gem +0 -0
  117. data/vendor/cache/handsome_fencer-crypto-0.1.6.gem +0 -0
  118. data/vendor/cache/handsome_fencer-test-0.1.1.gem +0 -0
  119. data/vendor/cache/loofah-2.6.0.gem +0 -0
  120. data/vendor/cache/minitest-rails-6.0.1.gem +0 -0
  121. data/vendor/cache/rails-dom-testing-2.0.3.gem +0 -0
  122. data/vendor/cache/rails-html-sanitizer-1.3.0.gem +0 -0
  123. data/vendor/cache/railties-6.0.3.2.gem +0 -0
  124. data/vendor/cache/shoulda-4.0.0.gem +0 -0
  125. data/vendor/cache/shoulda-context-2.0.0.gem +0 -0
  126. data/vendor/cache/shoulda-matchers-4.3.0.gem +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA256:
3
- metadata.gz: 5d2920a993245b49f9ac51cf665584007cd9cf1b93e5910a18201b914d62e9b1
4
- data.tar.gz: 44fe546dafd609adb0162cc2296f8562afa7f5cd6cb23bb7b607f1aaf2b08bc6
2
+ SHA1:
3
+ metadata.gz: c21dea82b0e30a105b0ac41e03d9630418672d63
4
+ data.tar.gz: 7eb7950531987c7a93a8f1e21b286c1d149b2eb0
5
5
  SHA512:
6
- metadata.gz: be706b2f7677d2e0b1967b645190197be96ed89cdab015bba2de649dd300d395b17acc395feb4687d2a3d7c9805d51c788fa10af3d1163d37d51ef67753d272a
7
- data.tar.gz: 052aca113a452bf5cf9ee7c01f18e0d4c33e46cdfea5a2d97e768c0652c22d952e4d905770a985d150279c9c8efb7fa7b8a6fed2b2b165bcfa11c194a458468b
6
+ metadata.gz: bd8d5fd5b9b5b51c4063b8b167aadb3f00d7f87e2f7928730eee9ca281bc30a65131e15fd73757ec87ae61fc8c01cc7fa5399389bc29c64f673f1aca97ad70c2
7
+ data.tar.gz: 23cfe00c8535806eb5102db12325e70392abf942fe32749d5dfc7f44525e5694e6a1fb9664fa1fba23bcde86a431d4446b5f3cd28b47ebbfb9b489d72de4dd6e
@@ -0,0 +1,92 @@
1
+ aliases:
2
+ - &workspace-location
3
+ at: /tmp/workspace
4
+ - &copy-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
@@ -1,3 +1,3 @@
1
1
  mkdir ~/.gem
2
2
  echo -e "---\r\n:rubygems_api_key: $RUBYGEMS_API_KEY" > ~/.gem/credentials
3
- chmod 0600 /home/circleci/.gem/credentials
3
+ chmod 0600 /home/circleci/.gem/credentials
data/.gitignore CHANGED
@@ -13,10 +13,10 @@ roro/**/*.key
13
13
 
14
14
  *.key
15
15
  *.env
16
+ !/.gitignore
16
17
 
17
18
  tmp/*
18
- tmp/*
19
- !tmp/.gitkeep
19
+ !tmp/.keep
20
20
  sandbox/*
21
21
  !sandbox/.keep
22
22
  !sandbox/greenfield
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: false
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{^test/fixtures/files/(.*/)?([^/]+)\.yml$}) { 'test' }
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
@@ -0,0 +1,15 @@
1
+ version: '3.2'
2
+
3
+ services:
4
+
5
+ ruby_gem:
6
+ build:
7
+ context: .
8
+ dockerfile: roro/containers/ruby_image/Dockerfile
9
+ environment:
10
+ - RUBY_VERSION=${RUBY_VERSION}
11
+ volumes:
12
+ - gem_cache:/gems
13
+
14
+ volumes:
15
+ gem_cache:
@@ -1,6 +1,5 @@
1
- require 'byebug'
2
- require "roro/version"
3
1
  require "thor"
2
+ require "roro/version"
4
3
  require "roro/cli"
5
4
 
6
5
  module Roro
@@ -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
@@ -53,7 +53,6 @@ module Roro
53
53
  remove_clashes.each {|c| system c }
54
54
  end
55
55
  end
56
-
57
56
  def confirm_dependency(options)
58
57
  msg = []
59
58
  msg << ""
@@ -1,4 +1,3 @@
1
-
2
1
  module Roro
3
2
 
4
3
  class CLI < Thor
@@ -1,13 +1,11 @@
1
1
  module Roro
2
2
  class CLI < Thor
3
- include Thor::Actions
4
3
 
5
- # desc "generate::config::roro", "Generate a config file at .roro_config.yml"
6
- # map "generate::config::roro" => "generate_roro_config"
7
-
8
-
9
- # def generate_roro_config
10
- # create_file ".roro_config.yml", @config.app.to_yaml
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
@@ -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