rails_app_generator 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +7 -0
- data/lib/rails_app_generator/notes/register-options.txt +25 -0
- data/lib/rails_app_generator/options/build_option.rb +56 -0
- data/lib/rails_app_generator/{build_options.rb → options/build_options.rb} +18 -6
- data/lib/rails_app_generator/options/map_option_boolean_flag.rb +11 -0
- data/lib/rails_app_generator/options/map_option_pass_through.rb +10 -0
- data/lib/rails_app_generator/version.rb +1 -1
- data/lib/rails_app_generator.rb +4 -2
- data/package-lock.json +2 -2
- data/package.json +1 -1
- metadata +6 -3
- data/lib/rails_app_generator/build_option.rb +0 -35
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a977e13e740b6061b3d3ad51ceb945bb1397d575f10079bdaa990d40736a9238
|
4
|
+
data.tar.gz: aec7a7184348cbe4b67b1af22cb8ac4147e647a1b01ade79a0d21fd34fc114ae
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: de59016f6f5a06e138a3380733a961bfb000e0f838456dc9b8c813747c939d9087ed31d8d295d258c3658e883e188a5fdafa7bfe4e04e8d8eb2907a26cdbc94e
|
7
|
+
data.tar.gz: a11097251170838db6e12f32397e2e7df1a8d713cc27b6be96eaa7cda8afc6095b1bd146a73df33933a63fbb7280c06c70b95783b906d2ffab53fade10c131da
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
## [0.0.2](https://github.com/klueless-io/rails_app_generator/compare/v0.0.1...v0.0.2) (2022-07-19)
|
2
|
+
|
3
|
+
|
4
|
+
### Bug Fixes
|
5
|
+
|
6
|
+
* claim Ruby Gem name ([e15c681](https://github.com/klueless-io/rails_app_generator/commit/e15c6819eda783a345b79db3e22e544b50d9ef7c))
|
7
|
+
|
1
8
|
## [Unreleased]
|
2
9
|
|
3
10
|
## [0.1.0] - 2022-07-16
|
@@ -0,0 +1,25 @@
|
|
1
|
+
register_option :template, type: :string , desc: "Path to some #{name} template (can be a filesystem path or URL)"
|
2
|
+
register_option :database, type: :string , default: "sqlite3" , desc: "Preconfigure for selected database (options: #{DATABASES.join('/')})"
|
3
|
+
register_option :skip_git, type: :boolean, default: false , desc: "Skip .gitignore file"
|
4
|
+
register_option :skip_keeps, type: :boolean, default: false , desc: "Skip source control .keep files"
|
5
|
+
register_option :skip_action_mailer, type: :boolean, default: false , desc: "Skip Action Mailer files"
|
6
|
+
register_option :skip_action_mailbox, type: :boolean, default: false , desc: "Skip Action Mailbox gem"
|
7
|
+
register_option :skip_action_text, type: :boolean, default: false , desc: "Skip Action Text gem"
|
8
|
+
register_option :skip_active_record, type: :boolean, default: false , desc: "Skip Active Record files"
|
9
|
+
register_option :skip_active_job, type: :boolean, default: false , desc: "Skip Active Job"
|
10
|
+
register_option :skip_active_storage, type: :boolean, default: false , desc: "Skip Active Storage files"
|
11
|
+
register_option :skip_action_cable, type: :boolean, default: false , desc: "Skip Action Cable files"
|
12
|
+
register_option :skip_asset_pipeline, type: :boolean, default: false
|
13
|
+
register_option :asset_pipeline, type: :string , default: "sprockets" , desc: "Choose your asset pipeline [options: sprockets (default), propshaft]"
|
14
|
+
register_option :skip_javascript, type: :boolean, default: name == "plugin" , desc: "Skip JavaScript files"
|
15
|
+
register_option :skip_hotwire, type: :boolean, default: false , desc: "Skip Hotwire integration"
|
16
|
+
register_option :skip_jbuilder, type: :boolean, default: false , desc: "Skip jbuilder gem"
|
17
|
+
register_option :skip_test, type: :boolean, default: false , desc: "Skip test files"
|
18
|
+
register_option :skip_system_test, type: :boolean, default: false , desc: "Skip system test files"
|
19
|
+
register_option :skip_bootsnap, type: :boolean, default: false , desc: "Skip bootsnap gem"
|
20
|
+
register_option :dev, type: :boolean, default: false , desc: "Set up the #{name} with Gemfile pointing to your Rails checkout"
|
21
|
+
register_option :edge, type: :boolean, default: false , desc: "Set up the #{name} with Gemfile pointing to Rails repository"
|
22
|
+
register_option :main, type: :boolean, default: false , desc: "Set up the #{name} with Gemfile pointing to Rails repository main branch"
|
23
|
+
register_option :rc, type: :string , default: nil , desc: "Path to file containing extra configuration options for rails command"
|
24
|
+
register_option :no_rc, type: :boolean, default: false , desc: "Skip loading of extra configuration options from .railsrc file"
|
25
|
+
register_option :help, type: :boolean, group: :rails , desc: "Show this help message and quit"
|
@@ -0,0 +1,56 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RailsAppGenerator
|
4
|
+
# Option for the rails generator
|
5
|
+
#
|
6
|
+
# This class maps closely (but not exactly) to Thor's options
|
7
|
+
# The pattern is not exactly the same, it is easy to map the options
|
8
|
+
# you need from other generators such as: railties/lib/rails/generators/app_base.rb
|
9
|
+
#
|
10
|
+
# @example
|
11
|
+
# class_option :skip_git, type: :boolean, default: false, desc: "Skip .gitignore file"
|
12
|
+
# becomes
|
13
|
+
# register_option :skip_git, type: :boolean, default: false, desc: "Skip .gitignore file"
|
14
|
+
class BuildOption
|
15
|
+
attr_reader :name, :desc, :type, :default, :required, :mapper
|
16
|
+
|
17
|
+
def initialize(**args)
|
18
|
+
@name = args[:name]
|
19
|
+
@desc = args[:desc] || ''
|
20
|
+
@type = args[:type] || :string
|
21
|
+
@required = args.fetch(:required, false)
|
22
|
+
@default = args[:default] || sane_default
|
23
|
+
@mapper = args[:mapper] || sane_mapper
|
24
|
+
|
25
|
+
raise ArgumentError, ':required should not be nil' if @required.nil?
|
26
|
+
end
|
27
|
+
|
28
|
+
def cmd_option(value); end
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
def sane_default
|
33
|
+
case type
|
34
|
+
when :string
|
35
|
+
''
|
36
|
+
when :boolean
|
37
|
+
false
|
38
|
+
when :integer
|
39
|
+
0
|
40
|
+
when :array
|
41
|
+
[]
|
42
|
+
when :hash
|
43
|
+
{}
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def sane_mapper
|
48
|
+
case type
|
49
|
+
when :boolean
|
50
|
+
RailsAppGenerator::MapOptionBooleanFlag
|
51
|
+
else
|
52
|
+
RailsAppGenerator::MapOptionValue
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
@@ -16,19 +16,31 @@ module RailsAppGenerator
|
|
16
16
|
@registered_options ||= []
|
17
17
|
end
|
18
18
|
|
19
|
-
def
|
20
|
-
|
19
|
+
def registered_options_lookup
|
20
|
+
@registered_options_lookup ||= {}
|
21
|
+
end
|
22
|
+
|
23
|
+
def register_option(name, **args)
|
24
|
+
return if registered_options_lookup.key?(name)
|
25
|
+
|
26
|
+
option = BuildOption.new(**{ name: name }.merge(args))
|
27
|
+
|
28
|
+
registered_options_lookup[name] = option
|
29
|
+
registered_options << option
|
21
30
|
end
|
22
31
|
|
23
32
|
def reset
|
24
33
|
@registered_options = nil
|
34
|
+
@registered_options_lookup = nil
|
25
35
|
end
|
26
36
|
end
|
27
37
|
|
28
|
-
def
|
29
|
-
|
30
|
-
|
31
|
-
|
38
|
+
def cmd_line_options
|
39
|
+
self.class.registered_options.map do |option|
|
40
|
+
mapper = option.mapper
|
41
|
+
value = options[option.name]
|
42
|
+
mapper.map(option.name, value)
|
43
|
+
end.reject(&:blank?)
|
32
44
|
end
|
33
45
|
|
34
46
|
private
|
@@ -0,0 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RailsAppGenerator
|
4
|
+
# Map a boolean true to a command line flag in the format "--flag-name"
|
5
|
+
# false is ignored
|
6
|
+
class MapOptionBooleanFlag
|
7
|
+
def self.map(name, value)
|
8
|
+
value == true ? "--#{name.to_s.gsub('_', '-')}" : ''
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
data/lib/rails_app_generator.rb
CHANGED
@@ -10,8 +10,10 @@ require 'rails/generators/rails/app/app_generator'
|
|
10
10
|
require 'bundler'
|
11
11
|
|
12
12
|
require 'rails_app_generator/version'
|
13
|
-
require 'rails_app_generator/
|
14
|
-
require 'rails_app_generator/
|
13
|
+
require 'rails_app_generator/options/map_option_pass_through'
|
14
|
+
require 'rails_app_generator/options/map_option_boolean_flag'
|
15
|
+
require 'rails_app_generator/options/build_option'
|
16
|
+
require 'rails_app_generator/options/build_options'
|
15
17
|
require 'rails_app_generator/starter'
|
16
18
|
require 'rails_app_generator/app_builder'
|
17
19
|
require 'rails_app_generator/app_generator'
|
data/package-lock.json
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
{
|
2
2
|
"name": "rails_app_generator",
|
3
|
-
"version": "0.0.
|
3
|
+
"version": "0.0.3",
|
4
4
|
"lockfileVersion": 2,
|
5
5
|
"requires": true,
|
6
6
|
"packages": {
|
7
7
|
"": {
|
8
8
|
"name": "rails_app_generator",
|
9
|
-
"version": "0.0.
|
9
|
+
"version": "0.0.3",
|
10
10
|
"devDependencies": {
|
11
11
|
"@klueless-js/semantic-release-rubygem": "github:klueless-js/semantic-release-rubygem",
|
12
12
|
"@semantic-release/changelog": "^6.0.1",
|
data/package.json
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails_app_generator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Cruwys
|
@@ -49,8 +49,6 @@ files:
|
|
49
49
|
- lib/rails_app_generator.rb
|
50
50
|
- lib/rails_app_generator/app_builder.rb
|
51
51
|
- lib/rails_app_generator/app_generator.rb
|
52
|
-
- lib/rails_app_generator/build_option.rb
|
53
|
-
- lib/rails_app_generator/build_options.rb
|
54
52
|
- lib/rails_app_generator/generators/advisories_generator.rb
|
55
53
|
- lib/rails_app_generator/generators/base.rb
|
56
54
|
- lib/rails_app_generator/generators/foo_generator.rb
|
@@ -58,8 +56,13 @@ files:
|
|
58
56
|
- lib/rails_app_generator/notes/methods-class.txt
|
59
57
|
- lib/rails_app_generator/notes/methods-instance.txt
|
60
58
|
- lib/rails_app_generator/notes/option-rules.txt
|
59
|
+
- lib/rails_app_generator/notes/register-options.txt
|
61
60
|
- lib/rails_app_generator/notes/usage-gem.txt
|
62
61
|
- lib/rails_app_generator/notes/usage-rails.txt
|
62
|
+
- lib/rails_app_generator/options/build_option.rb
|
63
|
+
- lib/rails_app_generator/options/build_options.rb
|
64
|
+
- lib/rails_app_generator/options/map_option_boolean_flag.rb
|
65
|
+
- lib/rails_app_generator/options/map_option_pass_through.rb
|
63
66
|
- lib/rails_app_generator/starter.rb
|
64
67
|
- lib/rails_app_generator/version.rb
|
65
68
|
- package-lock.json
|
@@ -1,35 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module RailsAppGenerator
|
4
|
-
# Option for the rails generator
|
5
|
-
class BuildOption
|
6
|
-
attr_reader :name, :description, :type, :default, :required
|
7
|
-
|
8
|
-
def initialize(**args)
|
9
|
-
@name = args[:name]
|
10
|
-
@description = args[:description] || ''
|
11
|
-
@type = args[:type] || :string
|
12
|
-
@required = args.fetch(:required, false)
|
13
|
-
@default = args[:default] || sane_default
|
14
|
-
|
15
|
-
raise ArgumentError, ':required should not be nil' if @required.nil?
|
16
|
-
end
|
17
|
-
|
18
|
-
private
|
19
|
-
|
20
|
-
def sane_default
|
21
|
-
case type
|
22
|
-
when :string
|
23
|
-
''
|
24
|
-
when :boolean
|
25
|
-
false
|
26
|
-
when :integer
|
27
|
-
0
|
28
|
-
when :array
|
29
|
-
[]
|
30
|
-
when :hash
|
31
|
-
{}
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|