squared 0.8.6 → 0.9.0.pre1

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.
@@ -19,7 +19,6 @@ module Squared
19
19
  class << self
20
20
  include Common::Format
21
21
  include Shell
22
- include Prompt
23
22
 
24
23
  def append(target, *args, delim: false, escape: false, quote: true, strip: nil, double: false, filter: nil,
25
24
  pass: nil, **kwargs)
@@ -82,7 +81,7 @@ module Squared
82
81
  kwargs[:hint] ||= 'unrecognized'
83
82
  append(target, opts, delim: true) if kwargs.delete(:append)
84
83
  warn log_warn(opts.join(', '), pass: true, **kwargs)
85
- exit 1 unless !strict && (pass || confirm("Run? [#{sub_style(target, styles)}]", 'N'))
84
+ exit 1 unless !strict && (pass || Common::Prompt.confirm("Run? [#{sub_style(target, styles)}]", 'N'))
86
85
  end
87
86
 
88
87
  def delete_key(target, *args, value: false, reverse: false, count: -1)
@@ -104,7 +103,7 @@ module Squared
104
103
  next if s.empty? || pass == i
105
104
 
106
105
  if s == '--'
107
- ret << s << args[i.succ..-1].join(' ')
106
+ ret << s << args[i.succ..].join(' ')
108
107
  break
109
108
  end
110
109
  next ret << s unless s.start_with?('-')
@@ -139,7 +138,7 @@ module Squared
139
138
  j = val =~ OPT_VALUE ? $1 : val
140
139
  (out[j] ||= []) << i unless pass.include?(j)
141
140
  end
142
- .map { |item| item[1].size > 1 ? item[1][0..-2] : [] }
141
+ .map { |item| item[1].size > 1 ? item[1][..-2] : [] }
143
142
  .reject(&:empty?)
144
143
  return if data.empty?
145
144
 
@@ -152,12 +151,12 @@ module Squared
152
151
  val = val.strip
153
152
  return [val, nil, ''] unless (i = val.index('='))
154
153
 
