rails_app_generator 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
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