rails_app_generator 0.0.3 → 0.0.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a977e13e740b6061b3d3ad51ceb945bb1397d575f10079bdaa990d40736a9238
4
- data.tar.gz: aec7a7184348cbe4b67b1af22cb8ac4147e647a1b01ade79a0d21fd34fc114ae
3
+ metadata.gz: 36f0ee4d5e320c70147846a8027fd7c746914d87dd34366d9f1e8ce48f169623
4
+ data.tar.gz: acaf4240b30348911d75621ea66227c96ca789826422e8e97c0a73e96b4c88f5
5
5
  SHA512:
6
- metadata.gz: de59016f6f5a06e138a3380733a961bfb000e0f838456dc9b8c813747c939d9087ed31d8d295d258c3658e883e188a5fdafa7bfe4e04e8d8eb2907a26cdbc94e
7
- data.tar.gz: a11097251170838db6e12f32397e2e7df1a8d713cc27b6be96eaa7cda8afc6095b1bd146a73df33933a63fbb7280c06c70b95783b906d2ffab53fade10c131da
6
+ metadata.gz: 4a4f3c1774c6a0a0fff82e4e82426ad69b3243f56efa4439b3af1f6c6a314ba9b788176613e1d1763149e8ea5e4733af73d43e473dcf45ef8d57dbf2c7a816b0
7
+ data.tar.gz: f9e78e1b2de8972af6f01cb0000738a234856dacc790683f96068712e901b600718c20dd20472f8ea7b2d64d58fe9178a00edc721aa3fcf83b67ff808addf11c
data/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ ## [0.0.3](https://github.com/klueless-io/rails_app_generator/compare/v0.0.2...v0.0.3) (2022-07-19)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * add builder option command line mapping ([5cc16b5](https://github.com/klueless-io/rails_app_generator/commit/5cc16b53f3ea2821e226a51dedfa10513307860f))
7
+
1
8
  ## [0.0.2](https://github.com/klueless-io/rails_app_generator/compare/v0.0.1...v0.0.2) (2022-07-19)
2
9
 
3
10
 
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RailsAppGenerator
4
+ # Simple pass through mapper for options that do not yet have a mapper defined
5
+ class BaseMapOption
6
+ def option_name(name)
7
+ "--#{name.to_s.gsub('_', '-')}"
8
+ end
9
+ end
10
+ end
@@ -47,9 +47,11 @@ module RailsAppGenerator
47
47
  def sane_mapper
48
48
  case type
49
49
  when :boolean
50
- RailsAppGenerator::MapOptionBooleanFlag
50
+ RailsAppGenerator::MapOptionBooleanFlag.new
51
+ when :string
52
+ RailsAppGenerator::MapOptionString.new
51
53
  else
52
- RailsAppGenerator::MapOptionValue
54
+ RailsAppGenerator::MapOptionIgnore.new
53
55
  end
54
56
  end
55
57
  end
@@ -3,9 +3,9 @@
3
3
  module RailsAppGenerator
4
4
  # Map a boolean true to a command line flag in the format "--flag-name"
5
5
  # false is ignored
6
- class MapOptionBooleanFlag
7
- def self.map(name, value)
8
- value == true ? "--#{name.to_s.gsub('_', '-')}" : ''
6
+ class MapOptionBooleanFlag < BaseMapOption
7
+ def map(name, value)
8
+ value == true ? option_name(name) : ''
9
9
  end
10
10
  end
11
11
  end
@@ -2,9 +2,9 @@
2
2
 
3
3
  module RailsAppGenerator
4
4
  # Simple pass through mapper for options that do not yet have a mapper defined
5
- class MapOptionValue
6
- def self.map(_name, value)
7
- value
5
+ class MapOptionIgnore < BaseMapOption
6
+ def map(_name, _value)
7
+ nil
8
8
  end
9
9
  end
10
10
  end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RailsAppGenerator
