roro 0.3.5 → 0.3.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (60) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -0
  3. data/Guardfile +9 -5
  4. data/lib/roro.rb +1 -1
  5. data/lib/roro/cli.rb +5 -1
  6. data/lib/roro/cli/base/base.rb +2 -1
  7. data/lib/roro/cli/base/base_files.rb +1 -7
  8. data/lib/roro/cli/base/check_dependencies.rb +98 -0
  9. data/lib/roro/cli/base/insert_gems.rb +15 -7
  10. data/lib/roro/cli/base/insertions.rb +3 -1
  11. data/lib/roro/cli/configuration.rb +68 -0
  12. data/lib/roro/cli/generate/config.rb +13 -0
  13. data/lib/roro/cli/generate/config/rails.rb +17 -0
  14. data/lib/roro/cli/generate/generate.rb +1 -0
  15. data/lib/roro/cli/generate/generate_keys.rb +79 -0
  16. data/lib/roro/cli/greenfield.rb +15 -16
  17. data/lib/roro/cli/rollon.rb +66 -20
  18. data/lib/roro/cli/rollon/database/database.rb +31 -0
  19. data/lib/roro/cli/rollon/database/with_mysql.rb +22 -0
  20. data/lib/roro/cli/rollon/database/with_postgres.rb +21 -0
  21. data/lib/roro/cli/rollon/stories.rb +3 -3
  22. data/lib/roro/cli/roro_configurator.yml +157 -0
  23. data/{.keep → lib/roro/cli/templates/base/.env/.keep} +0 -0
  24. data/lib/roro/cli/templates/base/.env/database.mysql.env.tt +4 -0
  25. data/lib/roro/cli/templates/base/.env/database.pg.env.tt +5 -0
  26. data/lib/roro/cli/templates/base/.env/web.env.tt +1 -0
  27. data/lib/roro/cli/templates/base/.roro_config.yml +15 -0
  28. data/lib/roro/cli/templates/base/Dockerfile.tt +44 -0
  29. data/lib/roro/cli/templates/base/config/database.mysql.yml +19 -0
  30. data/lib/roro/cli/templates/base/config/{database.yml.pg.tt → database.pg.yml} +0 -0
  31. data/lib/roro/cli/templates/{base/circleci → circleci}/config.yml.tt +0 -0
  32. data/lib/roro/cli/templates/greenfield/Dockerfile.tt +29 -7
  33. data/lib/roro/cli/templates/{base/livereload → livereload}/hosts.example +0 -0
  34. data/lib/roro/cli/templates/{base/roro → roro}/.keep +0 -0
  35. data/lib/roro/cli/templates/{greenfield → roro}/docker-compose.yml.tt +18 -13
  36. data/lib/roro/cli/templates/{base/roro/containers → roro/roro}/.keep +0 -0
  37. data/lib/roro/cli/templates/{base/roro/containers/app → roro/roro/containers}/.keep +0 -0
  38. data/lib/roro/cli/templates/{base/roro/containers/frontend → roro/roro/containers/app}/.keep +0 -0
  39. data/lib/roro/cli/templates/roro/roro/containers/frontend/.keep +0 -0
  40. data/lib/roro/cli/templates/roro/roro/docker-entrypoint.sh.tt +8 -0
  41. data/lib/roro/cli/templates/stories/.keep +0 -0
  42. data/lib/roro/cli/templates/stories/with_mysql/_service.yml +10 -0
  43. data/lib/roro/cli/templates/stories/with_postgresql/.keep +0 -0
  44. data/lib/roro/cli/templates/stories/with_postgresql/_service.yml +7 -0
  45. data/lib/roro/version.rb +1 -1
  46. metadata +33 -25
  47. data/lib/roro/cli/base/configuration.rb +0 -118
  48. data/lib/roro/cli/rollon/rollon_as_dockerize.rb +0 -42
  49. data/lib/roro/cli/rollon/rollon_as_quickstart.rb +0 -17
  50. data/lib/roro/cli/rollon/rollon_as_roro.rb +0 -30
  51. data/lib/roro/cli/templates/base/docker-compose.yml.tt +0 -53
  52. data/lib/roro/cli/templates/base/pg/config/database.yml.pg.tt +0 -20
  53. data/lib/roro/cli/templates/base/pg/database.yml.pg.tt +0 -20
  54. data/lib/roro/cli/templates/base/roro/containers/app/Dockerfile.tt +0 -32
  55. data/lib/roro/cli/templates/base/roro/containers/app/development.env.tt +0 -1
  56. data/lib/roro/cli/templates/base/roro/containers/app/docker-entrypoint.sh +0 -8
  57. data/lib/roro/cli/templates/base/roro/containers/app/test.env.tt +0 -1
  58. data/lib/roro/cli/templates/base/roro/containers/database/development.env.tt +0 -4
  59. data/lib/roro/cli/templates/base/roro/containers/database/test.env.tt +0 -4
  60. data/roro-0.3.4.gem +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d1748207f4c1b87ab2301b252cd90eac18dc36107544b404b031e9ba9b0df62f
