squared 0.8.3 → 0.8.5
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 +112 -6
- data/README.md +8 -9
- data/lib/squared/common/base.rb +1 -0
- data/lib/squared/common/format.rb +2 -1
- data/lib/squared/common/host.rb +39 -0
- data/lib/squared/common/prompt.rb +4 -3
- data/lib/squared/common/shell.rb +13 -12
- data/lib/squared/common/utils.rb +7 -4
- data/lib/squared/common.rb +1 -0
- data/lib/squared/version.rb +1 -1
- data/lib/squared/workspace/application.rb +5 -27
- data/lib/squared/workspace/project/base.rb +41 -17
- data/lib/squared/workspace/project/docker.rb +215 -147
- data/lib/squared/workspace/project/git.rb +125 -113
- data/lib/squared/workspace/project/node.rb +69 -36
- data/lib/squared/workspace/project/python.rb +13 -9
- data/lib/squared/workspace/project/ruby.rb +13 -12
- data/lib/squared/workspace/project/support/optionpartition.rb +108 -53
- data/lib/squared/workspace/repo.rb +3 -2
- data/lib/squared/workspace/series.rb +2 -2
- metadata +3 -2
|
@@ -12,6 +12,7 @@ module Squared
|
|
|
12
12
|
include Enumerable
|
|
13
13
|
include Comparable
|
|
14
14
|
include Common::Format
|
|
15
|
+
include Host
|
|
15
16
|
include System
|
|
16
17
|
include Shell
|
|
17
18
|
include Prompt
|
|
@@ -338,6 +339,7 @@ module Squared
|
|
|
338
339
|
ext = flag == :ext ? param_guard(action, flag, args: args, key: :ext) : flag.to_s
|
|
339
340
|
tag = param_guard(action, flag, args: args, key: :tag)
|
|
340
341
|
dir = param_guard(action, flag, args: args, key: :dir)
|
|
342
|
+
digest = args.digest
|
|
341
343
|
unless tag.match?(URI_SCHEME)
|
|
342
344
|
tag = unpack_get tag, ext
|
|
343
345
|
tag ||= if @release
|
|
@@ -346,7 +348,7 @@ module Squared
|
|
|
346
348
|
raise ArgumentError, message('no base uri', tag, hint: ext)
|
|
347
349
|
end
|
|
348
350
|
end
|
|
349
|
-
force = case
|
|
351
|
+
force = case digest
|
|
350
352
|
when 'f', 'force'
|
|
351
353
|
digest = nil
|
|
352
354
|
true
|
|
@@ -362,7 +364,8 @@ module Squared
|
|
|
362
364
|
when :set
|
|
363
365
|
format_desc action, flag, 'version,dir?=u/home|p/arent'
|
|
364
366
|
task flag, [:version] do |_, args|
|
|
365
|
-
|
|
367
|
+
version = args.version
|
|
368
|
+
args = if version
|
|
366
369
|
args.extras
|
|
367
370
|
else
|
|
368
371
|
version, opts = choice_index('Select a version',
|
|
@@ -377,7 +380,9 @@ module Squared
|
|
|
377
380
|
asdf(flag, args, version: version)
|
|
378
381
|
end
|
|
379
382
|
else
|
|
380
|
-
format_desc(action, flag, case flag
|
|
383
|
+
format_desc(action, flag, case flag
|
|
384
|
+
when :exec, :env then 'command'
|
|
385
|
+
end)
|
|
381
386
|
task flag do |_, args|
|
|
382
387
|
args = args.to_a
|
|
383
388
|
if args.empty? && (flag == :exec || flag == :env)
|
|
@@ -533,7 +538,8 @@ module Squared
|
|
|
533
538
|
graph_deps.flatten(1).sort.each do |proj|
|
|
534
539
|
next if @@graph[:_].include?(proj)
|
|
535
540
|
|
|
536
|
-
|
|
541
|
+
val = ENV["PREREQS_#{proj.envname_get}"] || ENV["PREREQS_#{proj.ref.upcase}"]
|
|
542
|
+
if val
|
|
537
543
|
split_escape(val) do |meth|
|
|
538
544
|
if proj.has?(meth)
|
|
539
545
|
begin
|
|
@@ -581,7 +587,8 @@ module Squared
|
|
|
581
587
|
on :first, :clean unless pass
|
|
582
588
|
case @clean
|
|
583
589
|
when Struct
|
|
584
|
-
|
|
590
|
+
val = instance_eval(&@clean.block) || @clean.run
|
|
591
|
+
if val
|
|
585
592
|
cur = @clean
|
|
586
593
|
@clean = val
|
|
587
594
|
clean(*args, sync: sync, pass: true, **kwargs)
|
|
@@ -817,7 +824,7 @@ module Squared
|
|
|
817
824
|
cmd << name
|
|
818
825
|
banner = false if flag == :latest || flag == :where
|
|
819
826
|
end
|
|
820
|
-
success?(run(banner: banner, from: symjoin('asdf', flag)), banner,
|
|
827
|
+
success?(run(banner: banner, from: symjoin('asdf', flag)), banner, %i[set reshim].include?(flag))
|
|
821
828
|
end
|
|
822
829
|
|
|
823
830
|
def first(key, *args, **kwargs, &blk)
|
|
@@ -906,7 +913,7 @@ module Squared
|
|
|
906
913
|
ret = shell_t(*args, name: send, chdir: chdir, exception: exception, timeout: timeout || 0)
|
|
907
914
|
end
|
|
908
915
|
rescue Timeout::Error => e
|
|
909
|
-
print_error(Logger::ERROR,
|
|
916
|
+
print_error(Logger::ERROR, e, subject: name, hint: cmd)
|
|
910
917
|
exit 1 unless exception?(Logger::DEBUG, Logger::INFO)
|
|
911
918
|
rescue => e
|
|
912
919
|
on_error(e, exception: true)
|
|
@@ -1366,9 +1373,8 @@ module Squared
|
|
|
1366
1373
|
def run_b(obj, **kwargs)
|
|
1367
1374
|
case obj
|
|
1368
1375
|
when Struct
|
|
1369
|
-
|
|
1370
|
-
|
|
1371
|
-
end
|
|
1376
|
+
val = instance_eval(&obj.block) || obj.run
|
|
1377
|
+
run_b(val, **kwargs) if val
|
|
1372
1378
|
when Proc
|
|
1373
1379
|
instance_eval(&obj)
|
|
1374
1380
|
when Method
|
|
@@ -1726,7 +1732,7 @@ module Squared
|
|
|
1726
1732
|
end
|
|
1727
1733
|
|
|
1728
1734
|
def print_success
|
|
1729
|
-
puts
|
|
1735
|
+
puts ARG[:SUCCESS]
|
|
1730
1736
|
end
|
|
1731
1737
|
|
|
1732
1738
|
def print_error(*args, loglevel: Logger::WARN, **kwargs)
|
|
@@ -1921,7 +1927,8 @@ module Squared
|
|
|
1921
1927
|
|
|
1922
1928
|
def append_hash(data, target: @session || [], build: false)
|
|
1923
1929
|
if build && (type = env('BUILD', suffix: 'TYPE', ignore: false))
|
|
1924
|
-
|
|
1930
|
+
extra = data[type = "__#{type}__"] || data[type.to_sym]
|
|
1931
|
+
if extra.is_a?(Hash)
|
|
1925
1932
|
data = data.merge(extra)
|
|
1926
1933
|
else
|
|
1927
1934
|
extra = nil
|
|
@@ -2139,7 +2146,10 @@ module Squared
|
|
|
2139
2146
|
if accept
|
|
2140
2147
|
hint = Array(ret).map { |val| sub_style(val.to_s, theme[:inline]) }.join(', ')
|
|
2141
2148
|
accept = Array(accept).map { |val| Array(val) }
|
|
2142
|
-
|
|
2149
|
+
if accept.any? { |val| val[1] == true }
|
|
2150
|
+
ret = [ret]
|
|
2151
|
+
multiple = -1
|
|
2152
|
+
end
|
|
2143
2153
|
begin
|
|
2144
2154
|
item = accept.shift
|
|
2145
2155
|
c = confirm("#{item[0]}#{" [#{hint}]" if hint}", item[2] ? 'Y' : 'N')
|
|
@@ -2152,7 +2162,7 @@ module Squared
|
|
|
2152
2162
|
end until accept.empty?
|
|
2153
2163
|
end
|
|
2154
2164
|
if values
|
|
2155
|
-
ret =
|
|
2165
|
+
ret = [ret] unless accept && multiple == -1
|
|
2156
2166
|
Array(values).each do |val|
|
|
2157
2167
|
if val.is_a?(Array)
|
|
2158
2168
|
val, force = val
|
|
@@ -2198,7 +2208,7 @@ module Squared
|
|
|
2198
2208
|
cmd.reverse! if File::NULL == 'NUL'
|
|
2199
2209
|
cmd.unshift('').join(' ')
|
|
2200
2210
|
end
|
|
2201
|
-
if
|
|
2211
|
+
if powershell?
|
|
2202
2212
|
"#{shell_bin('powershell.exe')} -Command \"& {#{args.join(' ; ')}}\"#{out}"
|
|
2203
2213
|
else
|
|
2204
2214
|
args.map { |val| "#{val}#{out}" }.join(' && ')
|
|
@@ -2335,7 +2345,7 @@ module Squared
|
|
|
2335
2345
|
end
|
|
2336
2346
|
|
|
2337
2347
|
def indexchar
|
|
2338
|
-
|
|
2348
|
+
windows? ? '=' : '^'
|
|
2339
2349
|
end
|
|
2340
2350
|
|
|
2341
2351
|
def shortname(*args, suffix: '?', delim: ',', pass: false)
|
|
@@ -2432,7 +2442,7 @@ module Squared
|
|
|
2432
2442
|
return if from == false
|
|
2433
2443
|
|
|
2434
2444
|
require 'timeout'
|
|
2435
|
-
unless (path.to_s == Dir.pwd || pass) && (
|
|
2445
|
+
unless (path.to_s == Dir.pwd || pass) && (mri? || !windows?)
|
|
2436
2446
|
pwd = Dir.pwd
|
|
2437
2447
|
Dir.chdir(path)
|
|
2438
2448
|
end
|
|
@@ -2775,6 +2785,20 @@ module Squared
|
|
|
2775
2785
|
false
|
|
2776
2786
|
end
|
|
2777
2787
|
|
|
2788
|
+
def choice!(args, char: ':', first: true, empty: false, only: false)
|
|
2789
|
+
return true if (empty && args.empty?) || (only && args.size == 1 && args.first == char)
|
|
2790
|
+
|
|
2791
|
+
if first
|
|
2792
|
+
if args.first == char
|
|
2793
|
+
args.shift
|
|
2794
|
+
return true
|
|
2795
|
+
end
|
|
2796
|
+
elsif args.delete(char)
|
|
2797
|
+
return true
|
|
2798
|
+
end
|
|
2799
|
+
false
|
|
2800
|
+
end
|
|
2801
|
+
|
|
2778
2802
|
def variables
|
|
2779
2803
|
VAR_SET
|
|
2780
2804
|
end
|