squared 0.0.11 → 0.0.12

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.
@@ -14,8 +14,9 @@ module Squared
14
14
  def populate(ws, **)
15
15
  return if ws.series[:pull].empty?
16
16
 
17
+ name = ws.task_name('all')
17
18
  desc ws.task_name('all[git?=rebase|stash]', desc: true)
18
- task ws.task_name('all'), [:git] do |_, args|
19
+ task name, [:git] do |_, args|
19
20
  sync = lambda do |key|
20
21
  key = ws.task_name(key)
21
22
  ws.task_defined?(ret = ws.task_join(key, 'sync')) ? ret : key
@@ -30,8 +31,10 @@ module Squared
30
31
  sync.('pull')
31
32
  end]
32
33
  cmd << ws.task_name('build')
33
- Common::Task.invoke(cmd, **ws.invokeargs)
34
+ Common::Utils.task_invoke(*cmd, **ws.invokeargs)
34
35
  end
36
+ ws.series.sync << name
37
+ ws.series.multiple << name
35
38
  end
36
39
 
37
40
  def tasks
@@ -65,7 +68,7 @@ module Squared
65
68
 
66
69
  def initialize(*, **)
67
70
  super
68
- initialize_ref(Git.ref) if git_path.exist?
71
+ initialize_ref(Git.ref) if gitpath.exist?
69
72
  end
70
73
 
71
74
  def ref
@@ -95,8 +98,7 @@ module Squared
95
98
  else
96
99
  desc format_desc(action, flag, 'pathspec+')
97
100
  task flag, [:pathspec] do |_, args|
98
- files = args.to_a
99
- guard_params(action, flag, args: files)
101
+ files = guard_params(action, flag, args: args.to_a)
100
102
  __send__(action, flag, files)
101
103
  end
102
104
  end
@@ -138,15 +140,15 @@ module Squared
138
140
  when :branch
139
141
  desc format_desc(action, flag, 'name,pathspec*')
140
142
  task flag, [:name, :pathspec] do |_, args|
141
- guard_params(action, flag, args: args, key: :name)
142
- diff(flag, args.to_a[1..-1], branch: args.name)
143
+ branch = guard_params(action, flag, args: args, key: :name)
144
+ diff(flag, args.to_a[1..-1] || [], branch: branch)
143
145
  end
144
146
  when :files
145
147
  desc format_desc(action, flag, 'path1,path2')
146
148
  task flag, [:path1, :path2] do |_, args|
147
- guard_params(action, flag, args: args, key: :path1)
148
- guard_params(action, flag, args: args, key: :path2)
149
- diff(flag, [args.path1, args.path2])
149
+ path1 = guard_params(action, flag, args: args, key: :path1)
150
+ path2 = guard_params(action, flag, args: args, key: :path2)
151
+ diff(flag, [path1, path2])
150
152
  end
151
153
  end
152
154
  when :checkout
@@ -154,7 +156,7 @@ module Squared
154
156
  when :branch
155
157
  desc format_desc(action, flag, 'name,create?=b|B,commit?,detach?=d')
156
158
  task flag, [:name, :create, :commit, :detach] do |_, args|
157
- guard_params(action, flag, args: args, key: :name)
159
+ branch = guard_params(action, flag, args: args, key: :name)
158
160
  create = args.create
159
161
  if args.commit == 'd'
160
162
  detach = 'd'
@@ -172,7 +174,7 @@ module Squared
172
174
  commit = args.commit
173
175
  end
174
176
  guard_params(action, flag, args: { create: create }, key: :create, pat: /^b$/i) if create
175
- checkout(flag, branch: args.name, create: create, commit: commit, detach: detach)
177
+ checkout(flag, branch: branch, create: create, commit: commit, detach: detach)
176
178
  end
177
179
  when :detach
178
180
  desc format_desc(action, flag, 'branch/commit?')
@@ -187,10 +189,9 @@ module Squared
187
189
  end
188
190
  when :reset
189
191
  if flag == :head
