roro 0.3.2 → 0.3.8
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 +4 -4
- data/.gitignore +15 -8
- data/Guardfile +4 -7
- data/lib/roro.rb +1 -1
- data/lib/roro/cli.rb +74 -6
- data/lib/roro/cli/base/base.rb +8 -0
- data/lib/roro/cli/base/base_files.rb +24 -0
- data/lib/roro/cli/base/check_dependencies.rb +98 -0
- data/lib/roro/cli/base/continuous_integration.rb +13 -0
- data/lib/roro/cli/base/insert_gems.rb +31 -0
- data/lib/roro/cli/base/insertions.rb +19 -0
- data/lib/roro/cli/base/utilities.rb +39 -0
- data/lib/roro/cli/cli.rb +99 -0
- data/lib/roro/cli/configuration.rb +69 -0
- data/lib/roro/cli/expose.rb +8 -7
- data/lib/roro/cli/generate/config.rb +13 -0
- data/lib/roro/cli/generate/config/rails.rb +17 -0
- data/lib/roro/cli/generate/generate.rb +1 -0
- data/lib/roro/cli/generate/generate_keys.rb +47 -0
- data/lib/roro/cli/greenfield.rb +22 -87
- data/lib/roro/cli/obfuscate.rb +10 -11
- data/lib/roro/cli/rollon.rb +74 -11
- data/lib/roro/cli/rollon/stories.rb +3 -0
- data/{docker/env_files/.keep → lib/roro/cli/rollon/stories/database.rb} +0 -0
- data/lib/roro/cli/rollon/stories/rails.rb +1 -0
- data/lib/roro/cli/rollon/stories/rails/database/database.rb +31 -0
- data/lib/roro/cli/rollon/stories/rails/database/with_mysql.rb +22 -0
- data/lib/roro/cli/rollon/stories/rails/database/with_postgres.rb +21 -0
- data/lib/roro/cli/rollon/stories/ruby_gem.rb +77 -0
- data/lib/roro/cli/rollon/stories/ruby_gem/with_ci_cd.rb +60 -0
- data/lib/roro/cli/rollon/stories/stories.rb +7 -0
- data/lib/roro/cli/roro_configurator.yml +157 -0
- data/lib/roro/cli/ruby_gem.rb +61 -42
- data/lib/roro/cli/templates/base/.dockerignore +51 -0
- data/{docker/keys → lib/roro/cli/templates/base}/.keep +0 -0
- data/lib/roro/cli/templates/base/.roro_config.yml +15 -0
- data/lib/roro/cli/templates/base/Dockerfile.tt +82 -0
- data/lib/roro/cli/templates/base/config/database.mysql.yml +19 -0
- data/lib/roro/cli/templates/{config/database.yml → base/config/database.pg.yml} +0 -0
- data/{test_apps/dummy_roro/.circleci/config.yml → lib/roro/cli/templates/circleci/config.yml.tt} +7 -6
- data/lib/roro/cli/templates/{docker/containers/database → dockerize}/.keep +0 -0
- data/lib/roro/cli/templates/dockerize/Dockerfile.tt +23 -0
- data/lib/roro/cli/templates/dockerize/docker-compose.yml.tt +60 -0
- data/lib/roro/cli/templates/dockerize/docker-entrypoint.sh +9 -0
- data/lib/roro/cli/templates/greenfield/Dockerfile.tt +43 -0
- data/lib/roro/cli/templates/{docker/env_files → jumpstart}/.keep +0 -0
- data/lib/roro/cli/templates/jumpstart/Dockerfile.tt +30 -0
- data/lib/roro/cli/templates/jumpstart/docker-compose.yml +59 -0
- data/lib/roro/cli/templates/jumpstart/docker-entrypoint.sh +16 -0
- data/lib/roro/cli/templates/livereload/hosts.example +7 -0
- data/lib/roro/cli/templates/{docker/keys → roro}/.keep +0 -0
- data/lib/roro/cli/templates/roro/docker-compose.yml.tt +60 -0
- data/lib/roro/cli/templates/{ruby_gem/docker/env_files → roro/roro}/.keep +0 -0
- data/lib/roro/cli/templates/{ruby_gem/docker/keys → roro/roro/containers}/.keep +0 -0
- data/{test_apps/dummy/app/assets/images → lib/roro/cli/templates/roro/roro/containers/app}/.keep +0 -0
- data/{test_apps/dummy/app/assets/javascripts/channels → lib/roro/cli/templates/roro/roro/containers/frontend}/.keep +0 -0
- data/lib/roro/cli/templates/roro/roro/docker-entrypoint.sh.tt +8 -0
- data/lib/roro/cli/templates/ruby_gem/{config.yml → .circleci/config.yml} +0 -0
- data/lib/roro/cli/templates/ruby_gem/docker-compose.yml +3 -3
- data/lib/roro/cli/templates/ruby_gem/roro/containers/gem/Dockerfile.tt +9 -0
- data/{test_apps/dummy/app/controllers/concerns → lib/roro/cli/templates/ruby_gem/roro/env_files}/.keep +0 -0
- data/{test_apps/dummy/app/models/concerns → lib/roro/cli/templates/ruby_gem/roro/keys}/.keep +0 -0
- data/{test_apps/dummy/lib/assets → lib/roro/cli/templates/stories}/.keep +0 -0
- data/lib/roro/cli/templates/stories/with_mysql/_service.yml +10 -0
- data/{test_apps/dummy/lib/tasks → lib/roro/cli/templates/stories/with_postgresql}/.keep +0 -0
- data/lib/roro/cli/templates/stories/with_postgresql/_service.yml +7 -0
- data/lib/roro/version.rb +1 -1
- data/roro.gemspec +7 -4
- data/{test_apps/dummy/log → sandbox}/.keep +0 -0
- 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/activesupport-6.0.3.2.gem +0 -0
- data/vendor/cache/addressable-2.7.0.gem +0 -0
- data/vendor/cache/builder-3.2.4.gem +0 -0
- data/vendor/cache/byebug-11.1.3.gem +0 -0
- data/vendor/cache/coderay-1.1.3.gem +0 -0
- data/vendor/cache/concurrent-ruby-1.1.7.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/ffi-1.13.1.gem +0 -0
- data/vendor/cache/gem-release-2.1.1.gem +0 -0
- data/vendor/cache/guard-2.16.2.gem +0 -0
- data/vendor/cache/i18n-1.8.5.gem +0 -0
- data/vendor/cache/launchy-2.5.0.gem +0 -0
- data/vendor/cache/listen-3.2.1.gem +0 -0
- data/vendor/cache/loofah-2.6.0.gem +0 -0
- data/vendor/cache/lumberjack-1.2.7.gem +0 -0
- data/vendor/cache/method_source-1.0.0.gem +0 -0
- data/vendor/cache/minitest-5.14.1.gem +0 -0
- data/vendor/cache/minitest-rails-6.0.1.gem +0 -0
- data/vendor/cache/mocha-1.11.2.gem +0 -0
- data/vendor/cache/multi_json-1.15.0.gem +0 -0
- data/vendor/cache/net-scp-3.0.0.gem +0 -0
- data/vendor/cache/net-ssh-6.1.0.gem +0 -0
- data/vendor/cache/{nokogiri-1.9.1.gem → nokogiri-1.10.10.gem} +0 -0
- data/vendor/cache/notiffany-0.1.3.gem +0 -0
- data/vendor/cache/pry-0.13.1.gem +0 -0
- data/vendor/cache/public_suffix-4.0.5.gem +0 -0
- data/vendor/cache/rack-2.2.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/rake-13.0.1.gem +0 -0
- data/vendor/cache/rb-fsevent-0.10.4.gem +0 -0
- data/vendor/cache/rb-inotify-0.10.1.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
- data/vendor/cache/sorcerer-2.0.1.gem +0 -0
- data/vendor/cache/thor-1.0.1.gem +0 -0
- data/vendor/cache/tzinfo-1.2.7.gem +0 -0
- data/vendor/cache/zeitwerk-2.4.0.gem +0 -0
- metadata +163 -281
- data/.circleci/config.yml +0 -177
- data/.circleci/setup-gem-credentials.sh +0 -3
- data/.ruby-version +0 -1
- data/Gemfile.lock +0 -165
- data/_config.yml +0 -1
- data/docker-compose.yml +0 -21
- data/docker/containers/2_5_3/Dockerfile +0 -10
- data/docker/containers/2_6_0/Dockerfile +0 -10
- data/docker/containers/app/Dockerfile +0 -10
- data/docker/env_files/circleci.env.enc +0 -5
- data/lib/roro/cli/base.rb +0 -137
- data/lib/roro/cli/generate_keys.rb +0 -79
- data/lib/roro/cli/templates/Gemfile.lock +0 -0
- data/lib/roro/cli/templates/Guardfile +0 -81
- data/lib/roro/cli/templates/circleci/Rakefile +0 -4
- data/lib/roro/cli/templates/circleci/config.job-example.yml +0 -33
- data/lib/roro/cli/templates/circleci/config.yml +0 -69
- data/lib/roro/cli/templates/circleci/config.yml.workflow-example +0 -62
- data/lib/roro/cli/templates/circleci/deploy.rake +0 -127
- data/lib/roro/cli/templates/config.yml +0 -71
- data/lib/roro/cli/templates/docker-compose.yml +0 -53
- data/lib/roro/cli/templates/docker/containers/app/Dockerfile.tt +0 -12
- data/lib/roro/cli/templates/docker/containers/web/Dockerfile.tt +0 -18
- data/lib/roro/cli/templates/docker/containers/web/app.conf.tt +0 -23
- data/lib/roro/cli/templates/docker/overrides/circleci.yml.tt +0 -19
- data/lib/roro/cli/templates/docker/overrides/production.yml.tt +0 -26
- data/lib/roro/cli/templates/docker/web/Dockerfile +0 -20
- data/lib/roro/cli/templates/docker/web/app.conf +0 -23
- data/lib/roro/cli/templates/gitignore +0 -27
- data/lib/roro/cli/templates/greenfield/Dockerfile +0 -8
- data/lib/roro/cli/templates/greenfield/Gemfile +0 -2
- data/lib/roro/cli/templates/greenfield/Gemfile.lock +0 -0
- data/lib/roro/cli/templates/greenfield/config/database.yml.example +0 -16
- data/lib/roro/cli/templates/greenfield/docker-compose.yml +0 -15
- data/lib/roro/cli/templates/lib/tasks/deploy.rake +0 -126
- data/lib/roro/cli/templates/ruby_gem/docker/containers/app/Dockerfile.tt +0 -10
- data/test_apps/dummy/.gitignore +0 -27
- data/test_apps/dummy/Gemfile +0 -61
- data/test_apps/dummy/README.md +0 -24
- data/test_apps/dummy/Rakefile +0 -6
- data/test_apps/dummy/app/assets/config/manifest.js +0 -3
- data/test_apps/dummy/app/assets/javascripts/application.js +0 -16
- data/test_apps/dummy/app/assets/javascripts/cable.js +0 -13
- data/test_apps/dummy/app/assets/stylesheets/application.css +0 -15
- data/test_apps/dummy/app/channels/application_cable/channel.rb +0 -4
- data/test_apps/dummy/app/channels/application_cable/connection.rb +0 -4
- data/test_apps/dummy/app/controllers/application_controller.rb +0 -2
- data/test_apps/dummy/app/helpers/application_helper.rb +0 -2
- data/test_apps/dummy/app/jobs/application_job.rb +0 -2
- data/test_apps/dummy/app/mailers/application_mailer.rb +0 -4
- data/test_apps/dummy/app/models/application_record.rb +0 -3
- data/test_apps/dummy/app/views/layouts/application.html.erb +0 -15
- data/test_apps/dummy/app/views/layouts/mailer.html.erb +0 -13
- data/test_apps/dummy/app/views/layouts/mailer.text.erb +0 -1
- data/test_apps/dummy/bin/bundle +0 -3
- data/test_apps/dummy/bin/rails +0 -4
- data/test_apps/dummy/bin/rake +0 -4
- data/test_apps/dummy/bin/setup +0 -36
- data/test_apps/dummy/bin/update +0 -31
- data/test_apps/dummy/bin/yarn +0 -11
- data/test_apps/dummy/config.ru +0 -5
- data/test_apps/dummy/config/application.rb +0 -19
- data/test_apps/dummy/config/boot.rb +0 -4
- data/test_apps/dummy/config/cable.yml +0 -10
- data/test_apps/dummy/config/credentials.yml.enc +0 -1
- data/test_apps/dummy/config/database.yml +0 -85
- data/test_apps/dummy/config/environment.rb +0 -5
- data/test_apps/dummy/config/environments/development.rb +0 -61
- data/test_apps/dummy/config/environments/production.rb +0 -94
- data/test_apps/dummy/config/environments/test.rb +0 -46
- data/test_apps/dummy/config/initializers/application_controller_renderer.rb +0 -8
- data/test_apps/dummy/config/initializers/assets.rb +0 -14
- data/test_apps/dummy/config/initializers/backtrace_silencers.rb +0 -7
- data/test_apps/dummy/config/initializers/content_security_policy.rb +0 -25
- data/test_apps/dummy/config/initializers/cookies_serializer.rb +0 -5
- data/test_apps/dummy/config/initializers/filter_parameter_logging.rb +0 -4
- data/test_apps/dummy/config/initializers/inflections.rb +0 -16
- data/test_apps/dummy/config/initializers/mime_types.rb +0 -4
- data/test_apps/dummy/config/initializers/wrap_parameters.rb +0 -14
- data/test_apps/dummy/config/locales/en.yml +0 -33
- data/test_apps/dummy/config/puma.rb +0 -34
- data/test_apps/dummy/config/routes.rb +0 -3
- data/test_apps/dummy/config/spring.rb +0 -6
- data/test_apps/dummy/config/storage.yml +0 -34
- data/test_apps/dummy/db/seeds.rb +0 -7
- data/test_apps/dummy/package.json +0 -5
- data/test_apps/dummy/public/404.html +0 -67
- data/test_apps/dummy/public/422.html +0 -67
- data/test_apps/dummy/public/500.html +0 -66
- 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 +0 -1
- data/test_apps/dummy/storage/.keep +0 -0
- data/test_apps/dummy/test/application_system_test_case.rb +0 -5
- 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 +0 -10
- data/test_apps/dummy/tmp/.keep +0 -0
- data/test_apps/dummy/vendor/.keep +0 -0
- data/test_apps/dummy_gem/.keep +0 -0
- data/test_apps/dummy_roro/.circleci/Rakefile +0 -4
- data/test_apps/dummy_roro/.circleci/config.job-example.yml +0 -33
- data/test_apps/dummy_roro/.circleci/config.yml.workflow-example +0 -62
- data/test_apps/dummy_roro/.circleci/deploy.rake +0 -127
- data/test_apps/dummy_roro/.gitignore +0 -27
- data/test_apps/dummy_roro/Gemfile +0 -64
- data/test_apps/dummy_roro/README.md +0 -24
- data/test_apps/dummy_roro/Rakefile +0 -6
- data/test_apps/dummy_roro/app/assets/config/manifest.js +0 -3
- data/test_apps/dummy_roro/app/assets/images/.keep +0 -0
- data/test_apps/dummy_roro/app/assets/javascripts/application.js +0 -16
- data/test_apps/dummy_roro/app/assets/javascripts/cable.js +0 -13
- data/test_apps/dummy_roro/app/assets/javascripts/channels/.keep +0 -0
- data/test_apps/dummy_roro/app/assets/stylesheets/application.css +0 -15
- data/test_apps/dummy_roro/app/channels/application_cable/channel.rb +0 -4
- data/test_apps/dummy_roro/app/channels/application_cable/connection.rb +0 -4
- data/test_apps/dummy_roro/app/controllers/application_controller.rb +0 -2
- data/test_apps/dummy_roro/app/controllers/concerns/.keep +0 -0
- data/test_apps/dummy_roro/app/helpers/application_helper.rb +0 -2
- data/test_apps/dummy_roro/app/jobs/application_job.rb +0 -2
- data/test_apps/dummy_roro/app/mailers/application_mailer.rb +0 -4
- data/test_apps/dummy_roro/app/models/application_record.rb +0 -3
- data/test_apps/dummy_roro/app/models/concerns/.keep +0 -0
- data/test_apps/dummy_roro/app/views/layouts/application.html.erb +0 -15
- data/test_apps/dummy_roro/app/views/layouts/mailer.html.erb +0 -13
- data/test_apps/dummy_roro/app/views/layouts/mailer.text.erb +0 -1
- data/test_apps/dummy_roro/bin/bundle +0 -3
- data/test_apps/dummy_roro/bin/rails +0 -4
- data/test_apps/dummy_roro/bin/rake +0 -4
- data/test_apps/dummy_roro/bin/setup +0 -36
- data/test_apps/dummy_roro/bin/update +0 -31
- data/test_apps/dummy_roro/bin/yarn +0 -11
- data/test_apps/dummy_roro/config.ru +0 -5
- data/test_apps/dummy_roro/config/application.rb +0 -19
- data/test_apps/dummy_roro/config/boot.rb +0 -4
- data/test_apps/dummy_roro/config/cable.yml +0 -10
- data/test_apps/dummy_roro/config/credentials.yml.enc +0 -1
- data/test_apps/dummy_roro/config/database.yml +0 -20
- data/test_apps/dummy_roro/config/environment.rb +0 -5
- data/test_apps/dummy_roro/config/environments/development.rb +0 -61
- data/test_apps/dummy_roro/config/environments/production.rb +0 -94
- data/test_apps/dummy_roro/config/environments/test.rb +0 -46
- data/test_apps/dummy_roro/config/initializers/application_controller_renderer.rb +0 -8
- data/test_apps/dummy_roro/config/initializers/assets.rb +0 -14
- data/test_apps/dummy_roro/config/initializers/backtrace_silencers.rb +0 -7
- data/test_apps/dummy_roro/config/initializers/content_security_policy.rb +0 -25
- data/test_apps/dummy_roro/config/initializers/cookies_serializer.rb +0 -5
- data/test_apps/dummy_roro/config/initializers/filter_parameter_logging.rb +0 -4
- data/test_apps/dummy_roro/config/initializers/inflections.rb +0 -16
- data/test_apps/dummy_roro/config/initializers/mime_types.rb +0 -4
- data/test_apps/dummy_roro/config/initializers/wrap_parameters.rb +0 -14
- data/test_apps/dummy_roro/config/locales/en.yml +0 -33
- data/test_apps/dummy_roro/config/puma.rb +0 -34
- data/test_apps/dummy_roro/config/routes.rb +0 -3
- data/test_apps/dummy_roro/config/spring.rb +0 -6
- data/test_apps/dummy_roro/config/storage.yml +0 -34
- data/test_apps/dummy_roro/db/seeds.rb +0 -7
- data/test_apps/dummy_roro/docker-compose.yml +0 -51
- data/test_apps/dummy_roro/docker/containers/app/Dockerfile +0 -12
- data/test_apps/dummy_roro/docker/containers/app/circleci.env +0 -2
- data/test_apps/dummy_roro/docker/containers/app/development.env +0 -2
- data/test_apps/dummy_roro/docker/containers/app/production.env +0 -2
- data/test_apps/dummy_roro/docker/containers/app/staging.env +0 -2
- data/test_apps/dummy_roro/docker/containers/database/.keep +0 -0
- data/test_apps/dummy_roro/docker/containers/database/circleci.env +0 -3
- data/test_apps/dummy_roro/docker/containers/database/development.env +0 -3
- data/test_apps/dummy_roro/docker/containers/database/production.env +0 -3
- data/test_apps/dummy_roro/docker/containers/database/staging.env +0 -3
- data/test_apps/dummy_roro/docker/containers/web/Dockerfile +0 -18
- data/test_apps/dummy_roro/docker/containers/web/app.conf +0 -23
- data/test_apps/dummy_roro/docker/containers/web/circleci.env +0 -1
- data/test_apps/dummy_roro/docker/containers/web/development.env +0 -1
- data/test_apps/dummy_roro/docker/containers/web/production.env +0 -1
- data/test_apps/dummy_roro/docker/containers/web/staging.env +0 -1
- data/test_apps/dummy_roro/docker/env_files/circleci.env +0 -12
- data/test_apps/dummy_roro/docker/env_files/circleci.env.enc +0 -14
- data/test_apps/dummy_roro/docker/env_files/production.env +0 -2
- data/test_apps/dummy_roro/docker/env_files/production.env.enc +0 -2
- data/test_apps/dummy_roro/docker/keys/.keep +0 -0
- data/test_apps/dummy_roro/docker/overrides/circleci.yml +0 -19
- data/test_apps/dummy_roro/docker/overrides/production.yml +0 -26
- 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 +0 -126
- data/test_apps/dummy_roro/log/.keep +0 -0
- data/test_apps/dummy_roro/package.json +0 -5
- data/test_apps/dummy_roro/public/404.html +0 -67
- data/test_apps/dummy_roro/public/422.html +0 -67
- data/test_apps/dummy_roro/public/500.html +0 -66
- 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 +0 -1
- data/test_apps/dummy_roro/storage/.keep +0 -0
- data/test_apps/dummy_roro/test/application_system_test_case.rb +0 -5
- 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 +0 -10
- data/test_apps/dummy_roro/tmp/.keep +0 -0
- data/test_apps/dummy_roro/vendor/.keep +0 -0
- data/test_apps/greenfield/.keep +0 -0
- data/vendor/cache/actionpack-5.2.2.gem +0 -0
- data/vendor/cache/actionview-5.2.2.gem +0 -0
- data/vendor/cache/activesupport-5.2.2.gem +0 -0
- data/vendor/cache/addressable-2.5.2.gem +0 -0
- data/vendor/cache/builder-3.2.3.gem +0 -0
- data/vendor/cache/coderay-1.1.2.gem +0 -0
- data/vendor/cache/concurrent-ruby-1.1.4.gem +0 -0
- data/vendor/cache/crass-1.0.4.gem +0 -0
- data/vendor/cache/erubi-1.8.0.gem +0 -0
- data/vendor/cache/ffi-1.9.25.gem +0 -0
- data/vendor/cache/guard-2.15.0.gem +0 -0
- data/vendor/cache/i18n-1.3.0.gem +0 -0
- data/vendor/cache/launchy-2.4.3.gem +0 -0
- data/vendor/cache/listen-3.1.5.gem +0 -0
- data/vendor/cache/loofah-2.2.3.gem +0 -0
- data/vendor/cache/lumberjack-1.0.13.gem +0 -0
- data/vendor/cache/method_source-0.9.2.gem +0 -0
- data/vendor/cache/minitest-5.11.3.gem +0 -0
- data/vendor/cache/minitest-rails-3.0.0.gem +0 -0
- data/vendor/cache/multi_json-1.13.1.gem +0 -0
- data/vendor/cache/net-scp-2.0.0.gem +0 -0
- data/vendor/cache/net-ssh-5.2.0.gem +0 -0
- data/vendor/cache/notiffany-0.1.1.gem +0 -0
- data/vendor/cache/pry-0.12.2.gem +0 -0
- data/vendor/cache/public_suffix-3.0.3.gem +0 -0
- data/vendor/cache/rack-2.0.6.gem +0 -0
- data/vendor/cache/rails-html-sanitizer-1.0.4.gem +0 -0
- data/vendor/cache/railties-5.2.2.gem +0 -0
- data/vendor/cache/rake-10.5.0.gem +0 -0
- data/vendor/cache/rb-fsevent-0.10.3.gem +0 -0
- data/vendor/cache/rb-inotify-0.10.0.gem +0 -0
- data/vendor/cache/ruby_dep-1.5.0.gem +0 -0
- data/vendor/cache/shoulda-3.6.0.gem +0 -0
- data/vendor/cache/shoulda-context-1.2.2.gem +0 -0
- data/vendor/cache/shoulda-matchers-3.1.2.gem +0 -0
- data/vendor/cache/sorcerer-1.0.2.gem +0 -0
- data/vendor/cache/thor-0.20.3.gem +0 -0
- data/vendor/cache/tzinfo-1.2.5.gem +0 -0
@@ -0,0 +1,69 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
module Roro
|
3
|
+
class Configuration < Thor
|
4
|
+
|
5
|
+
attr_reader :master, :app, :choices, :thor_actions
|
6
|
+
|
7
|
+
def initialize(options={})
|
8
|
+
@options = options || {}
|
9
|
+
@master = YAML.load_file(File.dirname(__FILE__) + '/roro_configurator.yml')
|
10
|
+
@master['services']['server_app']['vendors']['rails']['version'] = `ruby -v`.scan(/\d.\d/).first
|
11
|
+
@choices = @master['services']['server_app']['vendors']['rails']['choices']
|
12
|
+
@app = {}
|
13
|
+
@thor_actions = {}
|
14
|
+
configure
|
15
|
+
end
|
16
|
+
|
17
|
+
no_commands do
|
18
|
+
|
19
|
+
def configure
|
20
|
+
set_from_defaults
|
21
|
+
case
|
22
|
+
when @options['interactive'] && File.exist?('.roro_config.yml')
|
23
|
+
set_from_roro_config
|
24
|
+
set_from_interactive
|
25
|
+
when File.exist?('.roro_config.yml')
|
26
|
+
set_from_roro_config
|
27
|
+
when @options['interactive']
|
28
|
+
set_from_interactive
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def set_from_defaults
|
33
|
+
svcs = @master['services']
|
34
|
+
rails = svcs['server_app']['vendors']['rails']
|
35
|
+
@app = {
|
36
|
+
'main_app_name' => Dir.pwd.split('/').last,
|
37
|
+
'database_host' => rails['env_vars']['DATABASE_HOST'],
|
38
|
+
'ruby_version' => rails['version'],
|
39
|
+
'frontend_service' => svcs['frontend']['name'],
|
40
|
+
'webserver_service' => svcs['webserver']['default'],
|
41
|
+
'database_service' => svcs['database']['name'],
|
42
|
+
'database_vendor' => svcs['database']['vendor'],
|
43
|
+
}
|
44
|
+
@choices.each { |key, value| @thor_actions[key] = value["default"] }
|
45
|
+
end
|
46
|
+
|
47
|
+
def set_from_roro_config
|
48
|
+
yaml = YAML.load_file(Dir.pwd + '/.roro_config.yml')
|
49
|
+
yaml.each { |key, value| @app[key] = value }
|
50
|
+
if yaml['thor_actions']
|
51
|
+
yaml['thor_actions'].each do |key, value|
|
52
|
+
@thor_actions[key] = value
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def set_from_interactive
|
58
|
+
@choices.each do |key, v|
|
59
|
+
prompt = ["\n\n" + v['question']]
|
60
|
+
v['choices'].each { |k,v| prompt << "(#{k}) #{v.to_s}" }
|
61
|
+
answer = ask((prompt.join("\n\n") + "\n\n"),
|
62
|
+
default: v['default'],
|
63
|
+
limited_to: v['choices'].keys)
|
64
|
+
@thor_actions[key] = answer
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
data/lib/roro/cli/expose.rb
CHANGED
@@ -1,13 +1,14 @@
|
|
1
1
|
module Roro
|
2
2
|
class CLI < Thor
|
3
|
+
|
4
|
+
no_commands do
|
3
5
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
HandsomeFencer::Crypto.expose(environment, 'docker')
|
6
|
+
def expose(*args)
|
7
|
+
environments = args.first ? [args.first] : gather_environments
|
8
|
+
environments.each do |environment|
|
9
|
+
HandsomeFencer::Crypto.expose(environment, 'roro')
|
10
|
+
end
|
10
11
|
end
|
11
12
|
end
|
12
13
|
end
|
13
|
-
end
|
14
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module Roro
|
2
|
+
class CLI < Thor
|
3
|
+
include Thor::Actions
|
4
|
+
|
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
|
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,47 @@
|
|
1
|
+
module Roro
|
2
|
+
|
3
|
+
class CLI < Thor
|
4
|
+
|
5
|
+
no_commands do
|
6
|
+
|
7
|
+
def generate_key_or_keys(*args)
|
8
|
+
environments = args.first ? [args.first] : gather_environments
|
9
|
+
environments.each do |environment|
|
10
|
+
|
11
|
+
confirm_files_decrypted?(environment)
|
12
|
+
create_file "roro/keys/#{environment}.key", encoded_key
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def encoded_key
|
17
|
+
@cipher = OpenSSL::Cipher.new 'AES-128-CBC'
|
18
|
+
@salt = '8 octets'
|
19
|
+
@new_key = @cipher.random_key
|
20
|
+
Base64.encode64(@new_key)
|
21
|
+
end
|
22
|
+
|
23
|
+
def gather_environments
|
24
|
+
environments = []
|
25
|
+
['.env', '.env.enc'].each do |extension|
|
26
|
+
HandsomeFencer::Crypto.source_files('roro', extension).each do |env_file|
|
27
|
+
environments << env_file.split('/').last.split(extension).last
|
28
|
+
end
|
29
|
+
end
|
30
|
+
environments.uniq
|
31
|
+
end
|
32
|
+
|
33
|
+
def confirm_files_decrypted?(environment)
|
34
|
+
orphan_encrypted = []
|
35
|
+
HandsomeFencer::Crypto.source_files('.', '.env.enc').each do |file|
|
36
|
+
unless File.exist? file.split('.enc').first
|
37
|
+
orphan_encrypted << file
|
38
|
+
end
|
39
|
+
end
|
40
|
+
if !orphan_encrypted.empty?
|
41
|
+
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}.")
|
42
|
+
end
|
43
|
+
true
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
data/lib/roro/cli/greenfield.rb
CHANGED
@@ -1,96 +1,31 @@
|
|
1
|
-
require 'os'
|
2
|
-
|
3
1
|
module Roro
|
4
2
|
|
5
3
|
class CLI < Thor
|
6
|
-
|
7
|
-
include Thor::Actions
|
8
|
-
|
9
|
-
desc "greenfield", "Greenfield a brand new rails app using Docker's instructions"
|
10
|
-
|
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
|
-
method_option :interactive, desc: "Set up your environment variables as you go."
|
13
|
-
method_option :force, desc: "force over-write of existing files"
|
14
|
-
|
15
|
-
def greenfield
|
16
|
-
|
17
|
-
confirm_dependencies
|
18
|
-
copy_greenfield_files
|
19
|
-
as_system("docker-compose run web rails new . --force --database=postgresql --skip-bundle")
|
20
|
-
chown_if_required
|
21
|
-
as_system('sudo docker-compose build')
|
22
|
-
as_system('mv -f config/database.yml.example config/database.yml')
|
23
|
-
as_system('docker-compose up --build --force-recreate -d ')
|
24
|
-
as_system 'docker-compose run web bin/rails db:create'
|
25
|
-
end
|
26
|
-
|
4
|
+
|
27
5
|
no_commands do
|
28
|
-
|
29
|
-
def
|
30
|
-
|
31
|
-
|
6
|
+
|
7
|
+
def greenfield
|
8
|
+
confirm_directory_empty
|
9
|
+
confirm_dependencies
|
10
|
+
remove_roro_artifacts
|
11
|
+
configure_for_greenfielding
|
12
|
+
copy_greenfield_files
|
13
|
+
run_greenfield_commands
|
32
14
|
end
|
33
|
-
|
34
|
-
def
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
msg << ""
|
42
|
-
msg.join("\n\n")
|
43
|
-
puts msg
|
44
|
-
eval(action)
|
45
|
-
end
|
46
|
-
|
47
|
-
def delineator
|
48
|
-
("-" * 80)
|
49
|
-
end
|
50
|
-
|
51
|
-
def confirm_dependency(options)
|
52
|
-
msg = []
|
53
|
-
msg << ""
|
54
|
-
msg << delineator
|
55
|
-
msg << "It looks like #{options[:warning]}. The following bash command returns false:"
|
56
|
-
msg << "\t$ #{options[:system_query]}"
|
57
|
-
msg << "Please try these instructions:"
|
58
|
-
msg << ("\t" + options[:suggestion])
|
59
|
-
msg << delineator
|
60
|
-
conditional = options[:conditional] ? eval(options[:conditional]) : system(options[:system_query])
|
61
|
-
if conditional == false
|
62
|
-
raise(Roro::Error.new(msg.join("\n\n")))
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
66
|
-
def confirm_dependencies
|
67
|
-
dependencies = [
|
68
|
-
{
|
69
|
-
system_query: "ls -A",
|
70
|
-
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",
|
71
|
-
suggestion: "$ roro greenfield --force",
|
72
|
-
conditional: "Dir.glob('*').empty?"
|
73
|
-
}, {
|
74
|
-
|
75
|
-
system_query: "which docker",
|
76
|
-
warning: "Docker isn't installed",
|
77
|
-
suggestion: "https://docs.docker.com/install/"
|
78
|
-
}, {
|
79
|
-
system_query: "which docker-compose",
|
80
|
-
warning: "Docker Compose isn't installed",
|
81
|
-
suggestion: "https://docs.docker.com/compose/install/"
|
82
|
-
|
83
|
-
}, {
|
84
|
-
system_query: "docker info",
|
85
|
-
warning: "the Docker daemon isn't running",
|
86
|
-
suggestion: "https://docs.docker.com/config/daemon/#start-the-daemon-manually"
|
87
|
-
}
|
88
|
-
]
|
89
|
-
|
90
|
-
dependencies.each do |dependency|
|
91
|
-
confirm_dependency(dependency)
|
92
|
-
end
|
15
|
+
|
16
|
+
def configure_for_greenfielding
|
17
|
+
@config ||= Roro::Configuration.new(options)
|
18
|
+
end
|
19
|
+
|
20
|
+
def run_greenfield_commands
|
21
|
+
system "DOCKER_BUILDKIT=1 docker build --file Dockerfile --output . ."
|
22
|
+
rollon
|
93
23
|
end
|
24
|
+
|
25
|
+
def copy_greenfield_files
|
26
|
+
template 'greenfield/Dockerfile.tt', 'Dockerfile', @config.app
|
27
|
+
template 'roro/docker-compose.yml.tt', 'docker-compose.yml', @config.app
|
28
|
+
end
|
94
29
|
end
|
95
30
|
end
|
96
31
|
end
|
data/lib/roro/cli/obfuscate.rb
CHANGED
@@ -3,17 +3,16 @@ require 'handsome_fencer/crypto'
|
|
3
3
|
module Roro
|
4
4
|
|
5
5
|
class CLI < Thor
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
HandsomeFencer::Crypto.obfuscate(environment, 'docker')
|
6
|
+
|
7
|
+
no_commands do
|
8
|
+
include Thor::Actions
|
9
|
+
include HandsomeFencer::Crypto
|
10
|
+
|
11
|
+
def obfuscate(*args)
|
12
|
+
environments = args.first ? [args.first] : gather_environments
|
13
|
+
environments.each do |environment|
|
14
|
+
HandsomeFencer::Crypto.obfuscate(environment, 'roro')
|
15
|
+
end
|
17
16
|
end
|
18
17
|
end
|
19
18
|
end
|
data/lib/roro/cli/rollon.rb
CHANGED
@@ -1,21 +1,84 @@
|
|
1
|
+
require 'roro/cli/rollon/stories'
|
2
|
+
|
1
3
|
module Roro
|
2
4
|
|
3
5
|
class CLI < Thor
|
4
6
|
|
5
|
-
|
6
|
-
|
7
|
-
method_option :interactive, desc: "Set up your environment variables as
|
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."
|
8
11
|
|
9
12
|
def rollon
|
10
|
-
|
11
|
-
|
12
|
-
|
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
|
+
|
24
|
+
no_commands do
|
25
|
+
|
26
|
+
def configure_for_rollon
|
27
|
+
@config ||= Roro::Configuration.new(options)
|
28
|
+
end
|
29
|
+
|
30
|
+
def yaml_from_template(file)
|
31
|
+
File.read(File.dirname(__FILE__) + "/templates/#{file}")
|
32
|
+
end
|
33
|
+
|
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
|
+
def take_thor_actions
|
42
|
+
@config.thor_actions.each {|k, v| eval(k) if v.eql?('y') }
|
43
|
+
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
|
13
62
|
end
|
14
|
-
copy_base_files
|
15
|
-
append_to_existing_files
|
16
|
-
insert_into_file 'Gemfile', "gem 'sshkit'\n\n", before: "group :development, :test do"
|
17
|
-
insert_into_file 'Gemfile', "\n\tgem 'handsome_fencer-test'", after: "group :development, :test do"
|
18
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
|
+
|
19
82
|
end
|
20
83
|
end
|
21
|
-
end
|
84
|
+
end
|
File without changes
|
@@ -0,0 +1 @@
|
|
1
|
+
# require 'roro/cli/rollon/stories/ruby_gem/with_ci_cd.rb'
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Roro
|
2
|
+
|
3
|
+
class CLI < Thor
|
4
|
+
|
5
|
+
no_commands do
|
6
|
+
|
7
|
+
def configure_database
|
8
|
+
database = @config.thor_actions['configure_database']
|
9
|
+
vendor = @config.master['services']['database']['vendors']
|
10
|
+
case database
|
11
|
+
when 'p'
|
12
|
+
@config.app['database_vendor'] = 'postgresql'
|
13
|
+
@config.app['postgresql_env_vars'] = vendor['postgresql']['env_vars']
|
14
|
+
configure_for_pg
|
15
|
+
when 'm'
|
16
|
+
@config.app['database_vendor'] = 'mysql'
|
17
|
+
@config.app['mysql_env_vars'] = vendor['mysql']['env_vars']
|
18
|
+
configure_for_mysql
|
19
|
+
end
|
20
|
+
|
21
|
+
%w(development production test staging ci).each do |environment|
|
22
|
+
template(
|
23
|
+
'base/.env/web.env.tt',
|
24
|
+
"roro/containers/app/#{environment}.env", @config.app
|
25
|
+
)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|