rails_app_generator 0.0.2 → 0.0.3
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/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
|