potassium 1.3.5 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.rspec +3 -0
- data/.rubocop.yml +1 -1
- data/.ruby_style.yml +6 -2
- data/CHANGELOG.md +19 -1
- data/README.md +79 -74
- data/circle.yml +9 -0
- data/docs/CONTRIBUTING.md +132 -0
- data/docs/{dsl.md → DSL.md} +146 -18
- data/lib/potassium/{templates/application/assets → assets}/.bowerrc +0 -0
- data/lib/potassium/assets/.buildpacks +3 -0
- data/lib/potassium/{templates/application/assets → assets}/.editorconfig +0 -0
- data/lib/potassium/assets/.env.example.erb +8 -0
- data/lib/potassium/assets/.hound.yml +2 -0
- data/lib/potassium/{templates/application/assets → assets}/.pryrc +0 -0
- data/lib/potassium/assets/.rubocop.yml +3 -0
- data/lib/potassium/assets/.ruby_style.yml +0 -0
- data/lib/potassium/assets/Dockerfile.ci +4 -0
- data/lib/potassium/assets/Procfile +1 -0
- data/lib/potassium/assets/README.md.erb +2 -0
- data/lib/potassium/assets/README.yml +83 -0
- data/lib/potassium/{templates/application/assets → assets}/active_admin/active_admin.js.coffee +0 -0
- data/lib/potassium/{templates/application/assets → assets}/active_admin/admin_user_policy.rb +0 -0
- data/lib/potassium/{templates/application/assets → assets}/active_admin/comment_policy.rb +0 -0
- data/lib/potassium/{templates/application/assets → assets}/active_admin/init_activeadmin_angular.rb +0 -0
- data/lib/potassium/{templates/application/assets → assets}/active_admin/pundit_page_policy.rb +0 -0
- data/lib/potassium/{templates/application/assets → assets}/api/api_error_concern.rb +0 -0
- data/lib/potassium/{templates/application/assets → assets}/api/base_controller.rb +0 -0
- data/lib/potassium/{templates/application/assets → assets}/api/responder.rb +0 -0
- data/lib/potassium/assets/bin/cibuild.erb +27 -0
- data/lib/potassium/assets/bin/setup.erb +22 -0
- data/lib/potassium/assets/bin/setup_heroku.erb +21 -0
- data/lib/potassium/{templates/application/assets → assets}/bower.json +0 -0
- data/lib/potassium/assets/circle.yml +16 -0
- data/lib/potassium/assets/config/database_mysql.yml.erb +25 -0
- data/lib/potassium/assets/config/database_postgresql.yml.erb +25 -0
- data/lib/potassium/assets/config/environments/staging.rb +5 -0
- data/lib/potassium/assets/config/puma.rb +29 -0
- data/lib/potassium/assets/config/secrets.yml.erb +14 -0
- data/lib/potassium/assets/docker-compose.ci.yml +6 -0
- data/lib/potassium/{templates/application/assets → assets}/es.yml +0 -0
- data/lib/potassium/{templates/application/assets → assets}/testing/.rspec +0 -0
- data/lib/potassium/{templates/application/assets → assets}/testing/rails_helper.rb +0 -0
- data/lib/potassium/cli/commands/create.rb +55 -4
- data/lib/potassium/cli/commands/install.rb +27 -13
- data/lib/potassium/{templates/application/generator.rb → generators/application.rb} +7 -2
- data/lib/potassium/{templates/application/recipe_generator.rb → generators/recipe.rb} +11 -2
- data/lib/potassium/helpers/answer-helpers.rb +21 -0
- data/lib/potassium/{templates/application/helpers → helpers}/callback-helpers.rb +0 -0
- data/lib/potassium/helpers/docker-helpers.rb +37 -0
- data/lib/potassium/{templates/application/helpers → helpers}/environment-helpers.rb +0 -0
- data/lib/potassium/{templates/application/helpers → helpers}/gem-helpers.rb +6 -2
- data/lib/potassium/helpers/info-helpers.rb +16 -0
- data/lib/potassium/helpers/readme-helpers.rb +85 -0
- data/lib/potassium/{templates/application/helpers → helpers}/template-dsl.rb +8 -0
- data/lib/potassium/helpers/template-helpers.rb +97 -0
- data/lib/potassium/{templates/application/helpers → helpers}/variable-helpers.rb +0 -0
- data/lib/potassium/recipe.rb +2 -0
- data/lib/potassium/{templates/application/recipes → recipes}/admin.rb +36 -6
- data/lib/potassium/recipes/angular_admin.rb +56 -0
- data/lib/potassium/recipes/api.rb +43 -0
- data/lib/potassium/recipes/aws_sdk.rb +5 -0
- data/lib/potassium/recipes/bower.rb +13 -0
- data/lib/potassium/recipes/ci.rb +42 -0
- data/lib/potassium/recipes/cleanup.rb +10 -0
- data/lib/potassium/recipes/database.rb +42 -0
- data/lib/potassium/recipes/delayed_job.rb +41 -0
- data/lib/potassium/recipes/devise.rb +64 -0
- data/lib/potassium/recipes/editorconfig.rb +5 -0
- data/lib/potassium/recipes/env.rb +10 -0
- data/lib/potassium/recipes/git.rb +13 -0
- data/lib/potassium/recipes/github.rb +27 -0
- data/lib/potassium/recipes/heroku.rb +138 -0
- data/lib/potassium/recipes/i18n.rb +26 -0
- data/lib/potassium/recipes/paperclip.rb +37 -0
- data/lib/potassium/recipes/production.rb +7 -0
- data/lib/potassium/recipes/pry.rb +10 -0
- data/lib/potassium/recipes/puma.rb +19 -0
- data/lib/potassium/recipes/pundit.rb +61 -0
- data/lib/potassium/recipes/rack_cors.rb +21 -0
- data/lib/potassium/recipes/readme.rb +7 -0
- data/lib/potassium/recipes/ruby.rb +23 -0
- data/lib/potassium/recipes/script.rb +16 -0
- data/lib/potassium/recipes/secrets.rb +5 -0
- data/lib/potassium/recipes/staging.rb +5 -0
- data/lib/potassium/recipes/style.rb +13 -0
- data/lib/potassium/recipes/testing.rb +37 -0
- data/lib/potassium/templates/application.rb +67 -0
- data/lib/potassium/templates/recipe.rb +12 -0
- data/lib/potassium/text_spinner.rb +0 -5
- data/lib/potassium/version.rb +2 -1
- data/potassium.gemspec +3 -0
- data/spec/fakes/bin/heroku +5 -0
- data/spec/fakes/bin/hub +5 -0
- data/spec/features/ci_spec.rb +14 -0
- data/spec/features/github_spec.rb +22 -0
- data/spec/features/heroku_spec.rb +61 -0
- data/spec/features/new_project_spec.rb +38 -0
- data/spec/spec_helper.rb +33 -0
- data/spec/support/fake_github.rb +25 -0
- data/spec/support/fake_heroku.rb +77 -0
- data/spec/support/potassium_test_helpers.rb +98 -0
- metadata +149 -62
- data/lib/potassium/templates/application/assets/.rbenv-vars.example +0 -8
- data/lib/potassium/templates/application/assets/config/database_mysql.yml +0 -40
- data/lib/potassium/templates/application/assets/config/database_postgresql.yml +0 -26
- data/lib/potassium/templates/application/helpers/recipe-helpers.rb +0 -5
- data/lib/potassium/templates/application/helpers/template-helpers.rb +0 -35
- data/lib/potassium/templates/application/recipe_template.rb +0 -23
- data/lib/potassium/templates/application/recipes/angular_admin.rb +0 -26
- data/lib/potassium/templates/application/recipes/api.rb +0 -22
- data/lib/potassium/templates/application/recipes/asks/admin.rb +0 -9
- data/lib/potassium/templates/application/recipes/asks/api.rb +0 -2
- data/lib/potassium/templates/application/recipes/asks/database.rb +0 -9
- data/lib/potassium/templates/application/recipes/asks/devise.rb +0 -10
- data/lib/potassium/templates/application/recipes/asks/i18n.rb +0 -8
- data/lib/potassium/templates/application/recipes/asks/paperclip.rb +0 -2
- data/lib/potassium/templates/application/recipes/asks/pundit.rb +0 -4
- data/lib/potassium/templates/application/recipes/aws_sdk.rb +0 -1
- data/lib/potassium/templates/application/recipes/bower.rb +0 -3
- data/lib/potassium/templates/application/recipes/checks/devise.rb +0 -1
- data/lib/potassium/templates/application/recipes/database.rb +0 -22
- data/lib/potassium/templates/application/recipes/dependencies/admin.rb +0 -3
- data/lib/potassium/templates/application/recipes/devise.rb +0 -28
- data/lib/potassium/templates/application/recipes/editorconfig.rb +0 -1
- data/lib/potassium/templates/application/recipes/git.rb +0 -9
- data/lib/potassium/templates/application/recipes/i18n.rb +0 -9
- data/lib/potassium/templates/application/recipes/paperclip.rb +0 -20
- data/lib/potassium/templates/application/recipes/production.rb +0 -3
- data/lib/potassium/templates/application/recipes/pry.rb +0 -6
- data/lib/potassium/templates/application/recipes/pundit.rb +0 -33
- data/lib/potassium/templates/application/recipes/rack-cors.rb +0 -15
- data/lib/potassium/templates/application/recipes/rbenv.rb +0 -23
- data/lib/potassium/templates/application/recipes/readme.rb +0 -2
- data/lib/potassium/templates/application/recipes/testing.rb +0 -32
- data/lib/potassium/templates/application/recipes/unicorn.rb +0 -5
- data/lib/potassium/templates/application/template.rb +0 -58
@@ -0,0 +1,14 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
require "rubocop"
|
3
|
+
|
4
|
+
RSpec.describe "A new project" do
|
5
|
+
before(:all) do
|
6
|
+
drop_dummy_database
|
7
|
+
remove_project_directory
|
8
|
+
create_dummy_project("heroku" => true)
|
9
|
+
end
|
10
|
+
|
11
|
+
it "correctly runs continous integration" do
|
12
|
+
expect { on_project { `bin/cibuild` } }.to_not output.to_stderr
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
RSpec.describe "GitHub" do
|
4
|
+
before do
|
5
|
+
drop_dummy_database
|
6
|
+
remove_project_directory
|
7
|
+
end
|
8
|
+
|
9
|
+
it "create a the github repository" do
|
10
|
+
create_dummy_project("github" => true)
|
11
|
+
app_name = PotassiumTestHelpers::APP_NAME.dasherize
|
12
|
+
|
13
|
+
expect(FakeGithub).to have_created_repo("platanus/#{app_name}")
|
14
|
+
end
|
15
|
+
|
16
|
+
it "create a the github private repository" do
|
17
|
+
create_dummy_project("github" => true, "github-private" => true)
|
18
|
+
app_name = PotassiumTestHelpers::APP_NAME.dasherize
|
19
|
+
|
20
|
+
expect(FakeGithub).to have_created_private_repo("platanus/#{app_name}")
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
RSpec.describe "Heroku" do
|
4
|
+
before(:all) do
|
5
|
+
drop_dummy_database
|
6
|
+
remove_project_directory
|
7
|
+
end
|
8
|
+
|
9
|
+
fit "creates a project for Heroku" do
|
10
|
+
create_dummy_project("heroku" => true)
|
11
|
+
app_name = PotassiumTestHelpers::APP_NAME.dasherize
|
12
|
+
|
13
|
+
expect(FakeHeroku).to(
|
14
|
+
have_gem_included(project_path, "rails_stdout_logging")
|
15
|
+
)
|
16
|
+
|
17
|
+
procfile_path = "#{project_path}/Procfile"
|
18
|
+
procfile = IO.read(procfile_path)
|
19
|
+
|
20
|
+
expect(procfile).to include("web: bundle exec puma -C ./config/puma.rb")
|
21
|
+
|
22
|
+
buildpacks_path = "#{project_path}/.buildpacks"
|
23
|
+
buildpacks = IO.read(buildpacks_path)
|
24
|
+
|
25
|
+
expect(buildpacks).to include("https://github.com/platanus/heroku-buildpack-bower.git")
|
26
|
+
expect(buildpacks).to include("https://github.com/platanus/heroku-buildpack-ruby-version.git")
|
27
|
+
expect(buildpacks).to include("https://github.com/heroku/heroku-buildpack-ruby.git")
|
28
|
+
expect(buildpacks).to(
|
29
|
+
include("https://github.com/gunpowderlabs/buildpack-ruby-rake-deploy-tasks.git")
|
30
|
+
)
|
31
|
+
|
32
|
+
expect(FakeHeroku).to have_created_app_for("staging")
|
33
|
+
expect(FakeHeroku).to have_created_app_for("production")
|
34
|
+
|
35
|
+
expect(FakeHeroku).to have_configured_vars("staging", "SECRET_KEY_BASE")
|
36
|
+
expect(FakeHeroku).to have_configured_vars("staging", "RACK_ENV")
|
37
|
+
expect(FakeHeroku).to have_configured_vars("staging", "RAILS_ENV")
|
38
|
+
expect(FakeHeroku).to have_configured_vars("staging", "DEPLOY_TASKS")
|
39
|
+
|
40
|
+
expect(FakeHeroku).to have_configured_vars("production", "SECRET_KEY_BASE")
|
41
|
+
expect(FakeHeroku).to have_configured_vars("production", "RACK_ENV")
|
42
|
+
expect(FakeHeroku).to have_configured_vars("production", "RAILS_ENV")
|
43
|
+
expect(FakeHeroku).to have_configured_vars("production", "DEPLOY_TASKS")
|
44
|
+
|
45
|
+
expect(FakeHeroku).to have_created_pipeline_for("staging")
|
46
|
+
expect(FakeHeroku).to have_add_pipeline_for("production")
|
47
|
+
|
48
|
+
bin_setup_path = "#{project_path}/bin/setup"
|
49
|
+
bin_setup = IO.read(bin_setup_path)
|
50
|
+
|
51
|
+
expect(bin_setup).to include("bin/setup_heroku")
|
52
|
+
|
53
|
+
bin_setup_heroku_path = "#{project_path}/bin/setup_heroku"
|
54
|
+
bin_setup_heroku = IO.read(bin_setup_heroku_path)
|
55
|
+
|
56
|
+
expect(bin_setup_heroku).to include("heroku apps:info --app pl-#{app_name}-staging")
|
57
|
+
expect(bin_setup_heroku).to include("heroku apps:info --app pl-#{app_name}-production")
|
58
|
+
expect(bin_setup_heroku).to include("git config heroku.remote staging")
|
59
|
+
expect(File.stat(bin_setup_path)).to be_executable
|
60
|
+
end
|
61
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
require "rubocop"
|
3
|
+
|
4
|
+
RSpec.describe "A new project" do
|
5
|
+
before(:all) do
|
6
|
+
drop_dummy_database
|
7
|
+
remove_project_directory
|
8
|
+
create_dummy_project
|
9
|
+
end
|
10
|
+
|
11
|
+
it "is correctly bundled" do
|
12
|
+
expect { on_project { `bundle exec rails -v` } }.to_not output.to_stderr
|
13
|
+
end
|
14
|
+
|
15
|
+
it "is a valid rubocop project" do
|
16
|
+
on_project do
|
17
|
+
expect(run_rubocop).to eq(true)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
it "configures rubocop" do
|
22
|
+
rubocop_config_file = IO.read("#{project_path}/.rubocop.yml")
|
23
|
+
|
24
|
+
expect(rubocop_config_file).to include("inherit_from")
|
25
|
+
expect(rubocop_config_file).to include("style_guides/platanus/ruby.yml")
|
26
|
+
expect(rubocop_config_file).to include(".ruby_style.yml")
|
27
|
+
end
|
28
|
+
|
29
|
+
it "set custom ruby style file placeholder" do
|
30
|
+
expect(File).to exist("#{project_path}/.ruby_style.yml")
|
31
|
+
end
|
32
|
+
|
33
|
+
it "configures hound" do
|
34
|
+
hound_config_file = IO.read("#{project_path}/.hound.yml")
|
35
|
+
|
36
|
+
expect(hound_config_file).to include("config_file: .ruby_style.yml")
|
37
|
+
end
|
38
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
require "bundler/setup"
|
2
|
+
|
3
|
+
Bundler.require(:default, :test)
|
4
|
+
|
5
|
+
require (Pathname.new(__FILE__).dirname + "../lib/potassium").expand_path
|
6
|
+
|
7
|
+
Dir["./spec/support/**/*.rb"].each { |file| require file }
|
8
|
+
|
9
|
+
RSpec.configure do |config|
|
10
|
+
config.include PotassiumTestHelpers
|
11
|
+
|
12
|
+
config.expect_with :rspec do |expectations|
|
13
|
+
expectations.include_chain_clauses_in_custom_matcher_descriptions = true
|
14
|
+
end
|
15
|
+
|
16
|
+
config.mock_with :rspec do |mocks|
|
17
|
+
mocks.verify_partial_doubles = true
|
18
|
+
end
|
19
|
+
|
20
|
+
config.filter_run :focus
|
21
|
+
config.run_all_when_everything_filtered = true
|
22
|
+
config.disable_monkey_patching!
|
23
|
+
|
24
|
+
config.before(:all) do
|
25
|
+
add_fakes_to_path
|
26
|
+
create_tmp_directory
|
27
|
+
end
|
28
|
+
|
29
|
+
config.before(:each) do
|
30
|
+
FakeGithub.clear!
|
31
|
+
FakeHeroku.clear!
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
class FakeGithub
|
2
|
+
RECORDER = File.expand_path(File.join('..', '..', 'tmp', 'hub_commands'), File.dirname(__FILE__))
|
3
|
+
|
4
|
+
def initialize(args)
|
5
|
+
@args = args
|
6
|
+
end
|
7
|
+
|
8
|
+
def run!
|
9
|
+
File.open(RECORDER, 'a') do |file|
|
10
|
+
file.write @args.join(' ')
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.clear!
|
15
|
+
FileUtils.rm_rf RECORDER
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.has_created_repo?(repo_name)
|
19
|
+
File.read(RECORDER) == "create #{repo_name}"
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.has_created_private_repo?(repo_name)
|
23
|
+
File.read(RECORDER) == "create -p #{repo_name}"
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
require 'active_support/all'
|
2
|
+
|
3
|
+
class FakeHeroku
|
4
|
+
RECORDER = File.expand_path(File.join('..', '..', 'tmp', 'heroku_commands'), File.dirname(__FILE__))
|
5
|
+
|
6
|
+
def initialize(args)
|
7
|
+
@args = args
|
8
|
+
end
|
9
|
+
|
10
|
+
def run!
|
11
|
+
if @args.first == "plugins"
|
12
|
+
puts "heroku-pipelines@0.29.0"
|
13
|
+
elsif @args.first == "pipelines:info"
|
14
|
+
if FakeHeroku.has_created_pipeline?
|
15
|
+
puts "=== dummy-app\nstaging:\tpl-dummy-app-staging\nproduction:\tpl-dummy-app-production"
|
16
|
+
end
|
17
|
+
elsif @args.first == "auth:whoami"
|
18
|
+
puts "foo@bar.com"
|
19
|
+
end
|
20
|
+
File.open(RECORDER, 'a') do |file|
|
21
|
+
file.puts @args.join(' ')
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.clear!
|
26
|
+
FileUtils.rm_rf RECORDER
|
27
|
+
end
|
28
|
+
|
29
|
+
def self.has_gem_included?(project_path, gem_name)
|
30
|
+
gemfile = File.open(File.join(project_path, 'Gemfile'), 'a')
|
31
|
+
|
32
|
+
File.foreach(gemfile).any? do |line|
|
33
|
+
line.match(/#{Regexp.quote(gem_name)}/)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def self.has_created_app_for?(environment, flags = nil)
|
38
|
+
staged_app_name = "pl-#{PotassiumTestHelpers::APP_NAME.dasherize}-#{environment}"
|
39
|
+
|
40
|
+
command = if flags
|
41
|
+
"create #{staged_app_name} #{flags} --remote #{environment}\n"
|
42
|
+
else
|
43
|
+
"create #{staged_app_name} --remote #{environment}\n"
|
44
|
+
end
|
45
|
+
|
46
|
+
File.foreach(RECORDER).any? { |line| line == command }
|
47
|
+
end
|
48
|
+
|
49
|
+
def self.has_configured_vars?(environment, var)
|
50
|
+
app_name = PotassiumTestHelpers::APP_NAME.dasherize
|
51
|
+
staged_app_name = "pl-#{app_name}-#{environment}"
|
52
|
+
commands_ran =~ /^config:add.*#{var}=.+ --app #{staged_app_name}\n/
|
53
|
+
end
|
54
|
+
|
55
|
+
def self.has_created_pipeline_for?(environment)
|
56
|
+
has_done_pipeline_for?(environment, 'create')
|
57
|
+
end
|
58
|
+
|
59
|
+
def self.has_add_pipeline_for?(environment)
|
60
|
+
has_done_pipeline_for?(environment, 'add')
|
61
|
+
end
|
62
|
+
|
63
|
+
def self.has_created_pipeline?
|
64
|
+
commands_ran =~ /^pipelines:create/
|
65
|
+
end
|
66
|
+
|
67
|
+
def self.has_done_pipeline_for?(environment, command)
|
68
|
+
app_name = PotassiumTestHelpers::APP_NAME.dasherize
|
69
|
+
staged_app_name = "pl-#{app_name}-#{environment}"
|
70
|
+
commands_ran =~ /^pipelines:#{command} #{app_name} --stage #{environment} |
|
71
|
+
--app #{staged_app_name}/
|
72
|
+
end
|
73
|
+
|
74
|
+
def self.commands_ran
|
75
|
+
@commands_ran ||= File.read(RECORDER)
|
76
|
+
end
|
77
|
+
end
|
@@ -0,0 +1,98 @@
|
|
1
|
+
module PotassiumTestHelpers
|
2
|
+
APP_NAME = "dummy_app"
|
3
|
+
|
4
|
+
def remove_project_directory
|
5
|
+
FileUtils.rm_rf(project_path)
|
6
|
+
end
|
7
|
+
|
8
|
+
def create_tmp_directory
|
9
|
+
FileUtils.mkdir_p(tmp_path)
|
10
|
+
end
|
11
|
+
|
12
|
+
def create_dummy_project(arguments = {})
|
13
|
+
Dir.chdir(tmp_path) do
|
14
|
+
Bundler.with_clean_env do
|
15
|
+
add_fakes_to_path
|
16
|
+
full_arguments = hash_to_arguments(default_arguments.merge(arguments))
|
17
|
+
run_command("#{potassium_bin} create #{APP_NAME} #{full_arguments}")
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def drop_dummy_database
|
23
|
+
return unless File.exist?(project_path)
|
24
|
+
on_project { run_command("bundle exec rake db:drop") }
|
25
|
+
end
|
26
|
+
|
27
|
+
def add_fakes_to_path
|
28
|
+
ENV["PATH"] = "#{support_bin}:#{ENV['PATH']}"
|
29
|
+
end
|
30
|
+
|
31
|
+
def project_path
|
32
|
+
@project_path ||= Pathname.new("#{tmp_path}/#{APP_NAME}")
|
33
|
+
end
|
34
|
+
|
35
|
+
def on_project(&block)
|
36
|
+
Dir.chdir(project_path) do
|
37
|
+
Bundler.with_clean_env do
|
38
|
+
block.call
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
private
|
44
|
+
|
45
|
+
def tmp_path
|
46
|
+
@tmp_path ||= Pathname.new("#{root_path}/tmp")
|
47
|
+
end
|
48
|
+
|
49
|
+
def potassium_bin
|
50
|
+
File.join(root_path, "bin", "potassium")
|
51
|
+
end
|
52
|
+
|
53
|
+
def default_arguments
|
54
|
+
{
|
55
|
+
"db" => "mysql",
|
56
|
+
"lang" => "es",
|
57
|
+
"heroku" => false,
|
58
|
+
"admin" => false,
|
59
|
+
"pundit" => false,
|
60
|
+
"paperclip" => false,
|
61
|
+
"devise" => false,
|
62
|
+
"api" => false,
|
63
|
+
"delayed-job" => false,
|
64
|
+
"github" => false,
|
65
|
+
"github-private" => false
|
66
|
+
}
|
67
|
+
end
|
68
|
+
|
69
|
+
def hash_to_arguments(hash)
|
70
|
+
hash.map do |key, value|
|
71
|
+
if value == true
|
72
|
+
"--#{key}"
|
73
|
+
elsif value == false
|
74
|
+
"--no-#{key}"
|
75
|
+
elsif value
|
76
|
+
"--#{key}=#{value}"
|
77
|
+
end
|
78
|
+
end.join(" ")
|
79
|
+
end
|
80
|
+
|
81
|
+
def support_bin
|
82
|
+
File.join(root_path, "spec", "fakes", "bin")
|
83
|
+
end
|
84
|
+
|
85
|
+
def root_path
|
86
|
+
File.expand_path("../../../", __FILE__)
|
87
|
+
end
|
88
|
+
|
89
|
+
def run_command(command)
|
90
|
+
system(command)
|
91
|
+
end
|
92
|
+
|
93
|
+
def run_rubocop
|
94
|
+
options, paths = RuboCop::Options.new.parse(["."])
|
95
|
+
runner = RuboCop::Runner.new(options, RuboCop::ConfigStore.new)
|
96
|
+
runner.run(paths)
|
97
|
+
end
|
98
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: potassium
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- juliogarciag
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-03-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -38,6 +38,48 @@ dependencies:
|
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 3.4.0
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 3.4.0
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: pry
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 0.10.3
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 0.10.3
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rubocop
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 0.38.0
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 0.38.0
|
41
83
|
- !ruby/object:Gem::Dependency
|
42
84
|
name: rails
|
43
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -133,6 +175,7 @@ files:
|
|
133
175
|
- ".editorconfig"
|
134
176
|
- ".gitignore"
|
135
177
|
- ".hound.yml"
|
178
|
+
- ".rspec"
|
136
179
|
- ".rubocop.yml"
|
137
180
|
- ".ruby_style.yml"
|
138
181
|
- CHANGELOG.md
|
@@ -141,73 +184,106 @@ files:
|
|
141
184
|
- README.md
|
142
185
|
- Rakefile
|
143
186
|
- bin/potassium
|
144
|
-
-
|
187
|
+
- circle.yml
|
188
|
+
- docs/CONTRIBUTING.md
|
189
|
+
- docs/DSL.md
|
145
190
|
- lib/potassium.rb
|
191
|
+
- lib/potassium/assets/.bowerrc
|
192
|
+
- lib/potassium/assets/.buildpacks
|
193
|
+
- lib/potassium/assets/.editorconfig
|
194
|
+
- lib/potassium/assets/.env.example.erb
|
195
|
+
- lib/potassium/assets/.hound.yml
|
196
|
+
- lib/potassium/assets/.pryrc
|
197
|
+
- lib/potassium/assets/.rubocop.yml
|
198
|
+
- lib/potassium/assets/.ruby_style.yml
|
199
|
+
- lib/potassium/assets/Dockerfile.ci
|
200
|
+
- lib/potassium/assets/Procfile
|
201
|
+
- lib/potassium/assets/README.md.erb
|
202
|
+
- lib/potassium/assets/README.yml
|
203
|
+
- lib/potassium/assets/active_admin/active_admin.js.coffee
|
204
|
+
- lib/potassium/assets/active_admin/admin_user_policy.rb
|
205
|
+
- lib/potassium/assets/active_admin/comment_policy.rb
|
206
|
+
- lib/potassium/assets/active_admin/init_activeadmin_angular.rb
|
207
|
+
- lib/potassium/assets/active_admin/pundit_page_policy.rb
|
208
|
+
- lib/potassium/assets/api/api_error_concern.rb
|
209
|
+
- lib/potassium/assets/api/base_controller.rb
|
210
|
+
- lib/potassium/assets/api/responder.rb
|
211
|
+
- lib/potassium/assets/bin/cibuild.erb
|
212
|
+
- lib/potassium/assets/bin/setup.erb
|
213
|
+
- lib/potassium/assets/bin/setup_heroku.erb
|
214
|
+
- lib/potassium/assets/bower.json
|
215
|
+
- lib/potassium/assets/circle.yml
|
216
|
+
- lib/potassium/assets/config/database_mysql.yml.erb
|
217
|
+
- lib/potassium/assets/config/database_postgresql.yml.erb
|
218
|
+
- lib/potassium/assets/config/environments/staging.rb
|
219
|
+
- lib/potassium/assets/config/puma.rb
|
220
|
+
- lib/potassium/assets/config/secrets.yml.erb
|
221
|
+
- lib/potassium/assets/docker-compose.ci.yml
|
222
|
+
- lib/potassium/assets/es.yml
|
223
|
+
- lib/potassium/assets/testing/.rspec
|
224
|
+
- lib/potassium/assets/testing/rails_helper.rb
|
146
225
|
- lib/potassium/cli.rb
|
147
226
|
- lib/potassium/cli/commands/create.rb
|
148
227
|
- lib/potassium/cli/commands/install.rb
|
228
|
+
- lib/potassium/generators/application.rb
|
229
|
+
- lib/potassium/generators/recipe.rb
|
230
|
+
- lib/potassium/helpers/answer-helpers.rb
|
231
|
+
- lib/potassium/helpers/callback-helpers.rb
|
232
|
+
- lib/potassium/helpers/docker-helpers.rb
|
233
|
+
- lib/potassium/helpers/environment-helpers.rb
|
234
|
+
- lib/potassium/helpers/gem-helpers.rb
|
235
|
+
- lib/potassium/helpers/info-helpers.rb
|
236
|
+
- lib/potassium/helpers/readme-helpers.rb
|
237
|
+
- lib/potassium/helpers/template-dsl.rb
|
238
|
+
- lib/potassium/helpers/template-helpers.rb
|
239
|
+
- lib/potassium/helpers/variable-helpers.rb
|
149
240
|
- lib/potassium/newest_version_ensurer.rb
|
241
|
+
- lib/potassium/recipe.rb
|
242
|
+
- lib/potassium/recipes/admin.rb
|
243
|
+
- lib/potassium/recipes/angular_admin.rb
|
244
|
+
- lib/potassium/recipes/api.rb
|
245
|
+
- lib/potassium/recipes/aws_sdk.rb
|
246
|
+
- lib/potassium/recipes/bower.rb
|
247
|
+
- lib/potassium/recipes/ci.rb
|
248
|
+
- lib/potassium/recipes/cleanup.rb
|
249
|
+
- lib/potassium/recipes/database.rb
|
250
|
+
- lib/potassium/recipes/delayed_job.rb
|
251
|
+
- lib/potassium/recipes/devise.rb
|
252
|
+
- lib/potassium/recipes/editorconfig.rb
|
253
|
+
- lib/potassium/recipes/env.rb
|
254
|
+
- lib/potassium/recipes/git.rb
|
255
|
+
- lib/potassium/recipes/github.rb
|
256
|
+
- lib/potassium/recipes/heroku.rb
|
257
|
+
- lib/potassium/recipes/i18n.rb
|
258
|
+
- lib/potassium/recipes/paperclip.rb
|
259
|
+
- lib/potassium/recipes/production.rb
|
260
|
+
- lib/potassium/recipes/pry.rb
|
261
|
+
- lib/potassium/recipes/puma.rb
|
262
|
+
- lib/potassium/recipes/pundit.rb
|
263
|
+
- lib/potassium/recipes/rack_cors.rb
|
264
|
+
- lib/potassium/recipes/readme.rb
|
265
|
+
- lib/potassium/recipes/ruby.rb
|
266
|
+
- lib/potassium/recipes/script.rb
|
267
|
+
- lib/potassium/recipes/secrets.rb
|
268
|
+
- lib/potassium/recipes/staging.rb
|
269
|
+
- lib/potassium/recipes/style.rb
|
270
|
+
- lib/potassium/recipes/testing.rb
|
150
271
|
- lib/potassium/template_finder.rb
|
151
|
-
- lib/potassium/templates/application
|
152
|
-
- lib/potassium/templates/
|
153
|
-
- lib/potassium/templates/application/assets/.pryrc
|
154
|
-
- lib/potassium/templates/application/assets/.rbenv-vars.example
|
155
|
-
- lib/potassium/templates/application/assets/active_admin/active_admin.js.coffee
|
156
|
-
- lib/potassium/templates/application/assets/active_admin/admin_user_policy.rb
|
157
|
-
- lib/potassium/templates/application/assets/active_admin/comment_policy.rb
|
158
|
-
- lib/potassium/templates/application/assets/active_admin/init_activeadmin_angular.rb
|
159
|
-
- lib/potassium/templates/application/assets/active_admin/pundit_page_policy.rb
|
160
|
-
- lib/potassium/templates/application/assets/api/api_error_concern.rb
|
161
|
-
- lib/potassium/templates/application/assets/api/base_controller.rb
|
162
|
-
- lib/potassium/templates/application/assets/api/responder.rb
|
163
|
-
- lib/potassium/templates/application/assets/bower.json
|
164
|
-
- lib/potassium/templates/application/assets/config/database_mysql.yml
|
165
|
-
- lib/potassium/templates/application/assets/config/database_postgresql.yml
|
166
|
-
- lib/potassium/templates/application/assets/es.yml
|
167
|
-
- lib/potassium/templates/application/assets/testing/.rspec
|
168
|
-
- lib/potassium/templates/application/assets/testing/rails_helper.rb
|
169
|
-
- lib/potassium/templates/application/generator.rb
|
170
|
-
- lib/potassium/templates/application/helpers/callback-helpers.rb
|
171
|
-
- lib/potassium/templates/application/helpers/environment-helpers.rb
|
172
|
-
- lib/potassium/templates/application/helpers/gem-helpers.rb
|
173
|
-
- lib/potassium/templates/application/helpers/recipe-helpers.rb
|
174
|
-
- lib/potassium/templates/application/helpers/template-dsl.rb
|
175
|
-
- lib/potassium/templates/application/helpers/template-helpers.rb
|
176
|
-
- lib/potassium/templates/application/helpers/variable-helpers.rb
|
177
|
-
- lib/potassium/templates/application/recipe_generator.rb
|
178
|
-
- lib/potassium/templates/application/recipe_template.rb
|
179
|
-
- lib/potassium/templates/application/recipes/admin.rb
|
180
|
-
- lib/potassium/templates/application/recipes/angular_admin.rb
|
181
|
-
- lib/potassium/templates/application/recipes/api.rb
|
182
|
-
- lib/potassium/templates/application/recipes/asks/admin.rb
|
183
|
-
- lib/potassium/templates/application/recipes/asks/api.rb
|
184
|
-
- lib/potassium/templates/application/recipes/asks/database.rb
|
185
|
-
- lib/potassium/templates/application/recipes/asks/devise.rb
|
186
|
-
- lib/potassium/templates/application/recipes/asks/i18n.rb
|
187
|
-
- lib/potassium/templates/application/recipes/asks/paperclip.rb
|
188
|
-
- lib/potassium/templates/application/recipes/asks/pundit.rb
|
189
|
-
- lib/potassium/templates/application/recipes/aws_sdk.rb
|
190
|
-
- lib/potassium/templates/application/recipes/bower.rb
|
191
|
-
- lib/potassium/templates/application/recipes/checks/devise.rb
|
192
|
-
- lib/potassium/templates/application/recipes/database.rb
|
193
|
-
- lib/potassium/templates/application/recipes/dependencies/admin.rb
|
194
|
-
- lib/potassium/templates/application/recipes/devise.rb
|
195
|
-
- lib/potassium/templates/application/recipes/editorconfig.rb
|
196
|
-
- lib/potassium/templates/application/recipes/git.rb
|
197
|
-
- lib/potassium/templates/application/recipes/i18n.rb
|
198
|
-
- lib/potassium/templates/application/recipes/paperclip.rb
|
199
|
-
- lib/potassium/templates/application/recipes/production.rb
|
200
|
-
- lib/potassium/templates/application/recipes/pry.rb
|
201
|
-
- lib/potassium/templates/application/recipes/pundit.rb
|
202
|
-
- lib/potassium/templates/application/recipes/rack-cors.rb
|
203
|
-
- lib/potassium/templates/application/recipes/rbenv.rb
|
204
|
-
- lib/potassium/templates/application/recipes/readme.rb
|
205
|
-
- lib/potassium/templates/application/recipes/testing.rb
|
206
|
-
- lib/potassium/templates/application/recipes/unicorn.rb
|
207
|
-
- lib/potassium/templates/application/template.rb
|
272
|
+
- lib/potassium/templates/application.rb
|
273
|
+
- lib/potassium/templates/recipe.rb
|
208
274
|
- lib/potassium/text_spinner.rb
|
209
275
|
- lib/potassium/version.rb
|
210
276
|
- potassium.gemspec
|
277
|
+
- spec/fakes/bin/heroku
|
278
|
+
- spec/fakes/bin/hub
|
279
|
+
- spec/features/ci_spec.rb
|
280
|
+
- spec/features/github_spec.rb
|
281
|
+
- spec/features/heroku_spec.rb
|
282
|
+
- spec/features/new_project_spec.rb
|
283
|
+
- spec/spec_helper.rb
|
284
|
+
- spec/support/fake_github.rb
|
285
|
+
- spec/support/fake_heroku.rb
|
286
|
+
- spec/support/potassium_test_helpers.rb
|
211
287
|
homepage: https://github.com/platanus/potassium
|
212
288
|
licenses:
|
213
289
|
- MIT
|
@@ -228,8 +304,19 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
228
304
|
version: '0'
|
229
305
|
requirements: []
|
230
306
|
rubyforge_project:
|
231
|
-
rubygems_version: 2.5.
|
307
|
+
rubygems_version: 2.5.2
|
232
308
|
signing_key:
|
233
309
|
specification_version: 4
|
234
310
|
summary: An application generator from Platanus
|
235
|
-
test_files:
|
311
|
+
test_files:
|
312
|
+
- spec/fakes/bin/heroku
|
313
|
+
- spec/fakes/bin/hub
|
314
|
+
- spec/features/ci_spec.rb
|
315
|
+
- spec/features/github_spec.rb
|
316
|
+
- spec/features/heroku_spec.rb
|
317
|
+
- spec/features/new_project_spec.rb
|
318
|
+
- spec/spec_helper.rb
|
319
|
+
- spec/support/fake_github.rb
|
320
|
+
- spec/support/fake_heroku.rb
|
321
|
+
- spec/support/potassium_test_helpers.rb
|
322
|
+
has_rdoc:
|