155
- last = val[i.succ..-1].strip
154
+ last = val[i.succ..].strip
156
155
  if last =~ /\A(["'])(.*)\1\z/m
157
156
  last = $2
158
157
  quote = $1
159
158
  end
160
- [val[0..i.pred], last, quote || '']
159
+ [val[...i], last, quote || '']
161
160
  end
162
161
 
163
162
  def parse_arg!(name, val)
@@ -174,7 +173,7 @@ module Squared
174
173
  r << matchopts(s, value) unless s.empty?
175
174
  a = target.to_a
176
175
  if (n = a.index('--'))
177
- a = a[0..n]
176
+ a = a[..n]
178
177
  end
179
178
  r.any? { |pat| a.any?(pat) }
180
179
  end
@@ -193,6 +192,8 @@ module Squared
193
192
  false
194
193
  end
195
194
 
195
+ alias filter select
196
+
196
197
  private
197
198
 
198
199
  def matchopt(val, value = false)
@@ -219,13 +220,12 @@ module Squared
219
220
  end
220
221
 
221
222
  attr_reader :target, :extras, :found, :errors, :values, :project, :path, :sep
222
- attr_accessor :stdout
223
223
 
224
224
  def_delegators :@target, :+, :-, :<<, :any?, :none?, :include?, :add, :add?, :find, :find_all, :find_index,
225
225
  :merge, :compact, :delete, :delete?, :delete_if, :grep, :grep_v, :inspect, :to_a, :to_s
226
226
  def_delegators :@extras, :empty?, :member?, :each, :each_with_index, :each_with_object, :partition, :dup,
227
227
  :first, :shift, :unshift, :pop, :push, :concat, :index, :join, :detect, :map, :map!, :select,
228
- :select!, :reject, :slice, :slice!, :size
228
+ :select!, :filter, :filter!, :reject, :slice, :slice!, :size
229
229
 
230
230
  def_delegator :@extras, :delete, :remove
231
231
  def_delegator :@extras, :delete_at, :remove_at
@@ -242,16 +242,14 @@ module Squared
242
242
  @sep = sep
243
243
  @errors = []
244
244
  @found = []
245
- @stdout = false
246
245
  parse(list, opts, **kwargs, &blk)
247
246
  end
248
247
 
249
248
  def parse(list, opts = extras, no: nil, single: nil, args: false, multiple: nil, first: nil, underscore: nil,
250
- explicit: false, bool: %w[true false], auto: [], stdin: false, &blk)
249
+ explicit: false, bool: %w[true false], stdin: false, &blk)
251
250
  @extras = []
252
251
  @values = []
253
252
  bare = []
254
- auto = auto.flat_map { |val| val.split('|', 2) }
255
253
  e = []
256
254
  b = []
257
255
  m = []
@@ -272,7 +270,7 @@ module Squared
272
270
  x, y = val.split('|', 2)
273
271
  if y
274
272
  if (n = val.index('='))
275
- x += val[n..-1]
273
+ x += val[n..]
276
274
  end
277
275
  [x, y]
278
276
  else
@@ -321,7 +319,7 @@ module Squared
321
319
  bare.concat(mod)
322
320
  when '/'
323
321
  begin
324
- val = val[n.succ..-1]
322
+ val = val[n.succ..]
325
323
  pat = eval(val)
326
324
  raise SyntaxError unless pat.is_a?(Regexp)
327
325
 
@@ -330,7 +328,7 @@ module Squared
330
328
  warn "#{self.class}: invalid pattern (#{val})"
331
329
  end
332
330
  when '{'
333
- group = val[(n + 2)..-1].chomp!('}')&.split(',')
331
+ group = val[(n + 2)..].chomp!('}')&.split(',')
334
332
  if group
335
333
  mod.each { |key| ar[key] = group }
336
334
  else
@@ -353,7 +351,6 @@ module Squared
353
351
  tr = ->(a) { a.map { |val| val.tr('-', '_') } }
354
352
  @values.concat(tr.call(@values))
355
353
  bare.concat(tr.call(bare))
356
- auto.concat(tr.call(auto))
357
354
  e.concat(tr.call(e))
358
355
  b.concat(tr.call(b))
359
356
  m.concat(tr.call(m))
@@ -367,7 +364,6 @@ module Squared
367
364
  ml.concat(tr.call(ml))
368
365
  no.concat(tr.call(no))
369
366
  end
370
- bare.concat(auto)
371
367
  if target.is_a?(JoinSet)
372
368
  target.multiple = multiple if multiple
373
369
  target.multiple = ml.map { |val| val.size == 1 ? "-#{val}" : "--#{val}" }
@@ -400,12 +396,8 @@ module Squared
400
396
  add "#{sw[opt]}#{opt}"
401
397
  else
402
398
  add(opt.size == 1 ? "-#{opt}" : "--#{opt}")
403
- if auto.include?(opt)
404
- @stdout = true
405
- break
406
- end
407
399
  end
408
- elsif opt.start_with?(/no[-_]/) && no.include?(s = opt[3..-1])
400
+ elsif opt.start_with?(/no[-_]/) && no.include?(s = opt[3..])
409
401
  add "--no-#{s}"
410
402
  else
411
403
  has = lambda do |list, key|
@@ -463,7 +455,7 @@ module Squared
463
455
  push opt
464
456
  end
465
457
  opt = key unless opt == last
466
- elsif has.call(m, key = opt[0]) && opt[1..-1] =~ QUOTE_VALUE
458
+ elsif has.call(m, key = opt[0]) && opt[1..] =~ QUOTE_VALUE
467
459
  add basic_option(key, $2, double: $1 == '"' || has.call(qq, key), **kwargs, merge: true)
468
460
  opt = key
469
461
  else
@@ -621,7 +613,7 @@ module Squared
621
613
  else
622
614
  args.each { |val| remove val }
623
615
  end
624
- args = temp[0, index] + args + temp[index..-1]
616
+ args = temp[0, index] + args + temp[index..]
625
617
  target.clear
626
618
  end
627
619
  merge args
@@ -830,10 +822,6 @@ module Squared
830
822
  end
831
823
  end
832
824
 
833
- def style?(*args)
834
- !stdout && args.none?(&:!)
835
- end
836
-
837
825
  def uniq!(list)
838
826
  list = uniq list
839
827
  return if list.empty?
@@ -215,8 +215,8 @@ module Squared
215
215
  opts << '--force-checkout'
216
216
  when 'rebase', 'detach'
217
217
  opts << "--#{val}"
218
- when /^(fetch-)?submodules$/
219
- opts << '--fetch-submodules' if repo_submodules?(true, **envargs)
218
+ when /^(recurse-)?submodules$/
219
+ opts << '--recurse-submodules' if repo_submodules?(true, **envargs)
220
220
  when /^(fail-)?fast$/
221
221
  opts << '--fail-fast'
222
222
  when /^no-(manifest-)?update$/
@@ -228,7 +228,7 @@ module Squared
228
228
  if (jobs = ENV['REPO_JOBS']) || opts.none?(/^--?j(obs)?$/)
229
229
  opts << "-j#{jobs || Rake::CpuCounter.count}"
230
230
  end
231
- opts << '--fetch-submodules' if repo_submodules?(**envargs)
231
+ opts << '--recurse-submodules' if repo_submodules?(**envargs)
232
232
  begin
233
233
  repo_run('sync', opts, exception: opts.include?('--fail-fast'), options: stage != 'init')
234
234
  rescue Errno::ENOENT => e
@@ -262,7 +262,7 @@ module Squared
262
262
  return false unless root.directory?
263
263
 
264
264
  path = sub_style root, theme[:inline]
265
- @repo_override = case env('REPO_Y')
265
+ @repo_override = case __arg__('YES', 'REPO') || env('REPO_Y')
266
266
  when '0', 'false'
267
267
  false
268
268
  when '1', 'true'
@@ -345,7 +345,7 @@ module Squared
345
345
  def repo_opts(*args)
346
346
  return args unless (n = ARGV.index('--'))
347
347
 
348
- ARGV[n.succ..-1].concat(args)
348
+ ARGV[n.succ..].concat(args)
349
349
  end
350
350
 
351
351
  def repo_submodules?(val = false, **kwargs)
@@ -9,6 +9,7 @@ module Squared
9
9
  extend Forwardable
10
10
 
11
11
  attr_reader :sync, :multiple, :parallel
12
+ attr_writer :ref_min
12
13
 
13
14
  def_delegators :@data, :[], :each, :each_key, :keys, :key?, :include?, :fetch, :update, :merge!, :any?, :none?,
14
15
  :delete, :delete_if, :find, :find_all, :to_a, :to_s, :inspect
@@ -19,6 +20,7 @@ module Squared
19
20
  @sync = []
20
21
  @multiple = []
21
22
  @parallel = []
23
+ @ref_min = 2
22
24
  @chain = {}
23
25
  @exclude = exclude.freeze
24
26
  @task = Struct::SeriesData.new(workspace.config_get(:rename))
@@ -56,7 +58,7 @@ module Squared
56
58
  @session = {
57
59
  group: Support.hashlist,
58
60
  parent: Support.hashlist,
59
- id: []
61
+ id: Set.new
60
62
  }.freeze
61
63
  end
62
64
 
@@ -85,7 +87,7 @@ module Squared
85
87
 
86
88
  def build(parallel: [], pattern: [], **)
87
89
  subcheck = ->(val) { (ns = task_namespace(val)) && parallel.include?(ns) }
88
- update @session[:parent] if @session[:id].uniq.size > 1
90
+ update @session[:parent] if @session[:id].size >= @ref_min
89
91
  update @session[:group]
90
92
  each do |key, items|
91
93
  next if exclude?(key, empty: true) || @workspace.task_exclude?(t = name_get(key))
data/squared.gemspec CHANGED
@@ -11,21 +11,23 @@ Gem::Specification.new do |spec|
11
11
  spec.summary = "Rake task generator for managing multi-language workspaces."
12
12
  spec.description = "Rake task generator for managing multi-language workspaces."
13
13
  spec.homepage = "https://github.com/anpham6/squared-ruby"
14
- spec.required_ruby_version = Gem::Requirement.new(">= 2.5.0")
14
+ spec.required_ruby_version = Gem::Requirement.new(">= 2.7.0")
15
15
  spec.licenses = ["BSD-3-Clause"]
16
16
 
17
17
  spec.metadata["homepage_uri"] = spec.homepage
18
18
  spec.metadata["source_code_uri"] = spec.homepage
19
19
  spec.metadata["documentation_uri"] = "https://squared.readthedocs.io"
20
20
 
21
- spec.files = Dir["lib/**/*"] +
22
- %w[CHANGELOG.md LICENSE README.md squared.gemspec]
23
21
  spec.bindir = "exe"
24
- spec.executables = []
22
+ spec.executables = Dir["exe/*"].map { |f| File.basename(f) }
23
+
24
+ spec.files = Dir["exe/*"] + Dir["lib/**/*"] +
25
+ %w[CHANGELOG.md LICENSE README.md squared.gemspec]
25
26
  spec.require_paths = ["lib"]
26
27
 
27
28
  spec.add_dependency "rake"
29
+ spec.add_dependency "optparse"
28
30
  spec.add_dependency "logger"
29
31
  spec.add_dependency "rexml"
30
- spec.add_dependency "readline"
32
+ spec.add_dependency "reline"
31
33
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: squared
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.6
4
+ version: 0.9.0.pre1
5
5
  platform: ruby
6
6
  authors:
7
7
  - An Pham
@@ -23,6 +23,20 @@ dependencies:
23
23
  - - ">="
24
24
  - !ruby/object:Gem::Version
25
25
  version: '0'
26
+ - !ruby/object:Gem::Dependency
27
+ name: optparse
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
26
40
  - !ruby/object:Gem::Dependency
27
41
  name: logger
28
42
  requirement: !ruby/object:Gem::Requirement
@@ -52,7 +66,7 @@ dependencies:
52
66
  - !ruby/object:Gem::Version
53
67
  version: '0'
54
68
  - !ruby/object:Gem::Dependency
55
- name: readline
69
+ name: reline
56
70
  requirement: !ruby/object:Gem::Requirement
57
71
  requirements:
58
72
  - - ">="
@@ -68,13 +82,15 @@ dependencies:
68
82
  description: Rake task generator for managing multi-language workspaces.
69
83
  email:
70
84
  - anpham6@gmail.com
71
- executables: []
85
+ executables:
86
+ - sqd
72
87
  extensions: []
73
88
  extra_rdoc_files: []
74
89
  files:
75
90
  - CHANGELOG.md
76
91
  - LICENSE
77
92
  - README.md
93
+ - exe/sqd
78
94
  - lib/squared.rb
79
95
  - lib/squared/app.rb
80
96
  - lib/squared/common.rb
@@ -119,14 +135,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
119
135
  requirements:
120
136
  - - ">="
121
137
  - !ruby/object:Gem::Version
122
- version: 2.5.0
138
+ version: 2.7.0
123
139
  required_rubygems_version: !ruby/object:Gem::Requirement
124
140
  requirements:
125
141
  - - ">="
126
142
  - !ruby/object:Gem::Version
127
143
  version: '0'
128
144
  requirements: []
129
- rubygems_version: 4.0.20
145
+ rubygems_version: 4.0.21
130
146
  specification_version: 4
131
147
  summary: Rake task generator for managing multi-language workspaces.
132
148
  test_files: []