190
- desc format_desc(action, flag, 'ref?=HEAD,pathspec+')
192
+ desc format_desc(action, flag, 'ref,pathspec+')
191
193
  task flag, [:ref, :pathspec] do |_, args|
192
- files = args.to_a[1..-1]
193
- guard_params(action, flag, args: files)
194
+ files = guard_params(action, flag, args: args.to_a[1..-1] || [])
194
195
  reset(flag, files, ref: args.ref)
195
196
  end
196
197
  else
@@ -234,7 +235,7 @@ module Squared
234
235
  end
235
236
 
236
237
  def stash(flag = nil, files = [], commit: nil)
237
- cmd = git_session 'stash', (flag || 'push').to_s
238
+ cmd = git_session 'stash', flag || 'push'
238
239
  case flag
239
240
  when :apply, :pop
240
241
  cmd << '--index' if option('index')
@@ -267,15 +268,15 @@ module Squared
267
268
  print_item banner
268
269
  banner = nil
269
270
  end
270
- sub = if verbose
271
- [
272
- { pat: /^(.)([A-Z])(.+)$/, styles: :red, index: 2 },
273
- { pat: /^([A-Z])(.+)$/, styles: :green },
274
- { pat: /^(\?\?)(.+)$/, styles: :red },
275
- { pat: /^(## )(.+)(\.{3})(.+)$/, styles: [nil, :green, nil, :red], index: -1 }
276
- ]
277
- end
278
- ret = write_lines(out, banner: banner, sub: sub)
271
+ ret = write_lines(out, banner: banner, sub: if verbose
272
+ [
273
+ { pat: /^(.)([A-Z])(.+)$/, styles: :red, index: 2 },
274
+ { pat: /^([A-Z])(.+)$/, styles: :green },
275
+ { pat: /^(\?\?)(.+)$/, styles: :red },
276
+ { pat: /^(## )(.+)(\.{3})(.+)$/,
277
+ styles: [nil, :green, nil, :red], index: -1 }
278
+ ]
279
+ end)
279
280
  list_result(ret, 'files', action: 'modified')
280
281
  end
281
282
 
@@ -380,7 +381,7 @@ module Squared
380
381
  end
381
382
  end
382
383
  cmd << sha
383
- append_pathspec(files, pass: flag == :files)
384
+ append_pathspec(files, parent: flag == :files)
384
385
  source(exception: cmd.include?('--exit-code'))
385
386
  end
386
387
 
@@ -395,8 +396,7 @@ module Squared
395
396
  pathspec = if flag == :all || (amend && files.size == 1 && files.first == '*')
396
397
  '--all'
397
398
  else
398
- files = source_path(as_a(files))
399
- raise_error('commit', 'pathspec', hint: 'missing') if files.empty?
399
+ raise_error('commit', 'pathspec', hint: 'missing') if (files = projectmap(files)).empty?
400
400
  "-- #{files.join(' ')}"
401
401
  end
402
402
  unless push?
@@ -446,12 +446,11 @@ module Squared
446
446
 
447
447
  private
448
448
 
449
- def source(cmd = @session, exception: true, io: false, sync: true, stdout: false, stderr: false,
450
- banner: ARG[:BANNER])
449
+ def source(cmd = @session, exception: true, io: false, sync: true, stdout: false, stderr: false, banner: true)
451
450
  cmd = session_done(cmd)
452
451
  log.info cmd
453
- banner = format_banner(cmd.gsub(File.join(path, ''), ''), banner: banner, multiple: true)
454
- cmd = cmd.sub(/^git\b/, "git --work-tree #{shell_quote(path)} --git-dir #{shell_quote(git_path)}")
452
+ banner = format_banner(cmd.gsub(File.join(path, ''), ''), banner: banner)
453
+ cmd = cmd.sub(/^git\b/, "git --work-tree #{shell_quote(path)} --git-dir #{shell_quote(gitpath)}")
455
454
  begin
456
455
  if io
457
456
  [IO.popen(cmd), banner]
@@ -526,11 +525,6 @@ module Squared
526
525
  end
527
526
  end
528
527
 
529
- def source_path(files, pass: false)
530
- files = files.select { |val| source_path?(val) } unless pass
531
- files.map { |val| val == '.' ? '.' : shell_quote(base_path(val.strip)) }
532
- end
533
-
534
528
  def append_pull(opts, list, flag = nil)
535
529
  append_submodules flag
536
530
  opts.each do |opt|
@@ -544,18 +538,18 @@ module Squared
544
538
 
545
539
  def append_commit(val)
546
540
  val = val.to_s.strip
547
- val.empty? ? 'HEAD' : val
541
+ @session << (val.empty? ? 'HEAD' : val)
548
542
  end
549
543
 
550
- def append_pathspec(files = [], expect: false, pass: false)
544
+ def append_pathspec(files = [], expect: false, parent: false)
551
545
  if files.empty? && (val = option('pathspec'))
552
546
  files = split_escape(val)
553
547
  end
554
- files = source_path(files, pass: pass)
548
+ files = projectmap(files, parent: parent)
555
549
  if !files.empty?
556
550
  @session << "-- #{files.join(' ')}"
557
551
  elsif expect
558
- raise_error(pass ? 'pathspec not present' : 'pathspec not within worktree', hint: 'invalid')
552
+ raise_error(parent ? 'pathspec not present' : 'pathspec not within worktree', hint: 'invalid')
559
553
  end
560
554
  end
561
555
 
@@ -591,8 +585,8 @@ module Squared
591
585
  session('git', *cmd)
592
586
  end
593
587
 
594
- def git_path
595
- base_path('.git')
588
+ def gitpath
589
+ basepath('.git')
596
590
  end
597
591
 
598
592
  def push?
@@ -604,7 +598,7 @@ module Squared
604
598
  end
605
599
 
606
600
  def threadargs
607
- { stderr: true, exception: !workspace.series.multiple? }
601
+ { stderr: true, exception: exception || !workspace.series.multiple? }
608
602
  end
609
603
  end
610
604
 
@@ -4,8 +4,6 @@ module Squared
4
4
  module Workspace
5
5
  module Project
6
6
  class Node < Git
7
- include Common::Prompt
8
-
9
7
  class << self
10
8
  def populate(*); end
11
9
 
@@ -21,6 +19,10 @@ module Squared
21
19
  [ref, { refresh: :build }]
22
20
  end
23
21
 
22
+ def bannerargs
23
+ %i[version dependfile].freeze
24
+ end
25
+
24
26
  def prod?
25
27
  ENV['NODE_ENV'] == 'production'
26
28
  end
@@ -39,8 +41,6 @@ module Squared
39
41
  run: nil
40
42
  }.freeze
41
43
 
42
- attr_reader :package
43
-
44
44
  def initialize(*, **kwargs)
45
45
  super
46
46
  if @pass.include?(Node.ref)
@@ -51,7 +51,7 @@ module Squared
51
51
  initialize_env(**kwargs)
52
52
  end
53
53
  @pm = {}
54
- @package = base_path('package.json')
54
+ @dependfile = basepath('package.json')
55
55
  end
56
56
 
57
57
  def ref
@@ -70,45 +70,17 @@ module Squared
70
70
  desc format_desc(action, nil, 'command+|^index|#,pattern*')
71
71
  task action, [:command] do |_, args|
72
72
  if args.command == '#'
73
- list = read_scripts
74
- grep = args.extras.map { |val| Regexp.new(val) }
75
- lines = []
76
- if (pad = list.size) > 0
77
- pad = pad.to_s.size
78
- list.each_with_index do |val, i|
79
- next unless grep.empty? || grep.any? { |pat| pat.match?(val[0]) }
80
-
81
- lines << "#{(i + 1).to_s.rjust(pad)}. #{val[0]}"
82
- end
83
- end
84
- if lines.empty?
85
- lines = ['No scripts were found:', '']
86
- unless args.extras.empty?
87
- i = 0
88
- lines += args.extras.to_a.map { |s| "#{i += 1}. #{s}" }
89
- lines << ''
90
- end
91
- lines << package.to_s
92
- pat = /^(#{Regexp.escape(lines.last)})(.*)$/
93
- else
94
- pat = /^(\s*\d+\.)(.+)$/
95
- end
96
- emphasize(lines, title: task_join(name, 'run[^N]'), border: borderstyle, sub: [
97
- headerstyle,
98
- { pat: pat, styles: theme[:active] }
99
- ])
73
+ format_list(read_scripts, 'run[^N]', 'scripts', grep: args.extras, from: dependfile.to_s)
100
74
  else
101
- cmd = args.to_a
102
- guard_params(action, 'command', args: cmd)
103
- list = nil
75
+ cmd = guard_params(action, 'command', args: args.to_a)
104
76
  cmd.each do |val|
105
- if (data = /\A\^(\d+)\z/.match(val))
106
- list ||= read_scripts
107
- n = data[1].to_i
77
+ if (data = indexdata(val))
78
+ n, opts = data
79
+ list = read_scripts
108
80
  if (item = list[n - 1])
109
- val = item.first
81
+ val = opts ? "#{item.first} #{opts}" : item.first
110
82
  elsif exception
111
- raise_error("requested index #{n}", hint: "total #{list.size}")
83
+ indexerror n, list
112
84
  else
113
85
  next log.warn "run script #{n} of #{list.size} (out of range)"
114
86
  end
@@ -145,7 +117,9 @@ module Squared
145
117
  end
146
118
  end
147
119
 
148
- def copy(from: 'build', glob: '**/*', into: 'node_modules', scope: nil, also: nil, override: false)
120
+ def copy(from: 'build', glob: nil, into: 'node_modules', scope: nil, also: nil, override: false)
121
+ return if @copy == false
122
+
149
123
  if @copy && !override
150
124
  return super if runnable?(@copy)
151
125
 
@@ -165,36 +139,29 @@ module Squared
165
139
  else
166
140
  case dir
167
141
  when ::String
168
- dest = workspace.root_path(dir)
142
+ dest = workspace.rootpath(dir)
169
143
  when ::Symbol
170
- dest = Workspace.resolve(dir)&.path
144
+ dest = workspace.find(name: dir)&.path
145
+ log.warn message("copy project :#{dir}", hint: 'not found') unless dest
171
146
  when ::Hash
172
- glob = '**/*'
173
- dest = nil
174
- scope = nil
175
- dir.each do |key, val|
176
- case key.to_sym
177
- when :target
178
- dest = val
179
- when :from
180
- from = val
181
- when :glob
182
- glob = val
183
- when :scope
184
- scope = val
185
- when :into
186
- into = val
187
- end
188
- end
147
+ missing = ->(val) { log.warn message("copy attr :#{val}", hint: 'missing') }
148
+ glob = dir[:glob]
149
+ into = dir[:into] if dir.key?(:into)
150
+ scope = dir[:scope]
151
+ missing.('target') unless (dest = dir[:target])
152
+ missing.('from') unless (from = dir[:from])
189
153
  when Project::Base
190
154
  dest = dir.path
155
+ else
156
+ raise_error("given: #{dir}", hint: 'unknown')
191
157
  end
192
158
  end
193
- next unless dest&.directory?
159
+ next unless from && dest&.directory?
194
160
 
195
- from = base_path(from)
161
+ from = basepath(from)
196
162
  dest = dest.join(into, scope || project)
197
- (glob = as_a(glob)).each { |val| log.info "cp #{from.join(val)} #{dest}" }
163
+ glob = as_a(glob || '**/*')
164
+ glob.each { |val| log.info "cp #{from.join(val)} #{dest}" }
198
165
  copy_d(from, dest, glob: glob, verbose: verbose)
199
166
  end
200
167
  end
@@ -203,7 +170,7 @@ module Squared
203
170
  if @depend && !flag
204
171
  super
205
172
  elsif outdated?
206
- if (yarn = install_type(:yarn)) > 0
173
+ if (yarn = dependtype(:yarn)) > 0
207
174
  cmd = session 'yarn'
208
175
  if yarn > 1
209
176
  if flag == :dedupe
@@ -272,14 +239,14 @@ module Squared
272
239
  dryrun ||= !option('dry-run', prefix: 'npm').nil?
273
240
  end
274
241
  log.info cmd
275
- banner = format_banner("#{cmd}#{dryrun ? ' --dry-run' : ''}", multiple: true)
242
+ banner = format_banner("#{cmd}#{dryrun ? ' --dry-run' : ''}")
276
243
  if invoked_sync?('outdated', rev)
277
244
  print_item banner
278
245
  banner = nil
279
246
  end
280
247
  data = nil
281
248
  pwd_set { data = `#{cmd} --json --loglevel=error` }
282
- json = JSON.parse(doc = package.read)
249
+ json = JSON.parse(doc = dependfile.read)
283
250
  dep1 = json['dependencies'] || {}
284
251
  dep2 = json['devDependencies'] || {}
285
252
  found = []
@@ -312,7 +279,7 @@ module Squared
312
279
  d = w[2]
313
280
  case rev
314
281
  when :major
315
- upgrade = a == '0' ? c == '0' : true
282
+ upgrade = a == '0' ? c == '0' || c == '1' : true
316
283
  when :minor
317
284
  upgrade = ch == '^' && (a == '0' ? c == '0' && b == d : a == c)
318
285
  when :patch
@@ -357,7 +324,7 @@ module Squared
357
324
  col2 = size_col.(found, 1) + 4
358
325
  found.each_with_index do |item, i|
359
326
  a, b, c, d, e = item
360
- if inter && (rev != :major || e || semmajor(item[5], item[6])) && !confirm_outdated(a, c, d, e)
327
+ if inter && (rev != :major || e || semmajor?(item[5], item[6])) && !confirm_outdated(a, c, d, e)
361
328
  cur = -1
362
329
  else
363
330
  cur = modified
@@ -389,10 +356,10 @@ module Squared
389
356
  if dryrun || (modified == 0 && pending > 0)
390
357
  footer.(modified)
391
358
  elsif modified > 0
392
- File.write(package, doc)
359
+ File.write(dependfile, doc)
393
360
  modified = -1
394
361
  footer.()
395
- commit(:add, 'package.json', pass: true)
362
+ commit(:add, ['package.json'], pass: true)
396
363
  install if opts.include?('prune')
397
364
  end
398
365
  elsif !avail.empty?
@@ -459,9 +426,9 @@ module Squared
459
426
  end
460
427
  unless (out = seg.join) == ver
461
428
  begin
462
- doc = package.read
429
+ doc = dependfile.read
463
430
  if doc.sub!(/"version"\s*:\s*"#{ver}"/, "\"version\": \"#{out}\"")
464
- package.write(doc)
431
+ dependfile.write(doc)
465
432
  log.info "bump version #{ver} to #{out} (#{flag})"
466
433
  if verbose
467
434
  major = flag == :major
@@ -488,11 +455,11 @@ module Squared
488
455
  @pm[:version]
489
456
  end
490
457
 
491
- def install_type(prog = nil)
492
- prog ||= yarn? ? :yarn : :pnpm
493
- key = :"#{prog}?"
494
- __send__(key) if respond_to?(key)
495
- @pm[prog] || 0
458
+ def dependtype(prog)
459
+ return @pm[prog] if @pm.key?(prog)
460
+
461
+ meth = :"#{prog}?"
462
+ respond_to?(meth) && __send__(meth) ? @pm[prog] : 0
496
463
  end
497
464
 
498
465
  def depend?
@@ -504,12 +471,12 @@ module Squared
504
471
  end
505
472
 
506
473
  def outdated?
507
- package.exist?
474
+ dependfile.exist?
508
475
  end
509
476
 
510
477
  def yarn?
511
- (@pm[:yarn] ||= if base_path('yarn.lock', ascend: find_package).exist?
512
- if (rc = base_path('.yarnrc.yml', ascend: find_package)).exist?
478
+ (@pm[:yarn] ||= if basepath('yarn.lock', ascend: find_package).exist?
479
+ if (rc = basepath('.yarnrc.yml', ascend: find_package)).exist?
513
480
  begin
514
481
  require 'yaml'
515
482
  doc = YAML.load_file(rc)
@@ -528,10 +495,10 @@ module Squared
528
495
  end
529
496
 
530
497
  def pnpm?
531
- (@pm[:pnpm] ||= if base_path('pnpm-lock.yaml', ascend: find_package).exist?
498
+ (@pm[:pnpm] ||= if basepath('pnpm-lock.yaml', ascend: find_package).exist?
532
499
  begin
533
500
  require 'yaml'
534
- doc = YAML.load_file(base_path('node_modules/.modules.yaml', ascend: find_package))
501
+ doc = YAML.load_file(basepath('node_modules/.modules.yaml', ascend: find_package))
535
502
  @pm[:_] = doc['packageManager']
536
503
  case doc['nodeLinker']
537
504
  when 'hoisted'
@@ -551,7 +518,7 @@ module Squared
551
518
 
552
519
  def workspaces?
553
520
  if pnpm?
554
- base_path('pnpm-workspace.yaml').exist?
521
+ basepath('pnpm-workspace.yaml').exist?
555
522
  else
556
523
  read_packagemanager
557
524
  @pm[:workspaces].is_a?(::Array)
@@ -570,20 +537,18 @@ module Squared
570
537
 
571
538
  def read_packagemanager(version: nil)
572
539
  if @pm[:_].nil?
573
- doc = JSON.parse(package.read)
540
+ doc = JSON.parse(dependfile.read)
574
541
  @pm[:_] = (val = doc['packageManager']) ? val[0..(val.index('+') || 0) - 1] : false
575
542
  @pm[:scripts] = doc['scripts']
576
543
  @pm[:version] = doc['version']
577
544
  @pm[:workspaces] = doc['workspaces']
578
545
  end
579
546
  rescue StandardError => e
580
- log.debug e if package.exist?
547
+ log.debug e if dependfile.exist?
581
548
  @pm[:_] = false
582
549
  nil
583
550
  else
584
- return if !@pm[:_] || (version && @pm[:_][@pm[:_].index('@') + 1..-1] < version)
585
-
586
- @pm[:_]
551
+ !(ret = @pm[:_]) || (version && ret[ret.index('@') + 1..-1] < version) ? nil : ret
587
552
  end
588
553
 
589
554
  def read_install
@@ -595,7 +560,7 @@ module Squared
595
560
 
596
561
  def read_scripts
597
562
  read_packagemanager
598
- @pm[:scripts].is_a?(Hash) ? @pm[:scripts].to_a : []
563
+ @pm[:scripts].is_a?(::Hash) ? @pm[:scripts].to_a : []
599
564
  end
600
565
 
601
566
  def append_loglevel
@@ -604,7 +569,7 @@ module Squared
604
569
  return unless silent || level
605
570
 
606
571
  if yarn?
607
- if install_type(:yarn) == 1
572
+ if dependtype(:yarn) == 1
608
573
  if silent
609
574
  @session << '--silent'
610
575
  elsif level == 'verbose'
@@ -640,18 +605,14 @@ module Squared
640
605
  'PATCH'
641
606
  end, styles: theme[:header])
642
607
  b = sub_style("#{pkg} #{ver}", styles: theme[:inline])
643
- c, d = rev == 1 || lock ? ['y/N', 'N'] : ['Y/n', 'Y']
608
+ c, d = rev == 1 || lock ? %w[y/N N] : %w[Y/n Y]
644
609
  e = lock ? " #{sub_style('(locked)', styles: color(:red))}" : ''
645
- confirm("Upgrade to #{a}? #{b}#{e} [#{c}] ", d, timeout: 60)
610
+ Common::Prompt.confirm("Upgrade to #{a}? #{b}#{e} [#{c}] ", d, timeout: 60)
646
611
  end
647
612
 
648
613
  def find_package
649
614
  'package.json' if parent&.has?('outdated', Node.ref)
650
615
  end
651
-
652
- def headerstyle
653
- { pat: /^(\S+)(\s+)$/, styles: theme[:header] }
654
- end
655
616
  end
656
617
 
657
618
  Application.implement Node
@@ -13,12 +13,15 @@ module Squared
13
13
  class << self
14
14
  def populate(*); end
15
15
  def batchargs(*); end
16
- def aliasargs(*); end
17
16
 
18
17
  def tasks
19
18
  %i[outdated].freeze
20
19
  end
21
20
 
21
+ def bannerargs
22
+ %i[dependfile].freeze
23
+ end
24
+
22
25
  def venv?
23
26
  Dir.exist?(ENV.fetch('VIRTUAL_ENV', ''))
24
27
  end
@@ -30,8 +33,6 @@ module Squared
30
33
  end
31
34
  end
32
35
 
33
- attr_reader :requirements
34
-
35
36
  def initialize(*, **kwargs)
36
37
  super
37
38
  if @pass.include?(Python.ref)
@@ -41,8 +42,8 @@ module Squared
41
42
  initialize_build(Python.ref, **kwargs)
42
43
  initialize_env(**kwargs)
43
44
  end
44
- @reqindex = REQUIREMENTS.index { |file| base_path(file).exist? } || 0
45
- @requirements = base_path(REQUIREMENTS[@reqindex])
45
+ @dependindex = REQUIREMENTS.index { |file| basepath(file).exist? }
46
+ @dependfile = basepath(REQUIREMENTS[@dependindex || 0])
46
47
  end
47
48
 
48
49
  @@tasks[ref] = {
@@ -78,8 +79,8 @@ module Squared
78
79
  desc format_desc(action, flag, list, req: req)
79
80
  if flag == :target
80
81
  task flag, [:dir, :opts] do |_, args|
81
- guard_params(action, flag, args: args, key: :dir)
82
- depend(flag, dir: args.dir, opts: args.to_a)
82
+ dir = guard_params(action, flag, args: args, key: :dir)
83
+ depend(flag, dir: dir, opts: args.to_a[1..-1] || [])
83
84
  end
84
85
  else
85
86
  task flag do |_, args|
@@ -97,7 +98,7 @@ module Squared
97
98
  if @depend && !flag
98
99
  super
99
100
  elsif outdated?
100
- case (type = install_type)
101
+ case (type = dependtype)
101
102
  when 1, 2
102
103
  cmd = pip_session 'install'
103
104
  case flag
@@ -105,7 +106,7 @@ module Squared
105
106
  cmd << '--user'
106
107
  append_pip opts, OPT_USER
107
108
  when :target
108
- cmd << "--target=#{shell_escape(base_path(dir).to_s, quote: true)}"
109
+ cmd << "--target=#{shell_escape(basepath(dir), quote: true)}"
109
110
  append_pip opts, OPT_USER + ['upgrade']
110
111
  append_eager opts
111
112
  when :upgrade
@@ -129,17 +130,13 @@ module Squared
129
130
  run
130
131
  end
131
132
 
132
- def install_type(*)
133
- requirements.exist? ? @reqindex + 1 : 0
134
- end
135
-
136
133
  def variable_set(key, *val, **)
137
134
  case key
138
- when :requirements
139
- req = base_path(val.first)
135
+ when :dependfile
136
+ req = basepath(*val)
140
137
  if (index = REQUIREMENTS.index(req.basename.to_s))
141
- @reqindex = index
142
- @requirements = req
138
+ @dependindex = index
139
+ @dependfile = req
143
140
  else
144
141
  log.warn "variable_set: @#{key}=#{req} (not supported)"
145
142
  end
@@ -153,7 +150,7 @@ module Squared
153
150
  end
154
151
 
155
152
  def outdated?
156
- install_type > 0
153
+ dependtype > 0
157
154
  end
158
155
 
159
156
  private
@@ -179,7 +176,7 @@ module Squared
179
176
  @session << "--proxy=#{shell_escape(val, quote: true)}"
180
177
  end
181
178
  if (val = option('log', ignore: false))
182
- @session << "--log=#{shell_escape(base_path(val).to_s, quote: true)}"
179
+ @session << "--log=#{shell_escape(basepath(val), quote: true)}"
183
180
  end
184
181
  append_nocolor option('no-color')
185
182
  end