4
- data.tar.gz: eda27e549ca1789b75f5f0af646415b92c8c82f5e3b05dcf612a7d591326c33d
3
+ metadata.gz: c448ed5c19cb319a371d294aac99449fbddadf605d0b46e1e694066b0807d7c9
4
+ data.tar.gz: f668e36a0fd1e5866a9165fea9a6459a45197d0f2188aa84800001541d0cd089
5
5
  SHA512:
6
- metadata.gz: ec101f6fba2f50fe296792633d606e3ee2a0680e798c7fef0508706ef37d58dd979f04ea6be7e0fffe044596315aca2933d9ca7416d5694b4f083b18de923182
7
- data.tar.gz: 3b89bd8d48d381ef5461deb8b99712cea71a8c2708cc32fdd5c195f931001736598ca48ddbebc0269f09e6c7cbd9e5294e7c7fcb943c1627b8c48e5bdcdae684
6
+ metadata.gz: b3727071acdd794946a8ca8bbd67644f589896d5bddd6675c7c1dfa61ba80dfe91f0c642553c9df09115e1fadc76bd01e8d7064c0808a9f1b08f61b8716800ff
7
+ data.tar.gz: cccd90560e9664c9f38b6b56ac0d6f2f1266f6a4a7f93f7f7638e95593b26232480c1673c5e70b2950b41618daba87c27fac5a21d7a59fad69f91779c4d42226
data/.gitignore CHANGED
@@ -9,3 +9,6 @@ tmp/*
9
9
  Gemfile.lock
10
10
  .byebug_history
11
11
  /sandbox/**/*
12
+
13
+ roro/**/*.env
14
+ roro/**/*.key
data/Guardfile CHANGED
@@ -2,18 +2,22 @@
2
2
  # More info at https://github.com/guard/guard#readme
3
3
 
4
4
  options = {
5
- # cli: '',
6
- # all_after_run: true,
7
- # all_after_pass: true
5
+ cli: '-f',
6
+ all_on_start: true,
7
+ all_after_pass: false
8
8
  }
9
9
 
10
10
  guard :minitest, options do
11
11
 
12
12
  watch(%r{^test/(.*)\/?test_(.*)\.rb$})
13
13
  watch(%r{^test/(.*)\/?(.*)_test\.rb$})
