inertia_rails-contrib 0.2.0 → 0.2.1

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: b9bf363cb43e7bd6c98bcd4ca6b3538e09927f61f5687553c44a3df5a347c3e1
4
- data.tar.gz: 31345ef902abb988dc50540f5bfc110fa392b94cb0a7d82c10dfa6a36cd4ca96
3
+ metadata.gz: 1e6c5bccb1afe9ba7ccd8366ea492d47c947ec2c5787ca63b871f7303ea1c598
4
+ data.tar.gz: 3a6eeaabc968804dfc1d2cab8e9a5064332c7e96a6d480e0ae1d34fa4fd5b967
5
5
  SHA512:
6
- metadata.gz: bc56d3c96c345caafbdafbf8b46c9b2d6b58d3f710f032a3127a2954df38f2453824c61d585959e751d97724b0d9612c884b3fedabacb1fded37c8b45c14e0bd
7
- data.tar.gz: 5af321921aad351f9be524c9d533c44c5db0d359b0646e8b48abba9581e8803e7ab15eb7e8a82d7c3bf39e8065e0f987ad13735ae64731976b8f70c4a8c68310
6
+ metadata.gz: 4e275e6b29e124aeb22edf64f676112af27e037b720aafc7e22ea70eddd965491447fbb3a1e40f5f78c6117764c5327e5e809616c66f5603f7f787f9f4f54123
7
+ data.tar.gz: b419a7c886222c86ee2893c3741e1a6dbea59b47144723c7f187bb1ce386edbd551ad6df68eac99368db80566cd75f64256be087a04375ec6447b8f3b83dac46
data/CHANGELOG.md CHANGED
@@ -7,6 +7,17 @@ and this project adheres to [Semantic Versioning].
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.2.1] - 2024-08-11
11
+
12
+ Added:
13
+
14
+ - Support `pnpm` package manager ([@skryukov])
15
+ - New `--verbose` option for the installation generator ([@skryukov])
16
+
17
+ Fixed:
18
+
19
+ - Support installation alongside Webpacker ([@skryukov])
20
+
10
21
  ## [0.2.0] - 2024-08-10
11
22
 
12
23
  Added:
@@ -32,7 +43,8 @@ Added:
32
43
  [@iurev]: https://github.com/iurev
33
44
  [@skryukov]: https://github.com/skryukov
34
45
 
35
- [Unreleased]: https://github.com/skryukov/inertia_rails-contrib/compare/v0.2.0...HEAD
46
+ [Unreleased]: https://github.com/skryukov/inertia_rails-contrib/compare/v0.2.1...HEAD
47
+ [0.2.1]: https://github.com/skryukov/inertia_rails-contrib/compare/v0.2.0...v0.2.1
36
48
  [0.2.0]: https://github.com/skryukov/inertia_rails-contrib/compare/v0.1.1...v0.2.0
37
49
  [0.1.1]: https://github.com/skryukov/inertia_rails-contrib/compare/v0.1.0...v0.1.1
38
50
  [0.1.0]: https://github.com/skryukov/inertia_rails-contrib/commits/v0.1.0
@@ -3,7 +3,13 @@ module Inertia
3
3
  module Helpers
4
4
  ### FS Helpers
5
5
  def js_destination_path
6
- defined?(ViteRuby) ? ViteRuby.config.source_code_dir : "app/frontend"
6
+ return ViteRuby.config.source_code_dir if defined?(ViteRuby)
7
+ if file?("config/vite.json")
8
+ source_code_dir = JSON.parse(File.read(file_path("config/vite.json"))).dig("all", "sourceCodeDir")
9
+ return source_code_dir if source_code_dir
10
+ end
11
+
12
+ "app/frontend"
7
13
  end
8
14
 
9
15
  def js_destination_root
@@ -18,7 +18,7 @@ module Inertia
18
18
  enum: FRAMEWORKS.keys,
19
19
  default: nil
20
20
 
21
- class_option :package_manager, type: :string, default: nil, enum: %w[npm yarn bun],
21
+ class_option :package_manager, type: :string, default: nil, enum: %w[npm yarn bun pnpm],
22
22
  desc: "The package manager you want to use to install Inertia's npm packages"
23
23
 
24
24
  class_option :interactive, type: :boolean, default: true,
@@ -31,6 +31,9 @@ module Inertia
31
31
  class_option :example_page, type: :boolean, default: true,
32
32
  desc: "Whether to add an example Inertia page"
33
33
 
34
+ class_option :verbose, type: :boolean, default: false,
35
+ desc: "Run the generator in verbose mode"
36
+
34
37
  remove_class_option :skip_namespace, :skip_collision_check
