squared 0.4.36 → 0.5.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 +64 -529
- data/README.md +1283 -663
- data/README.ruby.md +722 -0
- data/lib/squared/common/base.rb +8 -9
- data/lib/squared/common/format.rb +26 -39
- data/lib/squared/common/prompt.rb +46 -51
- data/lib/squared/common/shell.rb +50 -70
- data/lib/squared/common/system.rb +34 -37
- data/lib/squared/common/utils.rb +3 -28
- data/lib/squared/common.rb +2 -1
- data/lib/squared/config.rb +30 -33
- data/lib/squared/version.rb +1 -1
- data/lib/squared/workspace/application.rb +82 -122
- data/lib/squared/workspace/project/base.rb +432 -578
- data/lib/squared/workspace/project/docker.rb +186 -214
- data/lib/squared/workspace/project/git.rb +368 -512
- data/lib/squared/workspace/project/node.rb +195 -315
- data/lib/squared/workspace/project/python.rb +125 -355
- data/lib/squared/workspace/project/ruby.rb +258 -340
- data/lib/squared/workspace/project/support/class.rb +92 -313
- data/lib/squared/workspace/project.rb +0 -10
- data/lib/squared/workspace/repo.rb +58 -99
- data/lib/squared/workspace/series.rb +41 -47
- data/lib/squared/workspace/support/data.rb +3 -2
- data/lib/squared/workspace/support.rb +0 -1
- data/lib/squared/workspace.rb +3 -5
- data/squared.gemspec +5 -5
- metadata +7 -8
- data/lib/squared/common/class.rb +0 -186
- data/lib/squared/workspace/support/base.rb +0 -32
|
@@ -26,10 +26,10 @@ module Squared
|
|
|
26
26
|
next unless base || obj < impl_project
|
|
27
27
|
|
|
28
28
|
if base
|
|
29
|
-
|
|
29
|
+
@impl_project = obj
|
|
30
30
|
impl_series.base_set(obj)
|
|
31
31
|
else
|
|
32
|
-
kind_project.
|
|
32
|
+
kind_project.prepend(obj)
|
|
33
33
|
obj.tasks&.each { |task| impl_series.add(task, obj) }
|
|
34
34
|
end
|
|
35
35
|
if (args = obj.batchargs)
|
|
@@ -39,7 +39,7 @@ module Squared
|
|
|
39
39
|
impl_series.alias(*args)
|
|
40
40
|
end
|
|
41
41
|
if (args = obj.bannerargs)
|
|
42
|
-
attr_banner.merge(args)
|
|
42
|
+
@attr_banner.merge(args)
|
|
43
43
|
end
|
|
44
44
|
end
|
|
45
45
|
end
|
|
@@ -73,7 +73,7 @@ module Squared
|
|
|
73
73
|
end
|
|
74
74
|
|
|
75
75
|
@kind_project = []
|
|
76
|
-
@task_exclude =
|
|
76
|
+
@task_exclude = Set.new
|
|
77
77
|
|
|
78
78
|
attr_reader :root, :home, :main, :prefix, :exception, :warning, :pipe, :verbose, :theme, :series, :closed
|
|
79
79
|
|
|
@@ -83,7 +83,7 @@ module Squared
|
|
|
83
83
|
basename = @home.basename.to_s
|
|
84
84
|
if main
|
|
85
85
|
@main = main.to_s.freeze
|
|
86
|
-
@home += @main unless @main == basename || (windows? && @main.
|
|
86
|
+
@home += @main unless @main == basename || (windows? && @main.downcase == basename.downcase)
|
|
87
87
|
else
|
|
88
88
|
@main = basename.freeze
|
|
89
89
|
end
|
|
@@ -92,18 +92,12 @@ module Squared
|
|
|
92
92
|
@prefix = prefix
|
|
93
93
|
@series = Application.series_wrap(self)
|
|
94
94
|
@project = {}
|
|
95
|
-
@kind =
|
|
95
|
+
@kind = {}
|
|
96
96
|
@extensions = []
|
|
97
|
-
@envname =
|
|
98
|
-
@pipe =
|
|
97
|
+
@envname = @main.gsub(/[^\w]+/, '_').upcase.freeze
|
|
98
|
+
@pipe = env_pipe(pipe, (ARG[:OUT] && env(ARG[:OUT])) || 1, root: @home)
|
|
99
99
|
@exception = env_bool exception
|
|
100
|
-
@verbose =
|
|
101
|
-
false
|
|
102
|
-
elsif verbose.nil?
|
|
103
|
-
@pipe != 0
|
|
104
|
-
else
|
|
105
|
-
env_bool(verbose, verbose.is_a?(String) ? @pipe != 0 : verbose, index: true)
|
|
106
|
-
end
|
|
100
|
+
@verbose = env_bool(verbose, verbose.nil? || verbose.is_a?(String) ? @pipe != 0 : verbose, index: true)
|
|
107
101
|
@warning = @verbose != false
|
|
108
102
|
@closed = false
|
|
109
103
|
if common
|
|
@@ -112,20 +106,20 @@ module Squared
|
|
|
112
106
|
else
|
|
113
107
|
@theme = {}
|
|
114
108
|
end
|
|
115
|
-
@chain =
|
|
109
|
+
@chain = {}
|
|
116
110
|
@script = {
|
|
117
|
-
group:
|
|
118
|
-
ref:
|
|
111
|
+
group: {},
|
|
112
|
+
ref: {},
|
|
119
113
|
group!: {},
|
|
120
114
|
ref!: {}
|
|
121
115
|
}.freeze
|
|
122
116
|
@events = {
|
|
123
|
-
group:
|
|
124
|
-
ref:
|
|
117
|
+
group: {},
|
|
118
|
+
ref: {}
|
|
125
119
|
}.freeze
|
|
126
120
|
@pass = {
|
|
127
|
-
group:
|
|
128
|
-
ref:
|
|
121
|
+
group: {},
|
|
122
|
+
ref: {},
|
|
129
123
|
global: {},
|
|
130
124
|
pattern: []
|
|
131
125
|
}.freeze
|
|
@@ -140,19 +134,20 @@ module Squared
|
|
|
140
134
|
return unless @pipe.is_a?(Pathname)
|
|
141
135
|
|
|
142
136
|
msg = "Session started on #{Time.now} by #{@main}"
|
|
143
|
-
bord = '#' *
|
|
137
|
+
bord = '#' * s.size
|
|
144
138
|
puts bord, msg, bord
|
|
145
139
|
end
|
|
146
140
|
|
|
147
141
|
def build(parallel: [], pass: nil, **kwargs)
|
|
148
142
|
return self unless enabled? && !@closed
|
|
149
143
|
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
144
|
+
if kwargs[:pattern].is_a?(Array)
|
|
145
|
+
kwargs[:parallel] = parallel.map(&:to_s)
|
|
146
|
+
else
|
|
147
|
+
kwargs[:pattern] = []
|
|
148
|
+
kwargs[:parallel] = parallel.reject { |val| val.is_a?(Regexp) && (kwargs[:pattern] << val) }
|
|
149
|
+
.map(&:to_s)
|
|
150
|
+
end
|
|
156
151
|
@pass[:pattern].concat(pass.map { |val| val.is_a?(Regexp) ? val : val.to_s }) if pass
|
|
157
152
|
@project.each_value do |proj|
|
|
158
153
|
if proj.enabled?
|
|
@@ -178,26 +173,7 @@ module Squared
|
|
|
178
173
|
self
|
|
179
174
|
end
|
|
180
175
|
|
|
181
|
-
def with(*val,
|
|
182
|
-
if hide.nil? && kwargs.key?(:pass)
|
|
183
|
-
pass = kwargs[:pass]
|
|
184
|
-
case pass
|
|
185
|
-
when true, false
|
|
186
|
-
hide = pass
|
|
187
|
-
kwargs.delete(:pass)
|
|
188
|
-
else
|
|
189
|
-
hide, pass = Array(pass).partition { |s| respond_to?(s) || s.to_s.end_with?('?') }
|
|
190
|
-
if pass.empty?
|
|
191
|
-
kwargs.delete(:pass)
|
|
192
|
-
elsif hide.empty?
|
|
193
|
-
hide = nil
|
|
194
|
-
else
|
|
195
|
-
kwargs[:pass] = pass
|
|
196
|
-
end
|
|
197
|
-
end
|
|
198
|
-
end
|
|
199
|
-
return self if hide == true || (hide && Array(hide).any? { |s| respond_to?(s) && __send__(s) rescue nil })
|
|
200
|
-
|
|
176
|
+
def with(*val, group: nil, **kwargs, &blk)
|
|
201
177
|
@group = nil
|
|
202
178
|
@ref = nil
|
|
203
179
|
@withargs = kwargs.empty? ? nil : kwargs
|
|
@@ -244,12 +220,12 @@ module Squared
|
|
|
244
220
|
if arg.include?(':') || (keys && !keys.include?(arg))
|
|
245
221
|
task_name(arg)
|
|
246
222
|
else
|
|
247
|
-
|
|
223
|
+
/#{Regexp.escape(arg)}:/
|
|
248
224
|
end
|
|
249
225
|
end
|
|
250
226
|
end
|
|
251
|
-
data =
|
|
252
|
-
@chain[task_name(task.to_s)] << data
|
|
227
|
+
data = Support::ChainData.new(action, step, ns.call(with), ns.call(before), ns.call(after), sync)
|
|
228
|
+
(@chain[task_name(task.to_s)] ||= []) << data
|
|
253
229
|
self
|
|
254
230
|
end
|
|
255
231
|
|
|
@@ -291,9 +267,9 @@ module Squared
|
|
|
291
267
|
|
|
292
268
|
def pass(name, group: @group, ref: @ref, &blk)
|
|
293
269
|
data = if group
|
|
294
|
-
@pass[:group][group
|
|
270
|
+
@pass[:group][group] ||= {}
|
|
295
271
|
elsif ref
|
|
296
|
-
@pass[:ref][ref
|
|
272
|
+
@pass[:ref][ref] ||= {}
|
|
297
273
|
else
|
|
298
274
|
@pass[:global]
|
|
299
275
|
end
|
|
@@ -302,7 +278,7 @@ module Squared
|
|
|
302
278
|
end
|
|
303
279
|
|
|
304
280
|
def banner(*args, command: true, styles: nil, border: nil, group: @group, ref: @ref)
|
|
305
|
-
data =
|
|
281
|
+
data = Support::BannerData.new(command, [], check_style(styles, empty: false), check_style(border))
|
|
306
282
|
args.each do |meth|
|
|
307
283
|
if meth.is_a?(Array)
|
|
308
284
|
found = false
|
|
@@ -325,24 +301,31 @@ module Squared
|
|
|
325
301
|
elsif !Application.attr_banner.include?(meth = meth.to_sym)
|
|
326
302
|
next
|
|
327
303
|
end
|
|
328
|
-
data
|
|
304
|
+
data.order << meth
|
|
329
305
|
end
|
|
330
|
-
data = {} if !command && data[:order].empty?
|
|
331
306
|
if group
|
|
332
307
|
label = :group
|
|
333
|
-
items =
|
|
308
|
+
items = as_a group
|
|
334
309
|
else
|
|
335
310
|
label = :ref
|
|
336
|
-
items =
|
|
311
|
+
items = ref ? as_a(ref) : [:_]
|
|
337
312
|
end
|
|
338
313
|
items.each { |val| @banner[label][val.to_sym] = data }
|
|
339
314
|
self
|
|
340
315
|
end
|
|
341
316
|
|
|
342
317
|
def add(path, project = nil, **kwargs, &blk)
|
|
343
|
-
kwargs =
|
|
344
|
-
ref = kwargs.key?(:ref)
|
|
345
|
-
|
|
318
|
+
kwargs = @withargs.yield_self { |data| data.dup.update(kwargs) } if @withargs
|
|
319
|
+
ref = if kwargs.key?(:ref)
|
|
320
|
+
kwargs = kwargs.dup unless @withargs
|
|
321
|
+
kwargs.delete(:ref)
|
|
322
|
+
elsif @ref.is_a?(Symbol)
|
|
323
|
+
@ref
|
|
324
|
+
end
|
|
325
|
+
if @group.is_a?(String) && !kwargs.key?(:group)
|
|
326
|
+
kwargs = kwargs.dup unless @withargs
|
|
327
|
+
kwargs[:group] = @group
|
|
328
|
+
end
|
|
346
329
|
path = root + path
|
|
347
330
|
project = (project || path.basename).to_s
|
|
348
331
|
name = task_name project
|
|
@@ -353,9 +336,9 @@ module Squared
|
|
|
353
336
|
end
|
|
354
337
|
proj = ((if !ref.is_a?(Class)
|
|
355
338
|
Application.find(ref, path: path)
|
|
356
|
-
elsif ref <
|
|
339
|
+
elsif ref < Project::Base
|
|
357
340
|
ref
|
|
358
|
-
end) || @kind[name]&.last ||
|
|
341
|
+
end) || @kind[name]&.last || Project::Base).new(self, path, name, **kwargs)
|
|
359
342
|
proj.__send__(:index_set, @project.size)
|
|
360
343
|
@project[name] = proj
|
|
361
344
|
__get__(:project)[name] = proj unless kwargs[:private]
|
|
@@ -372,14 +355,14 @@ module Squared
|
|
|
372
355
|
end
|
|
373
356
|
.each do |dir, basename, opts|
|
|
374
357
|
args = kwargs.dup
|
|
375
|
-
args.
|
|
358
|
+
args.update(opts) if opts
|
|
376
359
|
add(dir, basename, group: val, **args, &blk)
|
|
377
360
|
end
|
|
378
361
|
self
|
|
379
362
|
end
|
|
380
363
|
|
|
381
364
|
def compose(name, &blk)
|
|
382
|
-
namespace(task_name(name), &blk)
|
|
365
|
+
namespace(task_name(name), &blk) if block_given?
|
|
383
366
|
self
|
|
384
367
|
end
|
|
385
368
|
|
|
@@ -391,7 +374,7 @@ module Squared
|
|
|
391
374
|
def style(obj, *args, target: nil, empty: false)
|
|
392
375
|
data = nil
|
|
393
376
|
if target
|
|
394
|
-
|
|
377
|
+
as_a(target).each_with_index do |key, i|
|
|
395
378
|
if i == 0
|
|
396
379
|
break unless (data = __get__(:theme)[key.to_sym])
|
|
397
380
|
else
|
|
@@ -411,7 +394,7 @@ module Squared
|
|
|
411
394
|
}
|
|
412
395
|
data.each do |key, val|
|
|
413
396
|
key = key.to_s
|
|
414
|
-
if key.
|
|
397
|
+
if key.start_with?(/(\\A|\^)/) || key.match?(/(\\z|\$)\z/)
|
|
415
398
|
@describe[:replace] << [Regexp.new(key), val]
|
|
416
399
|
else
|
|
417
400
|
@describe[val.is_a?(Regexp) ? :pattern : :alias][key.to_s] = val
|
|
@@ -429,13 +412,13 @@ module Squared
|
|
|
429
412
|
if ret.empty?
|
|
430
413
|
ret = @project.select { |_, item| item.ref?(ref) }.map(&:last) if ref
|
|
431
414
|
if ret.empty? && (path || name)
|
|
432
|
-
path &&= rootpath
|
|
415
|
+
path &&= rootpath path
|
|
433
416
|
name &&= name.to_s
|
|
434
417
|
proj = @project.find { |_, item| (path && item.path == path) || (name && item.name == name) }&.last
|
|
435
418
|
ret << proj if proj
|
|
436
419
|
end
|
|
437
420
|
end
|
|
438
|
-
return (group || ref ? ret : ret
|
|
421
|
+
return (group || ref ? ret : ret[0]) unless block_given?
|
|
439
422
|
|
|
440
423
|
ret.each(&blk)
|
|
441
424
|
self
|
|
@@ -497,7 +480,7 @@ module Squared
|
|
|
497
480
|
end
|
|
498
481
|
|
|
499
482
|
def task_namespace(val, first: false)
|
|
500
|
-
return unless (ret = val.to_s.split(':')).size > 1
|
|
483
|
+
return nil unless (ret = val.to_s.split(':')).size > 1
|
|
501
484
|
|
|
502
485
|
first ? ret.first : task_join(*ret[0..-2])
|
|
503
486
|
end
|
|
@@ -507,7 +490,7 @@ module Squared
|
|
|
507
490
|
if (base = task_base?(key))
|
|
508
491
|
tasks << key if obj.has?(key, baseref)
|
|
509
492
|
elsif (batch = series.batch_get(key))
|
|
510
|
-
obj.allref do |ref|
|
|
493
|
+
obj.allref.each do |ref|
|
|
511
494
|
next unless obj.has?(key, ref) && (data = batch[ref])
|
|
512
495
|
|
|
513
496
|
data.each do |val|
|
|
@@ -526,10 +509,10 @@ module Squared
|
|
|
526
509
|
if tasks.empty?
|
|
527
510
|
return [] if (base && !obj.ref?(baseref)) || !(data = series.alias_get(key))
|
|
528
511
|
|
|
529
|
-
obj.allref do |ref|
|
|
512
|
+
obj.allref.each do |ref|
|
|
530
513
|
next unless obj.has?(key, ref) && (alt = data[ref])
|
|
531
514
|
|
|
532
|
-
ret = task_resolve
|
|
515
|
+
ret = task_resolve obj, alt
|
|
533
516
|
break unless ret.empty?
|
|
534
517
|
end
|
|
535
518
|
else
|
|
@@ -549,7 +532,7 @@ module Squared
|
|
|
549
532
|
end
|
|
550
533
|
|
|
551
534
|
def format_desc(val, opts = nil, arg: 'opts*', before: nil, after: nil, out: false)
|
|
552
|
-
return unless TASK_METADATA
|
|
535
|
+
return unless TASK_METADATA
|
|
553
536
|
|
|
554
537
|
val = val.split(':') if val.is_a?(String)
|
|
555
538
|
if before || after || opts
|
|
@@ -590,7 +573,7 @@ module Squared
|
|
|
590
573
|
return ret if group && (ret = @banner[:group][group.to_sym])
|
|
591
574
|
|
|
592
575
|
ref.reverse_each { |val| return ret if (ret = @banner[:ref][val]) }
|
|
593
|
-
@banner[:ref][:
|
|
576
|
+
@banner[:ref][:'']
|
|
594
577
|
end
|
|
595
578
|
|
|
596
579
|
def enabled?
|
|
@@ -635,25 +618,13 @@ module Squared
|
|
|
635
618
|
end
|
|
636
619
|
|
|
637
620
|
def home?
|
|
638
|
-
|
|
621
|
+
!(proj = find(home)).nil? && proj.enabled?
|
|
639
622
|
end
|
|
640
623
|
|
|
641
624
|
def windows?
|
|
642
625
|
Rake::Win32.windows?
|
|
643
626
|
end
|
|
644
627
|
|
|
645
|
-
def mri?
|
|
646
|
-
RUBY_ENGINE == 'ruby'
|
|
647
|
-
end
|
|
648
|
-
|
|
649
|
-
def jruby?
|
|
650
|
-
RUBY_ENGINE == 'jruby'
|
|
651
|
-
end
|
|
652
|
-
|
|
653
|
-
def truffleruby?
|
|
654
|
-
RUBY_ENGINE == 'truffleruby'
|
|
655
|
-
end
|
|
656
|
-
|
|
657
628
|
def docker?
|
|
658
629
|
!Dir['/.dockerenv', '/docker-*.{sh,d}'].empty?
|
|
659
630
|
end
|
|
@@ -690,10 +661,6 @@ module Squared
|
|
|
690
661
|
{ exception: exception, warning: warning }
|
|
691
662
|
end
|
|
692
663
|
|
|
693
|
-
def size
|
|
694
|
-
@project.size
|
|
695
|
-
end
|
|
696
|
-
|
|
697
664
|
def to_s
|
|
698
665
|
(home? ? home : root).to_s
|
|
699
666
|
end
|
|
@@ -707,14 +674,9 @@ module Squared
|
|
|
707
674
|
private
|
|
708
675
|
|
|
709
676
|
def __build__(default: nil, **)
|
|
710
|
-
unless task_defined?(
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
end
|
|
714
|
-
end
|
|
715
|
-
if default && task_defined?(out = task_name(default))
|
|
716
|
-
task Rake.application.default_task_name => out
|
|
717
|
-
end
|
|
677
|
+
return unless default && task_defined?(out = task_name(default))
|
|
678
|
+
|
|
679
|
+
task Rake.application.default_task_name => out
|
|
718
680
|
end
|
|
719
681
|
|
|
720
682
|
def __chain__(*)
|
|
@@ -736,7 +698,7 @@ module Squared
|
|
|
736
698
|
else
|
|
737
699
|
step = 0
|
|
738
700
|
catch :found do
|
|
739
|
-
has = ->(c, d) { c.any? { |e| e.is_a?(Regexp) ? d.
|
|
701
|
+
has = ->(c, d) { c.any? { |e| e.is_a?(Regexp) ? d.start_with?(e) : d == e } }
|
|
740
702
|
w = data.with
|
|
741
703
|
a = data.after
|
|
742
704
|
b = data.before
|
|
@@ -795,7 +757,7 @@ module Squared
|
|
|
795
757
|
end
|
|
796
758
|
end
|
|
797
759
|
if step == -1
|
|
798
|
-
level.
|
|
760
|
+
level.prepend(data.action)
|
|
799
761
|
step = 0
|
|
800
762
|
elsif step > 0
|
|
801
763
|
(level[step -= 1] ||= []).concat(data.action)
|
|
@@ -816,8 +778,8 @@ module Squared
|
|
|
816
778
|
format_desc key
|
|
817
779
|
task key do
|
|
818
780
|
unless failed.empty? && group.empty?
|
|
819
|
-
puts
|
|
820
|
-
subject: 'failed placement', hint: false
|
|
781
|
+
puts log_message(Logger::ERROR, *(failed + group.map { |val| val.action }.flatten),
|
|
782
|
+
subject: 'failed placement', hint: false, pass: true)
|
|
821
783
|
end
|
|
822
784
|
cols = level.flatten(1).map(&:size).max
|
|
823
785
|
level.each_with_index do |grp, n|
|
|
@@ -827,19 +789,19 @@ module Squared
|
|
|
827
789
|
' (sync)'
|
|
828
790
|
end}"
|
|
829
791
|
emphasize(grp, title: title, cols: [cols, title.size].max, border: theme[:border],
|
|
830
|
-
sub: [
|
|
792
|
+
sub: [pat: /\A(Step \d+)(.*)\z/, styles: theme[:header]])
|
|
831
793
|
end
|
|
832
794
|
end
|
|
833
795
|
end
|
|
834
796
|
end
|
|
835
797
|
|
|
836
|
-
def puts(*args
|
|
837
|
-
|
|
798
|
+
def puts(*args)
|
|
799
|
+
puts_oe(*args, pipe: pipe)
|
|
838
800
|
end
|
|
839
801
|
|
|
840
802
|
def script_command(task, val, group, ref, on, &blk)
|
|
841
803
|
if block_given?
|
|
842
|
-
val =
|
|
804
|
+
val = Support::RunData.new(val, blk)
|
|
843
805
|
elsif !val
|
|
844
806
|
return self
|
|
845
807
|
end
|
|
@@ -851,8 +813,8 @@ module Squared
|
|
|
851
813
|
items = as_a(ref, :to_sym)
|
|
852
814
|
end
|
|
853
815
|
items.each do |name|
|
|
854
|
-
@script[label][name][task] = val
|
|
855
|
-
@events[label][name][task] = on if on.is_a?(Hash)
|
|
816
|
+
(@script[label][name] ||= {})[task] = val
|
|
817
|
+
(@events[label][name] ||= {})[task] = on if on.is_a?(Hash)
|
|
856
818
|
end
|
|
857
819
|
self
|
|
858
820
|
end
|
|
@@ -860,26 +822,24 @@ module Squared
|
|
|
860
822
|
def script_set(data, group: nil, ref: nil)
|
|
861
823
|
data.freeze
|
|
862
824
|
if group
|
|
863
|
-
|
|
825
|
+
as_a(group).each { |val| @script[:group!][val.to_sym] = data }
|
|
864
826
|
elsif ref
|
|
865
|
-
|
|
827
|
+
as_a(ref).each { |val| @script[:ref!][val.to_sym] = data }
|
|
866
828
|
else
|
|
867
829
|
@script[:ref!][:''] = data
|
|
868
830
|
end
|
|
869
831
|
end
|
|
870
832
|
|
|
871
833
|
def data_get(*args, group: nil, ref: nil, target: nil)
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
elsif ref.is_a?(Enumerable)
|
|
834
|
+
target[:group][group.to_sym] if group
|
|
835
|
+
if ref.is_a?(Enumerable)
|
|
875
836
|
ref.each do |key|
|
|
876
|
-
next unless target[:ref]
|
|
837
|
+
next unless (ret = target[:ref][key])
|
|
877
838
|
|
|
878
|
-
ret = target[:ref][key]
|
|
879
839
|
return ret if args.empty? || args.any? { |val| ret.key?(val) }
|
|
880
840
|
end
|
|
881
841
|
nil
|
|
882
|
-
elsif ref
|
|
842
|
+
elsif ref
|
|
883
843
|
target[:ref][ref]
|
|
884
844
|
end
|
|
885
845
|
end
|
|
@@ -887,7 +847,7 @@ module Squared
|
|
|
887
847
|
def root?(path, pass: [])
|
|
888
848
|
return false unless path.directory?
|
|
889
849
|
|
|
890
|
-
path.
|
|
850
|
+
path.each_child do |c|
|
|
891
851
|
name = c.basename.to_s
|
|
892
852
|
next if c.to_s == __FILE__ || (@main == name && c.directory? && c.empty?) || pass.any? { |val| val == name }
|
|
893
853
|
|
|
@@ -897,14 +857,14 @@ module Squared
|
|
|
897
857
|
end
|
|
898
858
|
|
|
899
859
|
def script?(state, target: nil, pat: nil, group: nil, ref: baseref, global: false)
|
|
900
|
-
data = script_find
|
|
860
|
+
data = script_find ref, group
|
|
901
861
|
if global
|
|
902
862
|
target = data[:script] || data[:run] if target.nil?
|
|
903
863
|
pat = data[state] if pat.nil?
|
|
904
864
|
end
|
|
905
865
|
return false if state == :prod && data[:dev] == true && data[:global]
|
|
906
866
|
|
|
907
|
-
target && pat.is_a?(Regexp) ?
|
|
867
|
+
target && pat.is_a?(Regexp) ? as_a(target).any?(pat) : pat == true
|
|
908
868
|
end
|
|
909
869
|
|
|
910
870
|
def scriptobj
|