14
- watch(%r{^lib/roro/cli/(.+)\.rb$}) { |m| "test/generators/#{m[1]}_test.rb" }
14
+ watch(%r{^lib/roro/cli/(.+)\.rb$}) { |m| "test/cli/#{m[1]}_test.rb" }
15
15
  watch(%r{^lib/roro/cli/rollon/*.rb$}) { 'test/generators' }
16
- watch(%r{^lib/roro/cli/(.+).rb$}) { 'test' }
16
+ watch(%r{^lib/roro/cli/roro_configurator.yml$}) { 'test/cli/configuration_test.rb' }
17
+ # watch(%r{^lib/roro/cli/(.+).rb$}) { 'test' }
18
+ # watch(%r{^lib/roro/cli/templates/roro(.+).rb$}) do
19
+ # 'test/generators/rollon/rollon_as_roro_test.rb'
20
+ # end
17
21
 
18
22
 
19
23
  watch(%r{^test/thor_helper\.rb$}) { 'test' }
@@ -1,8 +1,8 @@
1
+
1
2
  require "roro/version"
2
3
  require "thor"
3
4
  require "roro/cli"
4
5
 
5
6
  module Roro
6
7
  class Error < StandardError; end
7
- # Your code goes here...
8
8
  end
@@ -6,12 +6,16 @@ require 'roro/cli/generate_keys'
6
6
  require 'roro/cli/obfuscate'
7
7
  require 'roro/cli/expose'
8
8
  require 'roro/cli/ruby_gem'
9
+ require 'roro/cli/generate/config/rails'
10
+ require 'roro/cli/generate/config'
11
+ require 'roro/cli/configuration'
9
12
 
10
13
  module Roro
14
+
11
15
  class CLI < Thor
12
16
 
13
17
  include Thor::Actions
14
-
18
+
15
19
  def self.source_root
16
20
  File.dirname(__FILE__) + '/cli/templates'
17
21
  end
@@ -1,4 +1,5 @@
1
- require_relative 'configuration.rb'
1
+
2
+ require_relative 'check_dependencies.rb'
2
3
  require_relative 'continuous_integration.rb'
3
4
  require_relative 'utilities.rb'
4
5
  require_relative 'insertions.rb'
@@ -16,14 +16,8 @@ module Roro
16
16
  template "base/docker-compose.yml", 'docker-compose.yml', @env_hash
17
17
  end
18
18
 
19
- def copy_roro
20
- directory 'base/roro/containers/app', "roro/containers/#{@env_hash[:app_name]}", @env_hash
21
- directory 'base/roro/containers/database', "roro/containers/#{@env_hash[:database_container]}", @env_hash
22
- directory 'base/roro/containers/frontend', "roro/containers/#{@env_hash[:frontend_container]}", @env_hash
23
- end
24
-
25
19
  def copy_database_yml_pg
26
- copy_file "base/config/database.yml.pg", 'config/database.yml', force: @env_hash[:use_force]
20
+ copy_file "base/config/database.pg.yml", 'config/database.yml', force: @env_hash[:use_force]
27
21
  end
28
22
  end
29
23
  end
@@ -0,0 +1,98 @@
1
+ module Roro
2
+
3
+ class CLI < Thor
4
+
5
+ no_commands do
6
+
7
+ def confirm_directory_not_empty
8
+ confirm_dependency({
9
+ system_query: "ls -A",
10
+ warning: "This is an empty directory. You can generate a new and fully
11
+ dockerized Rails app using the 'greenfield' command here here but if
12
+ you want to containerize an existing app -- which is what the 'rollon'
13
+ command is for -- you'll need to navigate to a directory with an app we
14
+ can roll onto.",
15
+ suggestion: "$ roro greenfield",
16
+ conditional: "!Dir.glob('*').empty?" })
17
+ end
18
+
19
+ def confirm_directory_empty
20
+ confirm = confirm_dependency({
21
+ system_query: "ls -A",
22
+ 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",
23
+ suggestion: "$ roro greenfield --force",
24
+ conditional: "Dir.glob('*').empty?" })
25
+ confirm || true
26
+ end
27
+
28
+ def remove_roro_artifacts
29
+ appname = Dir.pwd.split('/').last
30
+ check_for_clashes = "docker ps --filter name=#{appname}* -aq"
31
+ no_artifact_containers = IO.popen(check_for_clashes).count.eql?(0)
32
+ no_artifact_volumes = IO.popen("docker volume ls --filter name=greenfield*").count > (1)
33
+ unless (no_artifact_containers && no_artifact_volumes)
34
+ remove_clashes = ["docker ps --filter name=#{appname}* -aq | xargs docker stop | xargs docker rm"]
35
+ volumes = %w(db_data app)
36
+ volumes.each {|v| remove_clashes << "docker volume rm #{appname}_#{v}"}
37
+ question = [
38
+ "\n\nWe found some container and volume artifacts which may clash",
39
+ "with RoRo moving forward. You can verify their existence in a ",
40
+ "separate terminal with:",
41
+ "\n\t$ #{check_for_clashes}'\n",
42
+ "You can remove these artifacts with something like:\n"
43
+ ]
44
+ remove_clashes.each { |c| question << "\t$ #{c}"}
45
+ question << "\nWould you like RoRo to attempt to remove them for you?"
46
+ question = question.join("\n")
47
+
48
+ prompt = [question]
49
+ choices = {'y' => 'Yes', 'n' => 'No'}
50
+ choices.each { |k,v| prompt << "(#{k}) #{v.to_s}" }
51
+ answer = ask((prompt.join("\n\n") + "\n\n"),
52
+ default: 'y', limited_to: choices.keys)
53
+ remove_clashes.each {|c| system c }
54
+ end
55
+ end
56
+
57
+ def confirm_dependency(options)
58
+ msg = []
59
+ msg << ""
60
+ msg << delineator
61
+ msg << "It looks like #{options[:warning]}. The following bash command returns false:"
62
+ msg << "\t$ #{options[:system_query]}"
63
+ msg << "Please try these instructions:"
64
+ msg << ("\t" + options[:suggestion])
65
+ msg << delineator
66
+ conditional = options[:conditional] ? eval(options[:conditional]) : system(options[:system_query])
67
+ if conditional == false
68
+ raise(Roro::Error.new(msg.join("\n\n")))
69
+ else
70
+ true
71
+ end
72
+ end
73
+
74
+ def confirm_dependencies
75
+ dependencies = [
76
+ {
77
+ system_query: "which docker",
78
+ warning: "Docker isn't installed",
79
+ suggestion: "https://docs.docker.com/install/"
80
+ }, {
81
+ system_query: "which docker-compose",
82
+ warning: "Docker Compose isn't installed",
83
+ suggestion: "https://docs.docker.com/compose/install/"
84
+
85
+ }, {
86
+ system_query: "docker info",
87
+ warning: "the Docker daemon isn't running",
88
+ suggestion: "https://docs.docker.com/config/daemon/#start-the-daemon-manually"
89
+ }
90
+ ]
91
+
92
+ dependencies.each do |dependency|
93
+ confirm_dependency(dependency)
94
+ end
95
+ end
96
+ end
97
+ end
98
+ end
@@ -6,17 +6,25 @@ module Roro
6
6
  no_commands do
7
7
 
8
8
  def insert_roro_gem_into_gemfile
9
- insert_into_file 'Gemfile', "gem 'roro'", before: "group :development, :test do"
9
+ insert_into_file 'Gemfile', "gem 'roro'\n\n", before: "group :development, :test do"
10
10
  end
11
-
12
- def insert_pg_gem_into_gemfile
13
- comment_lines 'Gemfile', /sqlite/
14
- comment_lines 'Gemfile', /mysql/
15
- insert_into_file 'Gemfile', "gem 'pg'\n", before: "group :development, :test do"
11
+
12
+ def insert_db_gem(gem)
13
+ gem_lines = [
14
+ /gem\s['"]sqlite3['"]/,
15
+ /gem\s['"]mysql2['"]/,
16
+ /gem\s['"]pg['"]/,
17
+
18
+ ]
19
+ gem_lines.each do |line|
20
+ comment_lines 'Gemfile', line
21
+ gsub_file 'Gemfile', line, 'gem copied over by roro'
22
+ end
23
+ insert_into_file 'Gemfile', "gem '#{gem}'\n\n", before: "group :development, :test"
16
24
  end
17
25
 
18
26
  def insert_hfci_gem_into_gemfile
19
- insert_into_file 'Gemfile', "gem 'handsome_fencer-test'", after: "group :development, :test do"
27
+ insert_into_file 'Gemfile', "gem 'handsome_fencer-test'\n\n", after: "group :development, :test do"
20
28
  end
21
29
  end
22
30
  end
@@ -6,7 +6,9 @@ module Roro
6
6
  no_commands do
7
7
 
8
8
  def config_std_out_true
9
- prepend_to_file('config/boot.rb', "$stdout.sync = true\n\n", force: @env_hash[:use_force])
9
+ file = 'config/boot.rb'
10
+ line = "$stdout.sync = true\n\n"
11
+ prepend_to_file(file, line, force: true)
10
12
  end
11
13
 
12
14
  def gitignore_sensitive_files
@@ -0,0 +1,68 @@
1
+ module Roro
2
+ class Configuration < Thor
3
+
4
+ attr_reader :master, :app, :choices, :thor_actions
5
+
6
+ def initialize(options={})
7
+ @options = options || {}
8
+ @master = YAML.load_file(File.dirname(__FILE__) + '/roro_configurator.yml')
9
+ @master['services']['server_app']['vendors']['rails']['version'] = `ruby -v`.scan(/\d.\d/).first
10
+ @choices = @master['services']['server_app']['vendors']['rails']['choices']
11
+ @app = {}
12
+ @thor_actions = {}
13
+ configure
14
+ end
15
+
16
+ no_commands do
17
+
18
+ def configure
19
+ set_from_defaults
20
+ case
21
+ when @options['interactive'] && File.exist?('.roro_config.yml')
22
+ set_from_roro_config
23
+ set_from_interactive
24
+ when File.exist?('.roro_config.yml')
25
+ set_from_roro_config
26
+ when @options['interactive']
27
+ set_from_interactive
28
+ end
29
+ end
30
+
31
+ def set_from_defaults
32
+ svcs = @master['services']
33
+ rails = svcs['server_app']['vendors']['rails']
34
+ @app = {
35
+ 'main_app_name' => Dir.pwd.split('/').last,
36
+ 'database_host' => rails['env_vars']['DATABASE_HOST'],
37
+ 'ruby_version' => rails['version'],
38
+ 'frontend_service' => svcs['frontend']['name'],
39
+ 'webserver_service' => svcs['webserver']['default'],
40
+ 'database_service' => svcs['database']['name'],
41
+ 'database_vendor' => svcs['database']['vendor'],
42
+ }
43
+ @choices.each { |key, value| @thor_actions[key] = value["default"] }
44
+ end
45
+
46
+ def set_from_roro_config
47
+ yaml = YAML.load_file(Dir.pwd + '/.roro_config.yml')
48
+ yaml.each { |key, value| @app[key] = value }
49
+ if yaml['thor_actions']
50
+ yaml['thor_actions'].each do |key, value|
51
+ @thor_actions[key] = value
52
+ end
53
+ end
54
+ end
55
+
56
+ def set_from_interactive
57
+ @choices.each do |key, v|
58
+ prompt = ["\n\n" + v['question']]
59
+ v['choices'].each { |k,v| prompt << "(#{k}) #{v.to_s}" }
60
+ answer = ask((prompt.join("\n\n") + "\n\n"),
61
+ default: v['default'],
62
+ limited_to: v['choices'].keys)
63
+ @thor_actions[key] = answer
64
+ end
65
+ end
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,13 @@
1
+ module Roro
2
+ class CLI < Thor
3
+ include Thor::Actions
4
+
5
+ desc "generate::config::roro", "Generates 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
12
+ end
13
+ end
@@ -0,0 +1,17 @@
1
+ # module Roro
2
+ # class CLI < Thor
3
+ # include Thor::Actions
4
+
5
+ # desc "generate::config::rails", "Generates a config file to use roro with
6
+ # a rails app at .roro.yml"
7
+ # map "generate::config::rails" => "generate_config_rails"
8
+
9
+ # def generate_config_rails
10
+ # master_config = YAML.load_file(ENV['PWD'] + "/lib/roro/cli/roro_configurator.yml")
11
+ # template 'base/.roro_config.yml', '.roro_config.yml'
12
+ # end
13
+
14
+ # no_commands do
15
+ # end
16
+ # end
17
+ # end
@@ -0,0 +1 @@
1
+ require_relative 'config/rails'
@@ -0,0 +1,79 @@
1
+ # require 'openssl'
2
+ # require 'base64'
3
+ # require 'handsome_fencer/crypto'
4
+
5
+ # module Roro
6
+
7
+ # class CLI < Thor
8
+
9
+ # include Thor::Actions
10
+ # include HandsomeFencer::Crypto
11
+
12
+ # desc "generate_keys", "Generates keys for all environments. If you have .env files like './**/production.env' and './**/staging.env' this command assumes you need keys for the production and staging environments, and will generate them for you."
13
+
14
+ # def generate_keys
15
+ # generate_key
16
+ # end
17
+
18
+ # desc "generate_key", "Generate a key for each environment"
19
+ # method_option :environment, type: :hash, default: {}, desc: "Pass a list of environment variables like so: env:var", banner: "development, staging"
20
+
21
+ # def generate_key(*args)
22
+ # environments = args.first ? [args.first] : gather_environments
23
+ # environments.each do |environment|
24
+ # confirm_files_decrypted?(environment)
25
+ # create_file "docker/keys/#{environment}.key", encoded_key
26
+ # end
27
+ # end
28
+
29
+ # no_commands do
30
+
31
+ # def encoded_key
32
+ # @cipher = OpenSSL::Cipher.new 'AES-128-CBC'
33
+ # @salt = '8 octets'
34
+ # @new_key = @cipher.random_key
35
+ # Base64.encode64(@new_key)
36
+ # end
37
+
38
+ # def gather_environments
39
+ # environments = []
40
+ # ['.env', '.env.enc'].each do |extension|
41
+
42
+ # HandsomeFencer::Crypto.source_files('.', extension).each do |env_file|
43
+ # environments << env_file.split('/').last.split(extension).last
44
+ # end
45
+ # end
46
+ # environments.uniq
47
+ # end
48
+
49
+ # def confirm_files_decrypted?(environment)
50
+ # orphan_encrypted = []
51
+ # HandsomeFencer::Crypto.source_files('.', '.env.enc').each do |file|
52
+ # orphan_encrypted << file unless File.exist? file.split('.enc').first
53
+ # end
54
+
55
+ # if !orphan_encrypted.empty?
56
+ # raise Roro::Error.new("You have an encrypted files (.env.enc) #{orphan_encrypted} that do not have corresponding decrypted files (.env). Please decrypt or remove these encrypted files before generating a new key for #{environment}.")
57
+ # end
58
+ # true
59
+ # end
60
+ # end
61
+ # end
62
+
63
+ # # desc "generate keys", "Generate keys on a per-environment basis"
64
+ # #
65
+ # # method_option :environment, type: :string, default: {}, desc: "Pass a list of environment variables like so: env:var", banner: "development, staging"
66
+ # #
67
+
68
+ # # def generate_keys
69
+ # # default_environments = %w[circleci development production]
70
+ # # environments = args.first ? [args.first] : default_environments
71
+ # # environments.each do |environment|
72
+ # # @cipher = OpenSSL::Cipher.new 'AES-128-CBC'
73
+ # # @salt = '8 octets'
74
+ # # @new_key = @cipher.random_key
75
+ # #
76
+ # # create_file "docker/keys/#{environment}.key", Base64.encode64(@new_key)
77
+ # # end
78
+ # # end
79
+ # end
@@ -7,36 +7,35 @@ module Roro
7
7
  include Thor::Actions
8
8
 
9
9
  desc "greenfield", "Greenfield a brand new rails app using Docker's instructions"
10
-
10
+
11
11
  method_option :env_vars, type: :hash, default: {}, desc: "Pass a list of environment variables like so: env:var", banner: "key1:value1 key2:value2"
12
12
  method_option :interactive, desc: "Set up your environment variables as you go."
13
13
  method_option :force, desc: "force over-write of existing files"
14
14
 
15
15
 
16
16
  def greenfield
17
+ confirm_directory_empty
17
18
  confirm_dependencies
18
- confirm_dependency({
19
- system_query: "ls -A",
20
- 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",
21
- suggestion: "$ roro greenfield --force",
22
- conditional: "Dir.glob('*').empty?" })
23
- get_configuration_variables
19
+ remove_roro_artifacts
20
+ configure_for_greenfielding
24
21
  copy_greenfield_files
25
- copy_greenfield_to_host
26
- @env_hash[:use_force] = { force: true }
27
- rollon
22
+ run_greenfield_commands
28
23
  end
29
24
 
30
25
  no_commands do
31
-
32
- def copy_greenfield_files
33
- template 'greenfield/Dockerfile.tt', 'Dockerfile', @env_hash
34
- template 'greenfield/docker-compose.yml.tt', 'docker-compose.yml', @env_hash
35
- end
36
26
 
37
- def copy_greenfield_to_host
27
+ def configure_for_greenfielding
28
+ @config ||= Roro::Configuration.new(options)
29
+ end
30
+
31
+ def run_greenfield_commands
38
32
  system "DOCKER_BUILDKIT=1 docker build --file Dockerfile --output . ."
33
+ rollon
39
34
  end
35
+
36
+ def copy_greenfield_files
37
+ template 'greenfield/Dockerfile.tt', 'Dockerfile', @config.app
38
+ end
40
39
  end
41
40
  end
42
41
  end