svelte-on-rails 17.2.0 → 17.2.2
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:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 70e08415bf5e97d6c2e699732dfbf7eed1786ea048bcd1d1dfc270c9efb0ca66
|
|
4
|
+
data.tar.gz: 046e91b485de6bdef1f8b40c15d4d3aea40f4f4ba31f6766e73b9da91b71fd39
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 64a9ec0fe3b58cc8e428f442e43a215c878e2b02202e0d76ee163c3c90a8022bc618a0866a692b66c9574911ec3c2e6a13c53767e0a84311bc3b0a3a02a68fca
|
|
7
|
+
data.tar.gz: 1b9201b4eb287cf2b3f7f22204b61b1d50584912854a80da0a869a7681b698644d684b90f1a1fec71330c843b13858491b5b924c62dbb0ad893c6e1cd14b78ef
|
|
@@ -5,7 +5,7 @@ module SvelteOnRails
|
|
|
5
5
|
class InstallGenerator < Rails::Generators::Base
|
|
6
6
|
|
|
7
7
|
class_option :force, type: :boolean, default: false, desc: "Do not ask for overwriting files"
|
|
8
|
-
|
|
8
|
+
class_option :package_set, type: :string, default: '', desc: "Force installation of specific package"
|
|
9
9
|
|
|
10
10
|
require 'svelte_on_rails/installer/utils'
|
|
11
11
|
require 'svelte_on_rails/installer/haml'
|
|
@@ -23,15 +23,16 @@ module SvelteOnRails
|
|
|
23
23
|
@sandboxes_dir = Rails.root.join('tmp', 'svelte-on-rails-installer-sandbox-tests')
|
|
24
24
|
FileUtils.rm_rf(@sandboxes_dir) if @sandboxes_dir.exist?
|
|
25
25
|
|
|
26
|
-
|
|
26
|
+
nvi = [
|
|
27
|
+
'config/svelte_on_rails.yml',
|
|
28
|
+
'config/vite.json',
|
|
29
|
+
'vite.config.ts',
|
|
30
|
+
'vite-ssr.config.ts',
|
|
31
|
+
].find { |f| Rails.root.join(f).exist? }
|
|
32
|
+
if nvi
|
|
33
|
+
@non_virgin_indicator = "#{nvi} found"
|
|
34
|
+
elsif @gem_utils.vite_rails_in_gemfile?
|
|
27
35
|
@non_virgin_indicator = 'vite_rails found in Gemfile'
|
|
28
|
-
else
|
|
29
|
-
nvi = [
|
|
30
|
-
'config/vite.json',
|
|
31
|
-
'vite.config.ts',
|
|
32
|
-
'vite-ssr.config.ts',
|
|
33
|
-
].find { |f| Rails.root.join(f).exist? }
|
|
34
|
-
@non_virgin_indicator = "#{nvi} found" if nvi
|
|
35
36
|
end
|
|
36
37
|
|
|
37
38
|
@installation_type = if options[:force]
|
|
@@ -43,7 +44,7 @@ module SvelteOnRails
|
|
|
43
44
|
end
|
|
44
45
|
end
|
|
45
46
|
|
|
46
|
-
def
|
|
47
|
+
def print_header
|
|
47
48
|
puts
|
|
48
49
|
puts '=' * 80
|
|
49
50
|
puts ' ▶︎▶︎▶︎ INSTALLING SVELTE-ON-RAILS'
|
|
@@ -54,6 +55,9 @@ module SvelteOnRails
|
|
|
54
55
|
elsif @installation_type == :careful
|
|
55
56
|
puts " • Careful installation (#{@non_virgin_indicator})"
|
|
56
57
|
end
|
|
58
|
+
if @package_set
|
|
59
|
+
puts " • Package set: #{@package_set}"
|
|
60
|
+
end
|
|
57
61
|
puts '=' * 80
|
|
58
62
|
end
|
|
59
63
|
|
|
@@ -89,60 +93,78 @@ module SvelteOnRails
|
|
|
89
93
|
vite = @npm_utils.inspect_package('vite')
|
|
90
94
|
vite_plugin_svelte = @npm_utils.inspect_package('@sveltejs/vite-plugin-svelte')
|
|
91
95
|
|
|
92
|
-
if svelte && vite && vite_plugin_svelte
|
|
93
|
-
|
|
94
|
-
|
|
96
|
+
if svelte && vite && vite_plugin_svelte && !@installation_type == :force
|
|
97
|
+
if @package_set
|
|
98
|
+
say "Packages are already installed but force to #{@package_set}", :yellow
|
|
99
|
+
else
|
|
100
|
+
say "✓ required npm packages are already installed", :green
|
|
101
|
+
return
|
|
102
|
+
end
|
|
95
103
|
end
|
|
96
104
|
|
|
97
|
-
always_required_packages = [
|
|
98
|
-
'@csedl/svelte-on-rails@latest',
|
|
99
|
-
'typescript@latest',
|
|
100
|
-
'@types/node@latest'
|
|
101
|
-
]
|
|
102
|
-
|
|
103
105
|
candidate_sets = [
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
'
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
106
|
+
{
|
|
107
|
+
key: :minimal,
|
|
108
|
+
title: 'Install missing packages only',
|
|
109
|
+
set: [
|
|
110
|
+
('svelte@latest' unless svelte),
|
|
111
|
+
('vite@latest' unless vite),
|
|
112
|
+
('@sveltejs/vite-plugin-svelte@latest' unless vite_plugin_svelte),
|
|
113
|
+
'@csedl/svelte-on-rails@latest',
|
|
114
|
+
'typescript@latest',
|
|
115
|
+
'@types/node@latest'
|
|
116
|
+
].compact
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
key: :latest,
|
|
120
|
+
title: 'Force latest package versions',
|
|
121
|
+
set: [
|
|
122
|
+
'svelte@latest',
|
|
123
|
+
'vite@latest',
|
|
124
|
+
'@sveltejs/vite-plugin-svelte@latest',
|
|
125
|
+
'@csedl/svelte-on-rails@latest',
|
|
126
|
+
'typescript@latest',
|
|
127
|
+
'@types/node@latest'
|
|
128
|
+
]
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
key: :pinned,
|
|
132
|
+
title: 'Use pinned compatible versions',
|
|
133
|
+
set: [
|
|
134
|
+
'svelte@~5.55.4',
|
|
135
|
+
'vite@~8.0.8',
|
|
136
|
+
'@sveltejs/vite-plugin-svelte@~7.0.0',
|
|
137
|
+
'@csedl/svelte-on-rails@latest',
|
|
138
|
+
'typescript@~6.0.2',
|
|
139
|
+
'@types/node@~25.6.0'
|
|
140
|
+
]
|
|
141
|
+
}
|
|
122
142
|
]
|
|
123
143
|
|
|
124
144
|
# test install
|
|
125
145
|
|
|
126
146
|
failed_packages = []
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
147
|
+
puts "[Sandbox test] Running dependency checks in a isolated Sandbox within App-root/tmp"
|
|
148
|
+
set_keys = candidate_sets.map { |s| s[:key] }
|
|
149
|
+
if @package_set && !set_keys.include?(@package_set)
|
|
150
|
+
raise Thor::Error, "Invalid value for --package-set option: #{@package_set}, valid options are: #{set_keys.join(', ')}"
|
|
151
|
+
end
|
|
152
|
+
index = 0
|
|
153
|
+
passing_set = candidate_sets.find do |set_to_try|
|
|
154
|
+
title_suffix = (index == 0) ? ' (default)' : " (FALLBACK)"
|
|
155
|
+
index += 1
|
|
156
|
+
next if @package_set && set_to_try[:key] != @package_set
|
|
135
157
|
r = SvelteOnRails::Installer::NpmSandbox.dry_run(
|
|
136
|
-
|
|
158
|
+
set_to_try[:set],
|
|
137
159
|
project_root: Rails.root.to_s,
|
|
138
160
|
sandboxes_root: @sandboxes_dir,
|
|
139
|
-
title:
|
|
161
|
+
title: set_to_try[:title] + title_suffix
|
|
140
162
|
)
|
|
141
163
|
@tmpdirs.push(r[:tmpdir])
|
|
142
|
-
if r[:success]
|
|
164
|
+
if r[:success] || @package_set && set_to_try[:key] == @package_set
|
|
143
165
|
true
|
|
144
166
|
else
|
|
145
|
-
failed_packages.push(
|
|
167
|
+
failed_packages.push(set_to_try)
|
|
146
168
|
false
|
|
147
169
|
end
|
|
148
170
|
end
|
|
@@ -154,7 +176,7 @@ module SvelteOnRails
|
|
|
154
176
|
say "ERROR: Unable to fix dependency issues", :red
|
|
155
177
|
say "Tried to test-installation within a TempDir, outside the project.", :red
|
|
156
178
|
say "Theese attemtpts failed to install required packages:", :red
|
|
157
|
-
say " • #{failed_packages.map { |p| p.join(' + ') }.join("\n • ")}", :red
|
|
179
|
+
say " • #{failed_packages[:set].map { |p| p.join(' + ') }.join("\n • ")}", :red
|
|
158
180
|
say "Installer cannot continue.", :red
|
|
159
181
|
say "You must install theese packages and resolve dependency issues manually.", :red
|
|
160
182
|
say "After resolved it, you can run this command again.", :red
|
|
@@ -166,16 +188,20 @@ module SvelteOnRails
|
|
|
166
188
|
|
|
167
189
|
if passing_set.any?
|
|
168
190
|
say "Ready to install:", :yellow unless svelte
|
|
169
|
-
say " • " + passing_set.join("\n • "), :yellow if passing_set.any?
|
|
191
|
+
say " • " + passing_set[:set].join("\n • "), :yellow if passing_set.any?
|
|
170
192
|
loop do
|
|
171
|
-
break if @installation_type == :
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
193
|
+
break if @installation_type == :force
|
|
194
|
+
if !svelte || @package_set
|
|
195
|
+
say "Continue? (Y/n)", :yellow
|
|
196
|
+
input = STDIN.gets
|
|
197
|
+
answer = input.strip.downcase
|
|
198
|
+
if answer == "n" || answer == "no"
|
|
199
|
+
say "Installation aborted.", :red
|
|
200
|
+
exit(0)
|
|
201
|
+
elsif answer == "y" || answer == "yes"
|
|
202
|
+
break
|
|
203
|
+
end
|
|
204
|
+
else
|
|
179
205
|
break
|
|
180
206
|
end
|
|
181
207
|
end
|
|
@@ -183,7 +209,7 @@ module SvelteOnRails
|
|
|
183
209
|
|
|
184
210
|
# install packages
|
|
185
211
|
|
|
186
|
-
passing_set.each do |package|
|
|
212
|
+
passing_set[:set].each do |package|
|
|
187
213
|
|
|
188
214
|
stdout, stderr, status = Open3.capture3("npm install #{package}", chdir: Rails.root)
|
|
189
215
|
|
|
@@ -197,11 +223,11 @@ module SvelteOnRails
|
|
|
197
223
|
say "#{package} ✓", :green
|
|
198
224
|
else
|
|
199
225
|
puts "#{package} ✗"
|
|
200
|
-
puts '-'*80
|
|
226
|
+
puts '-' * 80
|
|
201
227
|
puts stdout
|
|
202
|
-
puts '-'*80
|
|
228
|
+
puts '-' * 80
|
|
203
229
|
warn stderr unless stderr.to_s.strip.empty?
|
|
204
|
-
puts '-'*80
|
|
230
|
+
puts '-' * 80
|
|
205
231
|
end
|
|
206
232
|
end
|
|
207
233
|
|
|
@@ -230,7 +256,7 @@ module SvelteOnRails
|
|
|
230
256
|
def initial_questions
|
|
231
257
|
|
|
232
258
|
@vite_source_code_dir = SvelteOnRails::Lib::Utils.vite_source_code_dir
|
|
233
|
-
if @vite_source_code_dir != 'app/frontend'
|
|
259
|
+
if @vite_source_code_dir != 'app/frontend' && @installation_type == :careful
|
|
234
260
|
say "WARNING: The Vite source code directory is «#{@vite_source_code_dir}», instead of the usual «app/frontend», in config/vite.json.", :yellow
|
|
235
261
|
q = " Do you want to continue with «#{@vite_source_code_dir}»?"
|
|
236
262
|
exit(0) unless @utils.ask_yn(q)
|
|
@@ -291,15 +317,24 @@ module SvelteOnRails
|
|
|
291
317
|
# end
|
|
292
318
|
|
|
293
319
|
def validate_raw_options!(args)
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
320
|
+
args.each do |arg|
|
|
321
|
+
if arg.present? && arg.is_a?(Array)
|
|
322
|
+
arg.each do |opt|
|
|
323
|
+
|
|
324
|
+
if opt.start_with?('--package-set=')
|
|
325
|
+
val = opt.split('=')[1]
|
|
326
|
+
if val.present? && val.is_a?(String)
|
|
327
|
+
@package_set = val.to_sym
|
|
328
|
+
else
|
|
329
|
+
raise Thor::Error, "Invalid value for --package-set option: #{val}"
|
|
330
|
+
end
|
|
331
|
+
|
|
332
|
+
elsif ['--force'].include?(opt)
|
|
333
|
+
else
|
|
334
|
+
raise Thor::Error, "Unknown option: #{opt}, valid options are: --force, --package-set=*"
|
|
335
|
+
end
|
|
336
|
+
end
|
|
337
|
+
end
|
|
303
338
|
end
|
|
304
339
|
|
|
305
340
|
end
|
|
@@ -37,7 +37,7 @@ module SvelteOnRails
|
|
|
37
37
|
@tmpdir.mkpath
|
|
38
38
|
@utils = Utils
|
|
39
39
|
|
|
40
|
-
puts "[Sandbox test] #{title}: #{@tmpdir} (#{packages.length} packages)"
|
|
40
|
+
puts "[Sandbox test] #{title}: #{@tmpdir.to_s[(Rails.root.to_s.length+1)..-1]} (#{packages.length} packages)"
|
|
41
41
|
copy_package_files
|
|
42
42
|
end
|
|
43
43
|
|
|
@@ -97,7 +97,7 @@ module SvelteOnRails
|
|
|
97
97
|
end
|
|
98
98
|
|
|
99
99
|
def test_package(pkg)
|
|
100
|
-
cmd = ["npm", "install",
|
|
100
|
+
cmd = ["npm", "install", pkg]
|
|
101
101
|
stdout, stderr, status = Open3.capture3(*cmd, chdir: @tmpdir)
|
|
102
102
|
|
|
103
103
|
[status.success?, (stderr.to_s.strip.empty? ? stdout.to_s : stderr.to_s).strip]
|
|
@@ -110,11 +110,6 @@ module SvelteOnRails
|
|
|
110
110
|
|
|
111
111
|
@utils.edit_vite_config_ts(File.join(@tmpdir, "vite.config.ts"))
|
|
112
112
|
|
|
113
|
-
@packages.each do |pkg|
|
|
114
|
-
cmd = ["npm", "install", pkg]
|
|
115
|
-
stdout, stderr, status = Open3.capture3(*cmd, chdir: @tmpdir)
|
|
116
|
-
end
|
|
117
|
-
|
|
118
113
|
config_dir = File.join(@tmpdir, "config")
|
|
119
114
|
FileUtils.mkdir_p(config_dir)
|
|
120
115
|
File.write(
|
|
@@ -147,7 +142,6 @@ module SvelteOnRails
|
|
|
147
142
|
JS
|
|
148
143
|
)
|
|
149
144
|
|
|
150
|
-
Open3.capture3("npm", "install", "--ignore-scripts", "--no-audit", "--no-fund", chdir: @tmpdir)
|
|
151
145
|
_stdout, stderr, status = Open3.capture3("npx", "vite", "build", chdir: @tmpdir)
|
|
152
146
|
|
|
153
147
|
status.success? ? { success: true } : { success: false, error: stderr.to_s.strip }
|