rails-new-app 0.0.3 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/tests.yml +28 -0
- data/.gitignore +2 -0
- data/Gemfile +14 -0
- data/Gemfile.lock +60 -0
- data/README.md +60 -20
- data/Rakefile +9 -0
- data/lib/rails-new-app.rb +1 -1
- data/lib/rails-new-app/processors/authentication_processor.rb +16 -0
- data/lib/rails-new-app/processors/authorization_processor.rb +18 -0
- data/lib/rails-new-app/runner.rb +97 -146
- data/lib/rails-new-app/screens.rb +8 -0
- data/lib/rails-new-app/screens/app_name_screen.rb +28 -0
- data/lib/rails-new-app/screens/auth_screen.rb +26 -0
- data/lib/rails-new-app/screens/authentication_screen.rb +27 -0
- data/lib/rails-new-app/screens/authorization_screen.rb +27 -0
- data/lib/rails-new-app/screens/choice_screen.rb +52 -0
- data/lib/rails-new-app/{steps/code_coverage_step.rb → screens/code_coverage_screen.rb} +3 -3
- data/lib/rails-new-app/{steps/database_step.rb → screens/database_screen.rb} +7 -5
- data/lib/rails-new-app/{steps/form_builder_step.rb → screens/form_builder_screen.rb} +2 -2
- data/lib/rails-new-app/{steps/java_script_framework_step.rb → screens/java_script_framework_screen.rb} +2 -2
- data/lib/rails-new-app/screens/menu_screen.rb +61 -0
- data/lib/rails-new-app/{steps/pagination_step.rb → screens/pagination_screen.rb} +2 -2
- data/lib/rails-new-app/screens/review_and_confirm_screen.rb +59 -0
- data/lib/rails-new-app/{steps/ruby_linter_step.rb → screens/ruby_linter_screen.rb} +2 -2
- data/lib/rails-new-app/screens/screen.rb +66 -0
- data/lib/rails-new-app/{steps/template_engine_step.rb → screens/template_engine_screen.rb} +2 -2
- data/lib/rails-new-app/{steps/test_factory_step.rb → screens/test_factory_screen.rb} +3 -3
- data/lib/rails-new-app/{steps/test_fake_data.rb → screens/test_fake_data_screen.rb} +3 -3
- data/lib/rails-new-app/{steps/test_runner_step.rb → screens/test_runner_screen.rb} +3 -3
- data/lib/rails-new-app/{steps/yes_no_choice_step.rb → screens/yes_no_choice_screen.rb} +1 -1
- data/lib/rails-new-app/templates/cancancan-config.rb +1 -0
- data/lib/rails-new-app/templates/cancancan-gemfile.rb +1 -0
- data/lib/rails-new-app/templates/devise-config.rb +1 -0
- data/lib/rails-new-app/templates/devise-gemfile.rb +1 -0
- data/lib/rails-new-app/templates/pagy-config.rb +1 -1
- data/lib/rails-new-app/templates/pundit-config.rb +7 -0
- data/lib/rails-new-app/templates/pundit-gemfile.rb +1 -0
- data/lib/rails-new-app/version.rb +1 -1
- metadata +34 -18
- data/lib/rails-new-app/steps.rb +0 -7
- data/lib/rails-new-app/steps/app_name_step.rb +0 -20
- data/lib/rails-new-app/steps/choice_step.rb +0 -45
- data/lib/rails-new-app/steps/rails_version_step.rb +0 -34
- data/lib/rails-new-app/steps/step.rb +0 -75
@@ -1,5 +1,5 @@
|
|
1
1
|
module RailsNewApp
|
2
|
-
class
|
2
|
+
class TemplateEngineScreen < ChoiceScreen
|
3
3
|
def step_question
|
4
4
|
"Type the option number of the Template Engine gem to use:"
|
5
5
|
end
|
@@ -18,7 +18,7 @@ module RailsNewApp
|
|
18
18
|
|
19
19
|
def self.default
|
20
20
|
{
|
21
|
-
option_number:
|
21
|
+
option_number: 1,
|
22
22
|
name: "None",
|
23
23
|
key: ""
|
24
24
|
}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
module RailsNewApp
|
2
|
-
class
|
2
|
+
class TestFactoryScreen < ChoiceScreen
|
3
3
|
def step_question
|
4
4
|
warning =
|
5
5
|
if config[:test_runner][:key] == ""
|
@@ -25,8 +25,8 @@ module RailsNewApp
|
|
25
25
|
|
26
26
|
def self.default
|
27
27
|
{
|
28
|
-
option_number:
|
29
|
-
name: "None
|
28
|
+
option_number: 1,
|
29
|
+
name: "None",
|
30
30
|
key: ""
|
31
31
|
}
|
32
32
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
module RailsNewApp
|
2
|
-
class
|
2
|
+
class TestFakeDataScreen < ChoiceScreen
|
3
3
|
def step_question
|
4
4
|
warning =
|
5
5
|
if config[:test_runner][:key] == ""
|
@@ -25,8 +25,8 @@ module RailsNewApp
|
|
25
25
|
|
26
26
|
def self.default
|
27
27
|
{
|
28
|
-
option_number:
|
29
|
-
name: "None
|
28
|
+
option_number: 1,
|
29
|
+
name: "None",
|
30
30
|
key: ""
|
31
31
|
}
|
32
32
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
module RailsNewApp
|
2
|
-
class
|
2
|
+
class TestRunnerScreen < ChoiceScreen
|
3
3
|
def options
|
4
4
|
["None", "Minitest", "RSpec"]
|
5
5
|
end
|
@@ -18,7 +18,7 @@ module RailsNewApp
|
|
18
18
|
|
19
19
|
def self.default
|
20
20
|
{
|
21
|
-
option_number:
|
21
|
+
option_number: 2,
|
22
22
|
name: "Minitest",
|
23
23
|
key: "minitest",
|
24
24
|
in_rails_new: true
|
@@ -26,7 +26,7 @@ module RailsNewApp
|
|
26
26
|
end
|
27
27
|
|
28
28
|
def next_step
|
29
|
-
option == "None" ?
|
29
|
+
option == "None" ? :menu : :code_coverage
|
30
30
|
end
|
31
31
|
end
|
32
32
|
end
|
@@ -0,0 +1 @@
|
|
1
|
+
generate("cancan:ability")
|
@@ -0,0 +1 @@
|
|
1
|
+
gem "cancancan"
|
@@ -0,0 +1 @@
|
|
1
|
+
generate("devise:install")
|
@@ -0,0 +1 @@
|
|
1
|
+
gem "devise"
|
@@ -1,4 +1,4 @@
|
|
1
|
-
initializer "pagy.rb", "Check initializer options at: https://github.com/ddnexus/pagy/blob/master/lib/config/pagy.rb"
|
1
|
+
initializer "pagy.rb", "# Check initializer options at: https://github.com/ddnexus/pagy/blob/master/lib/config/pagy.rb"
|
2
2
|
|
3
3
|
inject_into_file "app/helpers/application_helper.rb", after: "module ApplicationHelper\n" do
|
4
4
|
<<~'RUBY'
|
@@ -0,0 +1 @@
|
|
1
|
+
gem "pundit"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails-new-app
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ariel Juodziukynas
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-05
|
11
|
+
date: 2021-06-05 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description:
|
14
14
|
email:
|
@@ -18,12 +18,18 @@ executables:
|
|
18
18
|
extensions: []
|
19
19
|
extra_rdoc_files: []
|
20
20
|
files:
|
21
|
+
- ".github/workflows/tests.yml"
|
21
22
|
- ".gitignore"
|
23
|
+
- Gemfile
|
24
|
+
- Gemfile.lock
|
22
25
|
- LICENSE
|
23
26
|
- README.md
|
27
|
+
- Rakefile
|
24
28
|
- exe/rails-new-app
|
25
29
|
- lib/rails-new-app.rb
|
26
30
|
- lib/rails-new-app/processors.rb
|
31
|
+
- lib/rails-new-app/processors/authentication_processor.rb
|
32
|
+
- lib/rails-new-app/processors/authorization_processor.rb
|
27
33
|
- lib/rails-new-app/processors/code_coverage_processor.rb
|
28
34
|
- lib/rails-new-app/processors/form_builder_processor.rb
|
29
35
|
- lib/rails-new-app/processors/pagination_processor.rb
|
@@ -34,23 +40,31 @@ files:
|
|
34
40
|
- lib/rails-new-app/processors/test_fake_data_processor.rb
|
35
41
|
- lib/rails-new-app/processors/test_runner_processor.rb
|
36
42
|
- lib/rails-new-app/runner.rb
|
37
|
-
- lib/rails-new-app/
|
38
|
-
- lib/rails-new-app/
|
39
|
-
- lib/rails-new-app/
|
40
|
-
- lib/rails-new-app/
|
41
|
-
- lib/rails-new-app/
|
42
|
-
- lib/rails-new-app/
|
43
|
-
- lib/rails-new-app/
|
44
|
-
- lib/rails-new-app/
|
45
|
-
- lib/rails-new-app/
|
46
|
-
- lib/rails-new-app/
|
47
|
-
- lib/rails-new-app/
|
48
|
-
- lib/rails-new-app/
|
49
|
-
- lib/rails-new-app/
|
50
|
-
- lib/rails-new-app/
|
51
|
-
- lib/rails-new-app/
|
52
|
-
- lib/rails-new-app/
|
43
|
+
- lib/rails-new-app/screens.rb
|
44
|
+
- lib/rails-new-app/screens/app_name_screen.rb
|
45
|
+
- lib/rails-new-app/screens/auth_screen.rb
|
46
|
+
- lib/rails-new-app/screens/authentication_screen.rb
|
47
|
+
- lib/rails-new-app/screens/authorization_screen.rb
|
48
|
+
- lib/rails-new-app/screens/choice_screen.rb
|
49
|
+
- lib/rails-new-app/screens/code_coverage_screen.rb
|
50
|
+
- lib/rails-new-app/screens/database_screen.rb
|
51
|
+
- lib/rails-new-app/screens/form_builder_screen.rb
|
52
|
+
- lib/rails-new-app/screens/java_script_framework_screen.rb
|
53
|
+
- lib/rails-new-app/screens/menu_screen.rb
|
54
|
+
- lib/rails-new-app/screens/pagination_screen.rb
|
55
|
+
- lib/rails-new-app/screens/review_and_confirm_screen.rb
|
56
|
+
- lib/rails-new-app/screens/ruby_linter_screen.rb
|
57
|
+
- lib/rails-new-app/screens/screen.rb
|
58
|
+
- lib/rails-new-app/screens/template_engine_screen.rb
|
59
|
+
- lib/rails-new-app/screens/test_factory_screen.rb
|
60
|
+
- lib/rails-new-app/screens/test_fake_data_screen.rb
|
61
|
+
- lib/rails-new-app/screens/test_runner_screen.rb
|
62
|
+
- lib/rails-new-app/screens/yes_no_choice_screen.rb
|
53
63
|
- lib/rails-new-app/string_underscore.rb
|
64
|
+
- lib/rails-new-app/templates/cancancan-config.rb
|
65
|
+
- lib/rails-new-app/templates/cancancan-gemfile.rb
|
66
|
+
- lib/rails-new-app/templates/devise-config.rb
|
67
|
+
- lib/rails-new-app/templates/devise-gemfile.rb
|
54
68
|
- lib/rails-new-app/templates/factory_bot-gemfile.rb
|
55
69
|
- lib/rails-new-app/templates/factory_bot-minitest-config.rb
|
56
70
|
- lib/rails-new-app/templates/factory_bot-rspec-config.rb
|
@@ -61,6 +75,8 @@ files:
|
|
61
75
|
- lib/rails-new-app/templates/kaminari-gemfile.rb
|
62
76
|
- lib/rails-new-app/templates/pagy-config.rb
|
63
77
|
- lib/rails-new-app/templates/pagy-gemfile.rb
|
78
|
+
- lib/rails-new-app/templates/pundit-config.rb
|
79
|
+
- lib/rails-new-app/templates/pundit-gemfile.rb
|
64
80
|
- lib/rails-new-app/templates/rspec-rails-config.rb
|
65
81
|
- lib/rails-new-app/templates/rspec-rails-gemfile.rb
|
66
82
|
- lib/rails-new-app/templates/rubocop-config.rb
|
data/lib/rails-new-app/steps.rb
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
module RailsNewApp
|
2
|
-
class AppNameStep < Step
|
3
|
-
def step_question
|
4
|
-
"Type the name of the app:"
|
5
|
-
end
|
6
|
-
|
7
|
-
def after_valid
|
8
|
-
puts "Your app is: #{@selection}\n"
|
9
|
-
end
|
10
|
-
|
11
|
-
def valid?(input)
|
12
|
-
if /\A[a-z_]+\z/i.match?(input.strip)
|
13
|
-
true
|
14
|
-
else
|
15
|
-
puts "Invalid app name"
|
16
|
-
false
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
@@ -1,45 +0,0 @@
|
|
1
|
-
module RailsNewApp
|
2
|
-
class ChoiceStep < Step
|
3
|
-
def options
|
4
|
-
[]
|
5
|
-
end
|
6
|
-
|
7
|
-
def option
|
8
|
-
options[@selection]
|
9
|
-
end
|
10
|
-
|
11
|
-
def ask
|
12
|
-
puts step_question
|
13
|
-
puts ""
|
14
|
-
|
15
|
-
current = config[self.class.key][:option_number]
|
16
|
-
options.each_with_index do |op, idx|
|
17
|
-
is_current = idx == current ? " (current)" : ""
|
18
|
-
puts "#{idx} ) #{op}#{is_current}"
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
def clean_input(input)
|
23
|
-
input.to_i
|
24
|
-
end
|
25
|
-
|
26
|
-
def valid?(input)
|
27
|
-
if options[input]
|
28
|
-
true
|
29
|
-
else
|
30
|
-
puts "Invalid option, choose again:"
|
31
|
-
false
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
def return_value
|
36
|
-
lower = lowercase_keys[@selection]
|
37
|
-
|
38
|
-
{
|
39
|
-
option_number: @selection,
|
40
|
-
name: option,
|
41
|
-
key: lower
|
42
|
-
}
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
@@ -1,34 +0,0 @@
|
|
1
|
-
module RailsNewApp
|
2
|
-
class RailsVersionStep < Step
|
3
|
-
def valid?(ver)
|
4
|
-
if /\A[56].\d\z/.match?(ver)
|
5
|
-
# uncomment this to validate the input against RubyGems
|
6
|
-
puts "Validating against Rubygems..."
|
7
|
-
if `gem list -r -e -a rails | grep '[\( ]#{ver}\.'` != ""
|
8
|
-
true
|
9
|
-
else
|
10
|
-
puts "Invalid Rails version, type the version you want to use:"
|
11
|
-
end
|
12
|
-
else
|
13
|
-
puts "Invalid Rails version, type the version you want to use:"
|
14
|
-
false
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
def step_question
|
19
|
-
<<~QUESTION
|
20
|
-
Type the version of Rails you want to use (MAJOR.MINOR):
|
21
|
-
! Notice that Rails will use the latest patch version for a given version !
|
22
|
-
|
23
|
-
QUESTION
|
24
|
-
end
|
25
|
-
|
26
|
-
def after_valid
|
27
|
-
puts "Selected version is: #{@selection}\n"
|
28
|
-
end
|
29
|
-
|
30
|
-
def self.default
|
31
|
-
""
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
@@ -1,75 +0,0 @@
|
|
1
|
-
module RailsNewApp
|
2
|
-
class Step
|
3
|
-
def self.clean_name
|
4
|
-
to_s.gsub("Step", "").gsub("RailsNewApp::", "")
|
5
|
-
end
|
6
|
-
|
7
|
-
def self.key
|
8
|
-
clean_name.underscore.to_sym
|
9
|
-
end
|
10
|
-
|
11
|
-
def self.run(config)
|
12
|
-
new.run(config)
|
13
|
-
end
|
14
|
-
|
15
|
-
attr_reader :config
|
16
|
-
|
17
|
-
def run(current_config)
|
18
|
-
@config = current_config
|
19
|
-
|
20
|
-
system("clear") if config[:navigation]
|
21
|
-
|
22
|
-
ask
|
23
|
-
read_and_validate
|
24
|
-
after_valid
|
25
|
-
return_value
|
26
|
-
end
|
27
|
-
|
28
|
-
def step_title
|
29
|
-
"Generic step question"
|
30
|
-
end
|
31
|
-
|
32
|
-
# describe the current step
|
33
|
-
def ask
|
34
|
-
puts step_question
|
35
|
-
end
|
36
|
-
|
37
|
-
# loop until the input is valid, sets @selection
|
38
|
-
def read_and_validate
|
39
|
-
loop do
|
40
|
-
input = clean_input(gets.chomp)
|
41
|
-
if valid?(input)
|
42
|
-
@selection = input
|
43
|
-
return true
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
# clean the input if needed before validations
|
49
|
-
def clean_input(input)
|
50
|
-
input.strip
|
51
|
-
end
|
52
|
-
|
53
|
-
# validate the input
|
54
|
-
def valid?(input)
|
55
|
-
true
|
56
|
-
end
|
57
|
-
|
58
|
-
# after valid message
|
59
|
-
def after_valid
|
60
|
-
end
|
61
|
-
|
62
|
-
# process @selection to return a different value
|
63
|
-
def return_value
|
64
|
-
@selection
|
65
|
-
end
|
66
|
-
|
67
|
-
def self.default
|
68
|
-
""
|
69
|
-
end
|
70
|
-
|
71
|
-
def next_step
|
72
|
-
nil
|
73
|
-
end
|
74
|
-
end
|
75
|
-
end
|