squared 0.1.11 → 0.2.0
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 +65 -86
- data/README.md +1289 -240
- data/README.ruby.md +384 -0
- data/lib/squared/app.rb +0 -2
- data/lib/squared/common/base.rb +23 -20
- data/lib/squared/common/class.rb +18 -1
- data/lib/squared/common/format.rb +20 -22
- data/lib/squared/common/prompt.rb +1 -1
- data/lib/squared/common/shell.rb +22 -14
- data/lib/squared/common/system.rb +66 -39
- data/lib/squared/common/utils.rb +6 -6
- data/lib/squared/config.rb +130 -84
- data/lib/squared/version.rb +1 -1
- data/lib/squared/workspace/application.rb +174 -69
- data/lib/squared/workspace/project/base.rb +368 -185
- data/lib/squared/workspace/project/git.rb +728 -278
- data/lib/squared/workspace/project/node.rb +179 -119
- data/lib/squared/workspace/project/python.rb +190 -75
- data/lib/squared/workspace/project/ruby.rb +342 -178
- data/lib/squared/workspace/repo.rb +38 -47
- data/lib/squared/workspace/series.rb +16 -14
- data/squared.gemspec +3 -4
- metadata +4 -17
@@ -8,7 +8,7 @@ module Squared
|
|
8
8
|
def populate(*); end
|
9
9
|
|
10
10
|
def tasks
|
11
|
-
|
11
|
+
[:outdated].freeze
|
12
12
|
end
|
13
13
|
|
14
14
|
def batchargs
|
@@ -35,11 +35,12 @@ module Squared
|
|
35
35
|
end
|
36
36
|
|
37
37
|
@@tasks[ref] = {
|
38
|
-
install
|
39
|
-
outdated
|
40
|
-
bump
|
41
|
-
|
42
|
-
|
38
|
+
'install' => %i[force frozen dedupe].freeze,
|
39
|
+
'outdated' => %i[major minor patch].freeze,
|
40
|
+
'bump' => %i[version major minor patch].freeze,
|
41
|
+
'add' => nil,
|
42
|
+
'update' => nil,
|
43
|
+
'run' => nil
|
43
44
|
}.freeze
|
44
45
|
|
45
46
|
def initialize(*, **kwargs)
|
@@ -59,26 +60,45 @@ module Squared
|
|
59
60
|
Node.ref
|
60
61
|
end
|
61
62
|
|
62
|
-
def populate(
|
63
|
+
def populate(*, **)
|
63
64
|
super
|
64
65
|
return unless outdated? && ref?(Node.ref)
|
65
66
|
|
66
67
|
namespace name do
|
67
68
|
@@tasks[Node.ref].each do |action, flags|
|
69
|
+
next if @pass.include?(action)
|
70
|
+
|
68
71
|
if flags.nil?
|
69
72
|
case action
|
70
|
-
when
|
71
|
-
|
73
|
+
when 'add'
|
74
|
+
format_desc action, nil, 'save?=prod|dev|optional|peer,name+'
|
75
|
+
task action, [:save, :name] do |_, args|
|
76
|
+
save = param_guard(action, 'save', args: args, key: :save)
|
77
|
+
if save.start_with?('=')
|
78
|
+
exact = true
|
79
|
+
save = save[1..-1]
|
80
|
+
end
|
81
|
+
case save
|
82
|
+
when 'prod', 'dev', 'optional', 'peer'
|
83
|
+
name = param_guard(action, 'name', args: args.to_a.drop(1))
|
84
|
+
else
|
85
|
+
save = 'prod'
|
86
|
+
name = param_guard(action, 'name', args: args.to_a)
|
87
|
+
end
|
88
|
+
depend(:add, packages: name, save: save, exact: exact)
|
89
|
+
end
|
90
|
+
when 'run'
|
91
|
+
next if (list = read_scripts).empty?
|
92
|
+
|
93
|
+
format_desc action, nil, 'command+|^index|#,pattern*'
|
72
94
|
task action, [:command] do |_, args|
|
73
95
|
if args.command == '#'
|
74
|
-
format_list(
|
75
|
-
from: dependfile.to_s)
|
96
|
+
format_list(list, 'run[^N]', 'scripts', grep: args.extras, from: dependfile.to_s)
|
76
97
|
else
|
77
|
-
cmd =
|
98
|
+
cmd = param_guard(action, 'command', args: args.to_a)
|
78
99
|
cmd.each do |val|
|
79
100
|
if (data = indexitem(val))
|
80
101
|
n, opts = data
|
81
|
-
list = read_scripts
|
82
102
|
if (item = list[n - 1])
|
83
103
|
val = opts ? "#{item.first} #{opts}" : item.first
|
84
104
|
elsif exception
|
@@ -91,9 +111,9 @@ module Squared
|
|
91
111
|
end
|
92
112
|
end
|
93
113
|
end
|
94
|
-
when
|
95
|
-
|
96
|
-
task action
|
114
|
+
when 'update'
|
115
|
+
format_desc action, nil, 'packages*'
|
116
|
+
task action do |_, args|
|
97
117
|
update args.to_a
|
98
118
|
end
|
99
119
|
end
|
@@ -101,20 +121,28 @@ module Squared
|
|
101
121
|
namespace action do
|
102
122
|
flags.each do |flag|
|
103
123
|
case action
|
104
|
-
when
|
105
|
-
|
124
|
+
when 'install'
|
125
|
+
format_desc action, flag
|
106
126
|
task flag do
|
107
127
|
depend flag
|
108
128
|
end
|
109
|
-
when
|
110
|
-
|
111
|
-
task flag
|
129
|
+
when 'outdated'
|
130
|
+
format_desc(action, flag, %w[prune interactive dry-run].freeze, arg: 'opts?')
|
131
|
+
task flag do |_, args|
|
112
132
|
outdated(flag, opts: args.to_a)
|
113
133
|
end
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
134
|
+
when 'bump'
|
135
|
+
if flag == :version
|
136
|
+
format_desc action, flag, 'version'
|
137
|
+
task flag, [:version] do |_, args|
|
138
|
+
version = param_guard(action, flag, args: args, key: :version)
|
139
|
+
bump flag, version
|
140
|
+
end
|
141
|
+
else
|
142
|
+
format_desc action, flag
|
143
|
+
task flag do
|
144
|
+
bump flag
|
145
|
+
end
|
118
146
|
end
|
119
147
|
end
|
120
148
|
end
|
@@ -124,8 +152,8 @@ module Squared
|
|
124
152
|
end
|
125
153
|
end
|
126
154
|
|
127
|
-
def copy(from: 'build', into: 'node_modules', workspace: false, scope: nil,
|
128
|
-
also: nil, create: nil,
|
155
|
+
def copy(from: 'build', into: 'node_modules', workspace: false, include: nil, exclude: nil, scope: nil,
|
156
|
+
also: nil, create: nil, link: false, force: false, override: false)
|
129
157
|
return if @copy == false
|
130
158
|
|
131
159
|
if @copy && !override
|
@@ -134,21 +162,21 @@ module Squared
|
|
134
162
|
from = @copy[:from] if @copy.key?(:from)
|
135
163
|
into = @copy[:into] if @copy.key?(:into)
|
136
164
|
workspace = @copy[:workspace] if @copy.key?(:workspace)
|
165
|
+
link = @copy[:link] if @copy.key?(:link)
|
166
|
+
force = @copy[:force] if @copy.key?(:link)
|
137
167
|
glob = @copy[:include]
|
138
168
|
exclude = @copy[:exclude]
|
139
169
|
scope = @copy[:scope]
|
140
170
|
also = @copy[:also]
|
141
171
|
create = @copy[:create]
|
142
|
-
else
|
143
|
-
glob = kwargs[:include]
|
144
|
-
exclude = kwargs[:exclude]
|
145
172
|
end
|
146
173
|
items = []
|
147
174
|
items << @workspace.home if build? && path != @workspace.home && @workspace.home?
|
148
175
|
items += as_a(also) if also
|
149
176
|
return if items.empty?
|
150
177
|
|
151
|
-
|
178
|
+
on :first, :copy
|
179
|
+
print_item unless @output[0] || !verbose || task_invoked?(/^copy(?::#{Node.ref}|$)/)
|
152
180
|
items.each do |dir|
|
153
181
|
case dir
|
154
182
|
when Pathname
|
@@ -164,6 +192,8 @@ module Squared
|
|
164
192
|
from = dir[:from] if dir.key?(:from)
|
165
193
|
into = dir[:into] if dir.key?(:into)
|
166
194
|
scope = dir[:scope] if dir.key?(:scope)
|
195
|
+
link = dir[:link] if dir.key?(:link)
|
196
|
+
force = dir[:force] if dir.key?(:force)
|
167
197
|
dest = dir[:target]
|
168
198
|
create = dir[:create]
|
169
199
|
workspace = dir[:workspace]
|
@@ -187,10 +217,11 @@ module Squared
|
|
187
217
|
elsif (file = path.join('package.json')).exist?
|
188
218
|
begin
|
189
219
|
doc = JSON.parse(file.read)
|
190
|
-
doc['name']
|
191
220
|
rescue StandardError => e
|
192
221
|
log.error e
|
193
222
|
raise if exception
|
223
|
+
else
|
224
|
+
doc['name']
|
194
225
|
end
|
195
226
|
end
|
196
227
|
if sub
|
@@ -204,18 +235,29 @@ module Squared
|
|
204
235
|
end
|
205
236
|
target.each do |src, to|
|
206
237
|
glob.each { |val| log.info "cp #{from.join(val)} #{to}" }
|
207
|
-
|
238
|
+
begin
|
239
|
+
copy_dir(src, to, glob, create: create, link: link, force: force, pass: exclude, verbose: verbose)
|
240
|
+
rescue StandardError => e
|
241
|
+
log.error e
|
242
|
+
ret = on(:error, :copy, e)
|
243
|
+
raise if exception && ret != true
|
244
|
+
end
|
208
245
|
end
|
209
246
|
end
|
247
|
+
on :last, :copy
|
210
248
|
end
|
211
249
|
|
212
|
-
def depend(flag = nil, sync: invoked_sync?('depend', flag))
|
250
|
+
def depend(flag = nil, sync: invoked_sync?('depend', flag), packages: [], save: nil, exact: nil)
|
213
251
|
if @depend && !flag
|
214
252
|
super
|
215
253
|
elsif outdated?
|
216
254
|
if (yarn = dependtype(:yarn)) > 0
|
217
255
|
cmd = session 'yarn'
|
218
|
-
if
|
256
|
+
if flag == :add
|
257
|
+
cmd << 'add'
|
258
|
+
cmd << "--#{save}" unless save == 'prod'
|
259
|
+
cmd << '--exact' if exact
|
260
|
+
elsif yarn > 1
|
219
261
|
if flag == :dedupe
|
220
262
|
cmd << 'dedupe'
|
221
263
|
else
|
@@ -236,7 +278,12 @@ module Squared
|
|
236
278
|
end
|
237
279
|
elsif pnpm?
|
238
280
|
cmd = session 'pnpm'
|
239
|
-
|
281
|
+
case flag
|
282
|
+
when :add
|
283
|
+
cmd << 'add'
|
284
|
+
cmd << "--save-#{save}"
|
285
|
+
cmd << '--save-exact' if exact
|
286
|
+
when :dedupe
|
240
287
|
cmd << 'dedupe'
|
241
288
|
else
|
242
289
|
cmd << 'install' << if flag == :force
|
@@ -250,10 +297,15 @@ module Squared
|
|
250
297
|
split_escape(val).each { |opt| cmd << shell_option('public-hoist-pattern', opt, quote: true) }
|
251
298
|
end
|
252
299
|
cmd << '--ignore-workspace' if env('NODE_WORKSPACES', equals: '0')
|
253
|
-
append_nocolor
|
300
|
+
append_nocolor
|
254
301
|
else
|
255
302
|
cmd = session 'npm'
|
256
|
-
|
303
|
+
case flag
|
304
|
+
when :add
|
305
|
+
cmd << 'install'
|
306
|
+
cmd << "--save-#{save}"
|
307
|
+
cmd << '--save-exact' if exact
|
308
|
+
when :dedupe
|
257
309
|
cmd << 'dedupe'
|
258
310
|
else
|
259
311
|
cmd << 'install' << if flag == :force
|
@@ -262,34 +314,41 @@ module Squared
|
|
262
314
|
'--package-lock-only'
|
263
315
|
end
|
264
316
|
end
|
265
|
-
|
317
|
+
if flag == :add
|
318
|
+
cmd.merge(packages.map { |pkg| shell_escape(pkg) })
|
319
|
+
elsif flag && prod?
|
320
|
+
cmd << '--omit=dev'
|
321
|
+
end
|
266
322
|
cmd << '--workspaces=false' if env('NODE_WORKSPACES', equals: '0')
|
267
323
|
cmd << '--package-lock=false' if option('package-lock', equals: '0')
|
268
|
-
append_nocolor
|
324
|
+
append_nocolor
|
269
325
|
end
|
270
326
|
append_loglevel
|
271
|
-
run(sync: sync)
|
327
|
+
run(from: :depend, sync: sync)
|
272
328
|
end
|
273
329
|
end
|
274
330
|
|
275
|
-
def outdated(
|
331
|
+
def outdated(flag = nil, sync: invoked_sync?('outdated', flag), opts: [])
|
276
332
|
dryrun = opts.include?('dry-run')
|
277
|
-
if pnpm? && read_packagemanager(version: '7.15')
|
278
|
-
cmd = 'pnpm outdated'
|
333
|
+
if pnpm? && read_packagemanager(version: '7.15', update: true)
|
334
|
+
cmd = session 'pnpm', 'outdated'
|
279
335
|
dryrun ||= dryrun?('pnpm')
|
280
336
|
else
|
281
|
-
cmd = 'npm outdated'
|
337
|
+
cmd = session 'npm', 'outdated'
|
282
338
|
dryrun ||= dryrun?('npm')
|
283
339
|
end
|
284
|
-
log.info cmd
|
285
|
-
|
340
|
+
log.info cmd.to_s
|
341
|
+
on :first, :outdated unless dryrun
|
342
|
+
banner = format_banner(cmd.temp(dryrun ? ' --dry-run' : nil))
|
286
343
|
print_item banner if sync
|
287
344
|
begin
|
288
|
-
data = pwd_set { `#{cmd
|
289
|
-
|
345
|
+
data = pwd_set { `#{cmd.temp('--json', '--loglevel=error')}` }
|
346
|
+
doc = dependfile.read
|
347
|
+
json = JSON.parse(doc)
|
290
348
|
rescue StandardError => e
|
291
349
|
log.error e
|
292
|
-
|
350
|
+
ret = on(:error, :outdated, e)
|
351
|
+
raise if exception && ret != true
|
293
352
|
|
294
353
|
warn log_message(Logger::WARN, e) if warning?
|
295
354
|
return
|
@@ -300,7 +359,7 @@ module Squared
|
|
300
359
|
end
|
301
360
|
found = []
|
302
361
|
avail = []
|
303
|
-
rev
|
362
|
+
rev = flag || (prod? ? :patch : :minor)
|
304
363
|
inter = opts.include?('interactive')
|
305
364
|
unless data.empty?
|
306
365
|
JSON.parse(data).each_pair do |key, val|
|
@@ -341,7 +400,7 @@ module Squared
|
|
341
400
|
index = if a != c
|
342
401
|
1
|
343
402
|
elsif b != d
|
344
|
-
|
403
|
+
3
|
345
404
|
else
|
346
405
|
5
|
347
406
|
end
|
@@ -358,7 +417,7 @@ module Squared
|
|
358
417
|
ret = val.succ.to_s
|
359
418
|
ord.size > 9 ? ret.rjust(ord.size.to_s.size) : ret
|
360
419
|
end
|
361
|
-
footer = lambda do |val
|
420
|
+
footer = lambda do |val, size|
|
362
421
|
next unless verbose
|
363
422
|
|
364
423
|
msg, hint = if modified == -1
|
@@ -366,7 +425,8 @@ module Squared
|
|
366
425
|
else
|
367
426
|
['No packages were updated', 'possible']
|
368
427
|
end
|
369
|
-
|
428
|
+
possible = pending + val
|
429
|
+
puts print_footer(empty_status(msg, hint, possible == size ? 0 : possible))
|
370
430
|
end
|
371
431
|
print_item banner unless sync
|
372
432
|
if !found.empty?
|
@@ -374,8 +434,7 @@ module Squared
|
|
374
434
|
col2 = size_col.(found, 1) + 4
|
375
435
|
found.each_with_index do |item, i|
|
376
436
|
a, b, c, d, e = item
|
377
|
-
|
378
|
-
if f && !confirm_outdated(a, c, d, e)
|
437
|
+
if inter && (rev != :major || e || semmajor?(item[5], item[6])) && !confirm_outdated(a, c, d, e)
|
379
438
|
cur = -1
|
380
439
|
else
|
381
440
|
cur = modified
|
@@ -391,6 +450,8 @@ module Squared
|
|
391
450
|
end
|
392
451
|
end
|
393
452
|
a = a.ljust(col1)
|
453
|
+
b = b.ljust(col2)
|
454
|
+
b = sub_style(b, styles: theme[:current]) if theme[:current]
|
394
455
|
c = if cur == -1
|
395
456
|
'SKIP'
|
396
457
|
elsif modified == cur
|
@@ -401,14 +462,14 @@ module Squared
|
|
401
462
|
else
|
402
463
|
sub_style(c, pat: SEM_VER, styles: color(:green), index: d)
|
403
464
|
end
|
404
|
-
puts "#{pad_ord.(i, found)}. #{a
|
465
|
+
puts "#{pad_ord.(i, found)}. #{a + b + c}"
|
405
466
|
end
|
406
467
|
pending = avail.reduce(pending) { |a, b| a + (b[3] ? 0 : 1) }
|
407
468
|
if dryrun || (modified == 0 && pending > 0)
|
408
|
-
footer.(modified)
|
469
|
+
footer.(modified, found.size)
|
409
470
|
elsif modified > 0
|
410
471
|
modified = -1
|
411
|
-
footer.()
|
472
|
+
footer.(0, found.size)
|
412
473
|
File.write(dependfile, doc)
|
413
474
|
commit(:add, ['package.json'], pass: true)
|
414
475
|
install if opts.include?('prune')
|
@@ -429,54 +490,58 @@ module Squared
|
|
429
490
|
end
|
430
491
|
puts "#{pad_ord.(i, avail)}. #{a + c + b} (#{d ? 'locked' : 'latest'})"
|
431
492
|
end
|
432
|
-
footer.()
|
493
|
+
footer.(0, avail.size)
|
433
494
|
else
|
434
495
|
puts 'No updates were found'
|
435
496
|
end
|
497
|
+
on :last, :outdated unless dryrun
|
436
498
|
end
|
437
499
|
|
438
|
-
def bump(flag = nil)
|
439
|
-
return unless (
|
500
|
+
def bump(flag, val = nil)
|
501
|
+
return unless (cur = version)
|
440
502
|
|
441
|
-
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
|
446
|
-
|
447
|
-
|
448
|
-
|
449
|
-
|
450
|
-
|
451
|
-
|
452
|
-
|
503
|
+
if flag == :version
|
504
|
+
return unless val
|
505
|
+
else
|
506
|
+
seg = semscan(cur, fill: false)
|
507
|
+
case flag
|
508
|
+
when :major
|
509
|
+
if seg[0] != '0' || seg[2].nil?
|
510
|
+
seg[0] = seg[0].succ
|
511
|
+
else
|
512
|
+
seg[2] = seg[2].succ
|
513
|
+
end
|
514
|
+
when :minor
|
515
|
+
if seg[0] == '0'
|
516
|
+
seg[4] &&= seg[4].succ
|
517
|
+
else
|
518
|
+
seg[2] = seg[2].succ
|
519
|
+
end
|
520
|
+
when :patch
|
453
521
|
seg[4] &&= seg[4].succ
|
454
|
-
else
|
455
|
-
seg[2] = seg[2].succ
|
456
522
|
end
|
457
|
-
|
458
|
-
else
|
459
|
-
seg[4] &&= seg[4].succ
|
523
|
+
return if (val = seg.join) == cur
|
460
524
|
end
|
461
|
-
return if (out = seg.join) == ver
|
462
525
|
|
463
526
|
begin
|
464
527
|
doc = dependfile.read
|
465
|
-
if doc.sub!(/"version"\s*:\s*"#{
|
528
|
+
if doc.sub!(/"version"\s*:\s*"#{cur}"/, "\"version\": \"#{val}\"")
|
466
529
|
unless dryrun?
|
467
530
|
dependfile.write(doc)
|
468
|
-
log.info "bump version #{
|
531
|
+
log.info "bump version #{cur} to #{val} (#{flag})"
|
532
|
+
on :first, :bump
|
469
533
|
end
|
470
534
|
if verbose
|
471
535
|
major = flag == :major
|
472
|
-
emphasize("version: #{
|
536
|
+
emphasize("version: #{val}", title: name, border: borderstyle, sub: [
|
473
537
|
headerstyle,
|
474
538
|
{ pat: /\A(version:)( )(\S+)(.*)\z/, styles: color(major ? :green : :yellow), index: 3 },
|
475
539
|
{ pat: /\A(version:)(.*)\z/, styles: theme[major ? :major : :active] }
|
476
540
|
])
|
477
541
|
elsif stdin?
|
478
|
-
puts
|
542
|
+
puts val
|
479
543
|
end
|
544
|
+
on :last, :bump unless dryrun?
|
480
545
|
else
|
481
546
|
raise_error('not found', hint: 'version')
|
482
547
|
end
|
@@ -498,19 +563,19 @@ module Squared
|
|
498
563
|
elsif pnpm?
|
499
564
|
cmd = session 'pnpm', 'update'
|
500
565
|
cmd << '--prod' if prod?
|
501
|
-
append_nocolor
|
566
|
+
append_nocolor
|
502
567
|
else
|
503
568
|
cmd = session 'npm', 'update'
|
504
569
|
cmd << '--omit=dev' if prod?
|
505
|
-
append_nocolor
|
570
|
+
append_nocolor
|
506
571
|
end
|
507
572
|
append_loglevel
|
508
573
|
append_value pkgs
|
509
574
|
run
|
510
575
|
end
|
511
576
|
|
512
|
-
def compose(opts, flags = nil, script: false)
|
513
|
-
return unless opts && script
|
577
|
+
def compose(opts, flags = nil, script: false, from: :build)
|
578
|
+
return unless opts && script && from == :build
|
514
579
|
|
515
580
|
ret = session dependbin, 'run', flags
|
516
581
|
append_loglevel
|
@@ -520,7 +585,7 @@ module Squared
|
|
520
585
|
when String
|
521
586
|
ret << opts
|
522
587
|
else
|
523
|
-
raise_error("#{
|
588
|
+
raise_error("#{dependbin} script name", hint: opts.nil? ? 'missing' : 'invalid')
|
524
589
|
end
|
525
590
|
ret
|
526
591
|
end
|
@@ -537,10 +602,6 @@ module Squared
|
|
537
602
|
dependfile.exist?
|
538
603
|
end
|
539
604
|
|
540
|
-
def refresh?
|
541
|
-
!Node.prod?
|
542
|
-
end
|
543
|
-
|
544
605
|
def yarn?
|
545
606
|
(@pm[:yarn] ||= if basepath('yarn.lock', ascend: dependext).exist?
|
546
607
|
if (rc = basepath('.yarnrc.yml', ascend: dependext)).exist?
|
@@ -548,13 +609,14 @@ module Squared
|
|
548
609
|
require 'yaml'
|
549
610
|
doc = YAML.load_file(rc)
|
550
611
|
doc.nodeLinker == 'node-modules' ? 2 : 3
|
551
|
-
rescue StandardError
|
612
|
+
rescue StandardError => e
|
613
|
+
log.debug e
|
552
614
|
3
|
553
615
|
end
|
554
616
|
else
|
555
617
|
1
|
556
618
|
end
|
557
|
-
elsif (ver = read_packagemanager || read_install)
|
619
|
+
elsif (ver = read_packagemanager || read_install)&.start_with?('yarn')
|
558
620
|
ver == 'yarn' || ver.include?('@1') ? 1 : 3
|
559
621
|
else
|
560
622
|
0
|
@@ -575,7 +637,8 @@ module Squared
|
|
575
637
|
else
|
576
638
|
4
|
577
639
|
end
|
578
|
-
rescue StandardError
|
640
|
+
rescue StandardError => e
|
641
|
+
log.debug e
|
579
642
|
4
|
580
643
|
end
|
581
644
|
else
|
@@ -587,8 +650,7 @@ module Squared
|
|
587
650
|
if pnpm?
|
588
651
|
basepath('pnpm-workspace.yaml').exist?
|
589
652
|
else
|
590
|
-
read_packagemanager
|
591
|
-
@pm[:workspaces].is_a?(Array)
|
653
|
+
read_packagemanager(:workspaces).is_a?(Array)
|
592
654
|
end
|
593
655
|
end
|
594
656
|
|
@@ -608,34 +670,32 @@ module Squared
|
|
608
670
|
end
|
609
671
|
|
610
672
|
def version
|
611
|
-
read_packagemanager
|
612
|
-
@pm[:version]
|
673
|
+
super || (@version = read_packagemanager(:version))
|
613
674
|
end
|
614
675
|
|
615
676
|
def packagename
|
616
|
-
read_packagemanager
|
617
|
-
@pm[:name]
|
677
|
+
read_packagemanager :name
|
618
678
|
end
|
619
679
|
|
620
680
|
private
|
621
681
|
|
622
|
-
def read_packagemanager(version: nil)
|
623
|
-
if @pm[:_].nil?
|
682
|
+
def read_packagemanager(key = nil, version: nil, update: false)
|
683
|
+
if @pm[:_].nil? || update
|
624
684
|
doc = JSON.parse(dependfile.read)
|
625
|
-
@pm[:_] = (val = doc['packageManager']) ? val[0
|
685
|
+
@pm[:_] = (val = doc['packageManager']) ? val[0..(val.index('+') || 0) - 1] : false
|
626
686
|
@pm[:name] = doc['name']
|
627
687
|
@pm[:scripts] = doc['scripts']
|
628
688
|
@pm[:version] = doc['version']
|
629
689
|
@pm[:workspaces] = doc['workspaces']
|
630
690
|
end
|
631
691
|
rescue StandardError => e
|
632
|
-
log.debug e
|
692
|
+
log.debug e
|
633
693
|
@pm[:_] = false
|
634
694
|
nil
|
635
695
|
else
|
636
|
-
|
637
|
-
|
638
|
-
|
696
|
+
return @pm[key] if key
|
697
|
+
|
698
|
+
!(ret = @pm[:_]) || (version && ret[ret.index('@') + 1..-1] < version) ? nil : ret
|
639
699
|
end
|
640
700
|
|
641
701
|
def read_install
|
@@ -646,11 +706,11 @@ module Squared
|
|
646
706
|
end
|
647
707
|
|
648
708
|
def read_scripts
|
649
|
-
read_packagemanager
|
650
|
-
|
709
|
+
ret = read_packagemanager(:scripts)
|
710
|
+
ret.is_a?(Hash) ? ret.to_a : []
|
651
711
|
end
|
652
712
|
|
653
|
-
def append_loglevel
|
713
|
+
def append_loglevel(target: @session)
|
654
714
|
level = env('NODE_LOGLEVEL')
|
655
715
|
silent = !verbose || level == 'silent'
|
656
716
|
return unless silent || level
|
@@ -658,26 +718,26 @@ module Squared
|
|
658
718
|
if yarn?
|
659
719
|
if dependtype(:yarn) == 1
|
660
720
|
if silent
|
661
|
-
|
721
|
+
target << '--silent'
|
662
722
|
elsif level == 'verbose'
|
663
|
-
|
723
|
+
target << '--verbose'
|
664
724
|
end
|
665
725
|
end
|
666
726
|
elsif pnpm?
|
667
727
|
if silent
|
668
|
-
|
728
|
+
target << '--reporter=silent'
|
669
729
|
level ||= 'error'
|
670
730
|
end
|
671
731
|
case level
|
672
732
|
when 'debug', 'info', 'warn', 'error'
|
673
|
-
|
733
|
+
target << basic_option('loglevel', level)
|
674
734
|
end
|
675
735
|
elsif silent
|
676
|
-
|
736
|
+
target << '--loglevel=silent'
|
677
737
|
else
|
678
738
|
case level
|
679
739
|
when 'error', 'warn', 'notice', 'http', 'info', 'verbose', 'silly'
|
680
|
-
|
740
|
+
target << basic_option('loglevel', level)
|
681
741
|
end
|
682
742
|
end
|
683
743
|
end
|
@@ -698,7 +758,7 @@ module Squared
|
|
698
758
|
end
|
699
759
|
|
700
760
|
def dryrun?(prefix = dependbin)
|
701
|
-
!option('dry-run', prefix: prefix).nil?
|
761
|
+
super || !option('dry-run', prefix: prefix).nil?
|
702
762
|
end
|
703
763
|
|
704
764
|
def dependbin
|