4
+ # Simple pass through mapper for options that do not yet have a mapper defined
5
+ class MapOptionString < BaseMapOption
6
+ def map(name, value)
7
+ value = value.to_s
8
+ value = "\"#{value}\"" if value.include?(' ')
9
+ "#{option_name(name)}=#{value}"
10
+ end
11
+ end
12
+ end
@@ -1,8 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RailsAppGenerator
4
- # Build options for RailsAppGenerator::Starter
5
- class BuildOptions
4
+ # OptionBuilder can work standalone or as the base class
5
+ # for application generator options used by RailsAppGenerator::Starter
6
+ class OptionsBuilder
6
7
  attr_reader :options
7
8
 
8
9
  def initialize(opts)
@@ -20,6 +21,9 @@ module RailsAppGenerator
20
21
  @registered_options_lookup ||= {}
21
22
  end
22
23
 
24
+ # Future options are placeholders for options that are not yet implemented
25
+ def future_option(name, **args); end
26
+
23
27
  def register_option(name, **args)
24
28
  return if registered_options_lookup.key?(name)
25
29
 
@@ -43,6 +47,13 @@ module RailsAppGenerator
43
47
  end.reject(&:blank?)
44
48
  end
45
49
 
50
+ def debug
51
+ puts '[ Options JSON ]----------------------------------------------------'
52
+ puts JSON.pretty_generate(options)
53
+ puts '[ Options Command Line ]--------------------------------------------'
54
+ puts cmd_line_options
55
+ end
56
+
46
57
  private
47
58
 
48
59
  def default_options
@@ -0,0 +1,54 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RailsAppGenerator
4
+ class RailsOptions < OptionsBuilder
5
+ future_option :template , type: :string # , desc: "Path to some #{name} template (can be a filesystem path or URL)"
6
+ future_option :database , type: :string , default: 'sqlite3' # , desc: "Preconfigure for selected database (options: #{DATABASES.join('/')})"
7
+ register_option :skip_git , type: :boolean, default: false # , desc: "Skip .gitignore file"
8
+ future_option :skip_keeps , type: :boolean, default: false # , desc: "Skip source control .keep files"
9
+ future_option :skip_action_mailer , type: :boolean, default: false # , desc: "Skip Action Mailer files"
10
+ future_option :skip_action_mailbox , type: :boolean, default: false # , desc: "Skip Action Mailbox gem"
11
+ future_option :skip_action_text , type: :boolean, default: false # , desc: "Skip Action Text gem"
12
+ future_option :skip_active_record , type: :boolean, default: false # , desc: "Skip Active Record files"
13
+ future_option :skip_active_job , type: :boolean, default: false # , desc: "Skip Active Job"
14
+ future_option :skip_active_storage , type: :boolean, default: false # , desc: "Skip Active Storage files"
15
+ future_option :skip_action_cable , type: :boolean, default: false # , desc: "Skip Action Cable files"
16
+ future_option :skip_asset_pipeline , type: :boolean, default: false #
17
+ future_option :asset_pipeline , type: :string , default: 'sprockets' # , desc: "Choose your asset pipeline [options: sprockets (default), propshaft]"
18
+ future_option :skip_javascript , type: :boolean, default: false # name == 'plugin' # , desc: "Skip JavaScript files"
19
+ future_option :skip_hotwire , type: :boolean, default: false # , desc: "Skip Hotwire integration"
20
+ future_option :skip_jbuilder , type: :boolean, default: false # , desc: "Skip jbuilder gem"
21
+ register_option :skip_test , type: :boolean, default: false # , desc: "Skip test files"
22
+ register_option :test , type: :string , default: 'rspec' # , desc: "minitest or rspec (default: rspec)"
23
+ future_option :skip_system_test , type: :boolean, default: false # , desc: "Skip system test files"
24
+ future_option :skip_bootsnap , type: :boolean, default: false # , desc: "Skip bootsnap gem"
25
+ future_option :dev , type: :boolean, default: false # , desc: "Set up the #{name} with Gemfile pointing to your Rails checkout"
26
+ future_option :edge , type: :boolean, default: false # , desc: "Set up the #{name} with Gemfile pointing to Rails repository"
27
+ future_option :main , type: :boolean, default: false # , desc: "Set up the #{name} with Gemfile pointing to Rails repository main branch"
28
+ future_option :rc , type: :string , default: nil # , desc: "Path to file containing extra configuration options for rails command"
29
+ future_option :no_rc , type: :boolean, default: false # , desc: "Skip loading of extra configuration options from .railsrc file"
30
+ future_option :help , type: :boolean # , group: :rails # , desc: "Show this help message and quit"
31
+ future_option :version , type: :boolean # , group: :rails, desc: "Show Rails version number and quit"
32
+ future_option :api , type: :boolean # , desc: "Preconfigure smaller stack for API only apps"
33
+ future_option :minimal , type: :boolean # , desc: "Preconfigure a minimal rails app"
34
+ future_option :javascript , type: :string , default: 'importmap' # , desc: "Choose JavaScript approach [options: importmap (default), webpack, esbuild, rollup]"
35
+ future_option :css , type: :string # , desc: "Choose CSS processor [options: tailwind, bootstrap, bulma, postcss, sass... check https://github.com/rails/cssbundling-rails]"
36
+ register_option :skip_bundle , type: :boolean, default: false # , desc: "Don't run bundle install"
37
+
38
+ # if options[:minimal]
39
+ # self.options = options.merge(
40
+ # skip_action_cable: true,
41
+ # skip_action_mailer: true,
42
+ # skip_action_mailbox: true,
43
+ # skip_action_text: true,
44
+ # skip_active_job: true,
45
+ # skip_active_storage: true,
46
+ # skip_bootsnap: true,
47
+ # skip_dev_gems: true,
48
+ # skip_javascript: true,
49
+ # skip_jbuilder: true,
50
+ # skip_system_test: true,
51
+ # skip_hotwire: true).freeze
52
+ # end
53
+ end
54
+ end
@@ -43,7 +43,7 @@ module RailsAppGenerator
43
43
  File.expand_path(File.join(destination_root, app_path))