35
38
 
36
39
  def install
@@ -46,7 +49,7 @@ module Inertia
46
49
 
47
50
  say "Copying bin/dev"
48
51
  copy_file "#{__dir__}/templates/dev", "bin/dev"
49
- chmod "bin/dev", 0o755, verbose: false
52
+ chmod "bin/dev", 0o755, verbose: verbose?
50
53
 
51
54
  say "Inertia's Rails adapter successfully installed", :green
52
55
  end
@@ -132,14 +135,14 @@ module Inertia
132
135
 
133
136
  in_root do
134
137
  Bundler.with_original_env do
135
- if (capture = run("bundle add vite_rails", capture: true))
138
+ if (capture = run("bundle add vite_rails", capture: !verbose?))
136
139
  say "Vite Rails gem successfully installed", :green
137
140
  else
138
141
  say capture
139
142
  say_error "Failed to install Vite Rails gem", :red
140
143
  exit(false)
141
144
  end
142
- if (capture = run("bundle exec vite install", capture: true))
145
+ if (capture = run("bundle exec vite install", capture: !verbose?))
143
146
  say "Vite Rails successfully installed", :green
144
147
  else
145
148
  say capture
@@ -155,12 +158,22 @@ module Inertia
155
158
 
156
159
  if package_manager.nil?
157
160
  say_status "Could not find a package.json file to install Inertia to.", nil
161
+ elsif gem_installed?("webpacker") || gem_installed?("shakapacker")
162
+ say "Webpacker or Shakapacker is installed.", :yellow
163
+ say "Vite Ruby can work alongside Webpacker or Shakapacker, but it might cause issues.", :yellow
164
+ say "Please see the Vite Ruby documentation for the migration guide:", :yellow
165
+ say "https://vite-ruby.netlify.app/guide/migration.html#webpacker-%F0%9F%93%A6", :yellow
158
166
  else
159
- say_status "Could not find a Vite configuration files (`config/vite.json` & `vite.config.{ts,js,mjs,cjs}`).", nil
167
+ say_status "Could not find a Vite configuration files (`config/vite.json` & `vite.config.{ts,js,mjs,cjs,mts,cts}`).", nil
160
168
  end
161
169
  false
162
170
  end
163
171
 
172
+ def gem_installed?(name)
173
+ regex = /^[^#]*gem\s+['"]#{name}['"]/
174
+ File.read(file_path("Gemfile")).match?(regex)
175
+ end
176
+
164
177
  def application_layout
165
178
  @application_layout ||= Pathname.new(file_path("app/views/layouts/application.html.erb"))
166
179
  end
@@ -175,7 +188,7 @@ module Inertia
175
188
 
176
189
  def add_packages(*packages)
177
190
  in_root do
178
- run "#{package_manager} add #{packages.join(" ")} --silent"
191
+ run "#{package_manager} add #{packages.join(" ")} #{verbose? ? "" : "--silent"}"
179
192
  end
180
193
  end
181
194
 
@@ -184,15 +197,17 @@ module Inertia
184
197
 
185
198
  if file?("package-lock.json")
186
199
  "npm"
187
- elsif file?("bun.config.js") || file?("bun.lockb")
200
+ elsif file?("bun.lockb")
188
201
  "bun"
202
+ elsif file?("pnpm-lock.yaml")
203
+ "pnpm"
189
204
  else
190
205
  "yarn"
191
206
  end
192
207
  end
193
208
 
194
209
  def vite_config_path
195
- @vite_config_path ||= Dir.glob(file_path("vite.config.{ts,js,mjs,cjs}")).first
210
+ @vite_config_path ||= Dir.glob(file_path("vite.config.{ts,js,mjs,cjs,mts,cts}")).first
196
211
  end
197
212
 
198
213
  def install_vite?
@@ -207,6 +222,10 @@ module Inertia
207
222
  @install_tailwind = options[:install_tailwind] || yes?("Would you like to install Tailwind CSS? (y/n)", :green)
208
223
  end
209
224
 
225
+ def verbose?
226
+ options[:verbose]
227
+ end
228
+
210
229
  def framework
211
230
  @framework ||= options[:framework] || ask("What framework do you want to use with Inertia?", :green, limited_to: FRAMEWORKS.keys, default: "react")
212
231
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module InertiaRailsContrib
4
- VERSION = "0.2.0"
4
+ VERSION = "0.2.1"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: inertia_rails-contrib
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Svyatoslav Kryukov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-08-10 00:00:00.000000000 Z
11
+ date: 2024-08-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: railties