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.
@@ -8,7 +8,7 @@ module Squared
8
8
  def populate(*); end
9
9
 
10
10
  def tasks
11
- %i[outdated].freeze
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: %i[force frozen dedupe].freeze,
39
- outdated: %i[major minor patch].freeze,
40
- bump: %i[major minor patch].freeze,
41
- update: nil,
42
- run: nil
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 :run
71
- desc format_desc(action, nil, "command+|#{indexchar}index|#,pattern*")
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(read_scripts, "run[#{indexchar}N]", 'scripts', grep: args.extras,
75
- from: dependfile.to_s)
96
+ format_list(list, 'run[^N]', 'scripts', grep: args.extras, from: dependfile.to_s)
76
97
  else
77
- cmd = guard_params(action, 'command', args: args.to_a)
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 :update
95
- desc format_desc(action, nil, 'packages*')
96
- task action, [:packages] do |_, args|
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 :install
105
- desc format_desc(action, flag)
124
+ when 'install'
125
+ format_desc action, flag
106
126
  task flag do
107
127
  depend flag
108
128
  end
109
- when :outdated
110
- desc format_desc(action, flag, %w[prune interactive dry-run].freeze, arg: 'opts?')
111
- task flag, [:opts] do |_, args|
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
- else
115
- desc format_desc(action, flag)
116
- task flag do
117
- __send__(action, flag)
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, override: false, **kwargs)
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
- print_item unless @output[0] || !verbose || task_invoked?(/\Acopy(?::#{Node.ref}|$)/)
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
- copy_d(src, to, glob: glob, create: create, pass: exclude, verbose: verbose)
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 yarn > 1
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
- if flag == :dedupe
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 option('no-color')
300
+ append_nocolor
254
301
  else
255
302
  cmd = session 'npm'
256
- if flag == :dedupe
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
- cmd << '--omit=dev' if flag && prod?
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 option('no-color')
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(rev = nil, opts: [], sync: invoked_sync?('outdated', rev))
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
- banner = format_banner("#{cmd}#{dryrun ? ' --dry-run' : ''}")
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} --json --loglevel=error` }
289
- json = JSON.parse(doc = dependfile.read)
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
- raise if exception
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 ||= (prod? ? :patch : :minor)
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
- a == '0' ? 1 : 3
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 = 0|
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
- puts print_footer(empty_status(msg, hint, pending + val))
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
- f = inter && (rev != :major || e || semmajor?(item[5], item[6]))
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}#{b.ljust(col2)}#{c}"
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 (ver = version)
500
+ def bump(flag, val = nil)
501
+ return unless (cur = version)
440
502
 
441
- seg = semscan(ver, fill: false)
442
- case flag
443
- when :major
444
- if seg[0] != '0' || seg[2].nil?
445
- seg[0] = seg[0].succ
446
- seg[2] = '0'
447
- else
448
- seg[2] = seg[2].succ
449
- end
450
- seg[4] = '0'
451
- when :minor
452
- if seg[0] == '0'
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
- seg[4] = '0'
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*"#{ver}"/, "\"version\": \"#{out}\"")
528
+ if doc.sub!(/"version"\s*:\s*"#{cur}"/, "\"version\": \"#{val}\"")
466
529
  unless dryrun?
467
530
  dependfile.write(doc)
468
- log.info "bump version #{ver} to #{out} (#{flag})"
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: #{out}", title: name, border: borderstyle, sub: [
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 out
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 option('no-color')
566
+ append_nocolor
502
567
  else
503
568
  cmd = session 'npm', 'update'
504
569
  cmd << '--omit=dev' if prod?
505
- append_nocolor option('no-color')
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("#{ret.first} script name", hint: opts.nil? ? 'missing' : 'invalid')
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) && ver.start_with?('yarn')
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, val.index('+') || val.size] : false
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 if dependfile.exist?
692
+ log.debug e
633
693
  @pm[:_] = false
634
694
  nil
635
695
  else
636
- if (ret = @pm[:_]) && !(version && semcmp(ret[(ret.index('@') + 1)..-1], version) == 1)
637
- ret
638
- end
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
- @pm[:scripts].is_a?(Hash) ? @pm[:scripts].to_a : []
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
- @session << '--silent'
721
+ target << '--silent'
662
722
  elsif level == 'verbose'
663
- @session << '--verbose'
723
+ target << '--verbose'
664
724
  end
665
725
  end
666
726
  elsif pnpm?
667
727
  if silent
668
- @session << shell_option('reporter', 'silent', escape: false)
728
+ target << '--reporter=silent'
669
729
  level ||= 'error'
670
730
  end
671
731
  case level
672
732
  when 'debug', 'info', 'warn', 'error'
673
- @session << shell_option('loglevel', level, escape: false)
733
+ target << basic_option('loglevel', level)
674
734
  end
675
735
  elsif silent
676
- @session << shell_option('loglevel', 'silent', escape: false)
736
+ target << '--loglevel=silent'
677
737
  else
678
738
  case level
679
739
  when 'error', 'warn', 'notice', 'http', 'info', 'verbose', 'silly'
680
- @session << shell_option('loglevel', level, escape: false)
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