44
44
  end
45
45
 
46
- def start
46
+ def start(_options)
47
47
  puts "Target path: #{target_path}"
48
48
 
49
49
  RailsAppGenerator::AppGenerator.source_root(rails_template_path)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RailsAppGenerator
4
- VERSION = '0.0.3'
4
+ VERSION = '0.0.4'
5
5
  end
@@ -10,10 +10,13 @@ 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/options/map_option_pass_through'
13
+ require 'rails_app_generator/options/base_map_option'
14
+ require 'rails_app_generator/options/map_option_ignore'
15
+ require 'rails_app_generator/options/map_option_string'
14
16
  require 'rails_app_generator/options/map_option_boolean_flag'
15
17
  require 'rails_app_generator/options/build_option'
16
- require 'rails_app_generator/options/build_options'
18
+ require 'rails_app_generator/options/options_builder'
19
+ require 'rails_app_generator/options/rails_options'
17
20
  require 'rails_app_generator/starter'
18
21
  require 'rails_app_generator/app_builder'
19
22
  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",
3
+ "version": "0.0.4",
4
4
  "lockfileVersion": 2,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "rails_app_generator",
9
- "version": "0.0.3",
9
+ "version": "0.0.4",
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rails_app_generator",
3
- "version": "0.0.3",
3
+ "version": "0.0.4",
4
4
  "description": "Create new Rails Application with custom opinions",
5
5
  "scripts": {
6
6
  "release": "semantic-release"
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.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Cruwys
@@ -59,10 +59,13 @@ files:
59
59
  - lib/rails_app_generator/notes/register-options.txt
60
60
  - lib/rails_app_generator/notes/usage-gem.txt
61
61
  - lib/rails_app_generator/notes/usage-rails.txt
62
+ - lib/rails_app_generator/options/base_map_option.rb
62
63
  - lib/rails_app_generator/options/build_option.rb
63
- - lib/rails_app_generator/options/build_options.rb
64
64
  - lib/rails_app_generator/options/map_option_boolean_flag.rb
65
- - lib/rails_app_generator/options/map_option_pass_through.rb
65
+ - lib/rails_app_generator/options/map_option_ignore.rb
66
+ - lib/rails_app_generator/options/map_option_string.rb
67
+ - lib/rails_app_generator/options/options_builder.rb
68
+ - lib/rails_app_generator/options/rails_options.rb
66
69
  - lib/rails_app_generator/starter.rb
67
70
  - lib/rails_app_generator/version.rb
68
71
  - package-lock.json