squared 0.1.1 → 0.1.3

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.
@@ -7,9 +7,9 @@ module Squared
7
7
  VAR_SET = %i[version autodetect].freeze
8
8
  GEMFILE = %w[Gemfile Gemfile.lock gem.deps.rb Isolate].freeze
9
9
  RUBY_DIR = (GEMFILE + Rake::Application::DEFAULT_RAKEFILES + ['README.rdoc']).freeze
10
- OPT_INSTALL = %w[no-cache force].freeze
11
- OPT_UPDATE = %w[redownload local strict conservative group=s].freeze
12
- OPT_OUTDATED = %w[local strict pre only-explicit group=s].freeze
10
+ OPT_INSTALL = %w[system frozen no-cache no-prune].freeze
11
+ OPT_UPDATE = %w[all redownload conservative local strict group=s].freeze
12
+ OPT_OUTDATED = %w[pre only-explicit local strict group=s].freeze
13
13
  private_constant :VAR_SET, :GEMFILE, :RUBY_DIR, :OPT_INSTALL, :OPT_UPDATE, :OPT_OUTDATED
14
14
 
15
15
  class << self
@@ -103,9 +103,10 @@ module Squared
103
103
  elsif exception
104
104
  indexerror n, list
105
105
  else
106
- next log.warn "rake task #{n} of #{list.size} (out of range)"
106
+ log.warn "rake task #{n} of #{list.size} (out of range)"
107
+ next
107
108
  end
108
- rake(args.extras.empty? ? cmd : "#{cmd}[#{args.extras.join(',')}]")
109
+ rake(args.extras.empty? ? cmd : "#{cmd}#{shell_escape("[#{args.extras.join(',')}]")}")
109
110
  else
110
111
  rake(*args.to_a)
111
112
  end
@@ -177,25 +178,25 @@ module Squared
177
178
  gem_session 'install'
178
179
  append_value opts
179
180
  when :with, :without
180
- gem_session 'install'
181
+ bundle_session 'install'
181
182
  append_repeat flag, opts
182
183
  when :redownload, :local, :'prefer-local'
183
184
  cmd = bundle_session 'install', "--#{flag}"
184
185
  if (val = option('trust-policy', ignore: false))
185
- cmd << "--trust-policy=#{case val
186
- when '0'
187
- 'NoSecurity'
188
- when '1'
189
- 'AlmostNoSecurity'
190
- when '2'
191
- 'LowSecurity'
192
- when '3'
193
- 'MediumSecurity'
194
- when '4'
195
- 'HighSecurity'
196
- else
197
- val
198
- end}"
186
+ cmd << shell_option('trust-policy', case val
187
+ when '0'
188
+ 'NoSecurity'
189
+ when '1'
190
+ 'AlmostNoSecurity'
191
+ when '2'
192
+ 'LowSecurity'
193
+ when '3'
194
+ 'MediumSecurity'
195
+ when '4'
196
+ 'HighSecurity'
197
+ else
198
+ val
199
+ end, escape: false)
199
200
  end
200
201
  append_bundle opts, OPT_INSTALL
201
202
  else
@@ -218,7 +219,7 @@ module Squared
218
219
  return unless into
219
220
 
220
221
  dest = Pathname.new(into).realpath
221
- print_item unless @output[0] || task_invoked?(/^copy(?::#{Ruby.ref}|$)/)
222
+ print_item unless @output[0] || task_invoked?(/\Acopy(?::#{Ruby.ref}|\z)/)
222
223
  glob = as_a(glob || '**/*')
223
224
  as_a(from).each_with_index do |val, i|
224
225
  a = basepath(val)
@@ -235,14 +236,13 @@ module Squared
235
236
  cmd = session_done(cmd)
236
237
  log.info cmd
237
238
  banner = format_banner(cmd)
238
- if sync
239
- print_item banner
240
- banner = nil
241
- end
239
+ print_item banner if sync
242
240
  start = 0
243
241
  found = 0
244
242
  major = 0
245
243
  pwd_set do
244
+ buffer = []
245
+ out = ->(val) { sync ? puts(val) : buffer << val }
246
246
  IO.popen("#{cmd} --no-color").each do |line|
247
247
  if start > 0
248
248
  unless stdin?
@@ -302,24 +302,24 @@ module Squared
302
302
  when :yellow
303
303
  found += 1
304
304
  end
305
- styles = styles.compact
306
- .map { |s| s == :green || s == :yellow ? color(s) : s }
307
- .flatten
308
- line = sub_style(line, pat: /^((?:\S+\s+){2})(#{Regexp.escape(l)})(.*)$/, styles: styles,
309
- index: 2)
305
+ styles = styles.compact.map { |s| color(s) }.flatten
306
+ line = sub_style(line, pat: /^((?:\S+\s+){2})(#{Regexp.escape(l)})(.*)$/, index: 2, styles: styles)
310
307
  end
311
308
  end
312
- puts "#{start.to_s.rjust(2)}. #{line}"
309
+ out.("#{start.to_s.rjust(2)}. #{line}")
313
310
  start += 1
314
311
  elsif line =~ /^Gem /
315
- print_item banner if banner
316
312
  unless stdin?
317
313
  sub = { pat: /^(.+)(?<!\dm)(Gem|Latest)(.+)$/, styles: theme[:header], index: 2 }
318
- puts print_footer(" # #{line.chomp}", reverse: true, sub: [sub, sub])
314
+ out.(print_footer(" # #{line.chomp}", reverse: true, sub: [sub, sub]))
319
315
  end
320
316
  start += 1
321
317
  end
322
318
  end
319
+ unless sync
320
+ print_item banner
321
+ puts buffer
322
+ end
323
323
  if found > 0
324
324
  begin
325
325
  if major == 0 && (data = /\b(?:source\s+(["'])(.+?)\1|remote:\s+(\S+))/.match(dependfile.read))
@@ -353,7 +353,7 @@ module Squared
353
353
  cmd << '--all'
354
354
  append_repeat 'skip', opts
355
355
  when :version
356
- cmd << project << "--version=#{shell_escape(version)}"
356
+ cmd << project << shell_option('version', version)
357
357
  end
358
358
  run_rb
359
359
  end
@@ -364,11 +364,11 @@ module Squared
364
364
  end
365
365
 
366
366
  def rake(*cmd)
367
- file = shell_quote(Rake.application.rakefile)
367
+ rakefile = shell_option('rakefile', Rake.application.rakefile, quote: true, escape: false)
368
368
  if cmd.empty?
369
- run_s("rake --rakefile=#{file}", chdir: workspace.pwd)
369
+ run_s("rake #{rakefile}", chdir: workspace.pwd)
370
370
  else
371
- run_s(*cmd.map { |val| "rake --rakefile=#{file} #{val}" }, chdir: workspace.pwd, banner: false)
371
+ run_s(*cmd.map { |val| "rake #{rakefile} #{val}" }, chdir: workspace.pwd, banner: false)
372
372
  end
373
373
  end
374
374
 
@@ -429,7 +429,7 @@ module Squared
429
429
  if list.include?(opt)
430
430
  @session << "--#{opt}"
431
431
  elsif opt.match(/^g(?:roup)?=(.+)$/)
432
- @session << "--group=#{shell_escape($1)}"
432
+ @session << shell_option('group', $1)
433
433
  end
434
434
  end
435
435
  end
@@ -437,7 +437,7 @@ module Squared
437
437
  def gem_session(*cmd)
438
438
  ret = session('gem', *cmd)
439
439
  if (val = option('config-file', ignore: false))
440
- ret << "--config-file=#{shell_escape(basepath(val), quote: true)}"
440
+ ret << shell_option('config-file', basepath(val), quote: true)
441
441
  end
442
442
  ret << '--norc' if option('norc')
443
443
  ret
@@ -456,7 +456,7 @@ module Squared
456
456
  pass = Rake::VERSION >= '13.0.4'
457
457
  pwd_set(pass: pass) do
458
458
  IO.popen("rake#{pass ? " -C #{shell_quote(path)}" : ''} -AT").each do |line|
459
- next unless (data = /^rake ((?:[^\[: ]+:?)+)(\[[^\]]+\])?/.match(line))
459
+ next unless (data = /\Arake ((?:[^\[: ]+:?)+)(\[[^\]]+\])?/.match(line))
460
460
 
461
461
  ret << [data[1], data[2]]
462
462
  end
@@ -33,11 +33,11 @@ module Squared
33
33
 
34
34
  def repo(url, manifest = 'latest', run: nil, script: nil, dev: nil, prod: nil, ref: @ref, group: @group)
35
35
  @home = if (val = env('REPO_HOME'))
36
- home = Pathname.new(val)
37
- if main == home.basename.to_s
38
- @root = home.parent
39
- if home.exist?
40
- @root = nil unless home.directory?
36
+ path = Pathname.new(val)
37
+ if main == path.basename.to_s
38
+ @root = path.parent
39
+ if path.exist?
40
+ @root = nil unless path.directory?
41
41
  elsif !@root.exist?
42
42
  @root.mkpath
43
43
  elsif !repo_install?
@@ -45,7 +45,7 @@ module Squared
45
45
  end
46
46
  end
47
47
  raise_error('REPO_HOME', val, hint: 'invalid') unless @root
48
- home.realdirpath
48
+ path.realdirpath
49
49
  elsif (val = env('REPO_ROOT'))
50
50
  @root = Pathname.new(val).realdirpath
51
51
  if !@root.exist?
@@ -54,12 +54,12 @@ module Squared
54
54
  raise_error('REPO_ROOT', val, hint: 'exist') unless repo_confirm
55
55
  end
56
56
  @root.join(main).realdirpath
57
+ elsif repo_install?(parent: true) && (!@home.exist? || @root.join(main) == @home)
58
+ @home
57
59
  elsif repo_install?(@home)
58
60
  @home.join(main)
59
- elsif @home != pwd && repo_install?(pwd)
60
- pwd.join(main)
61
61
  else
62
- @home
62
+ (path = pwd) == @home || !repo_install?(path) ? @home : path.join(main)
63
63
  end
64
64
  @root = @home.parent
65
65
  @manifest_url = url
@@ -106,7 +106,7 @@ module Squared
106
106
  found = true
107
107
  end
108
108
  script_set(data, group: group, ref: ref) unless found
109
- @warning = env_match('REPO_WARN', @warning && !Repo.empty?(@root), suffix: @envname) != false
109
+ @warning = env_match('REPO_WARN', @warning && !root?(@root, pass: ['.repo']), suffix: @envname) != false
110
110
  @extensions << :__repo__
111
111
  elsif script || run
112
112
  if script
@@ -153,7 +153,7 @@ module Squared
153
153
  status = lambda do |val, alt = nil|
154
154
  return 'inactive' unless (ver = branch || alt)
155
155
 
156
- message(@prefix, 'repo', val.sub('{0}', 'opts*=force,rebase,detach,gc,no-update,no-fail'), ver, empty: true)
156
+ message(task_name('repo'), val.sub('{0}', 'opts*=force,rebase,detach,gc,no-update,no-fail'), ver)
157
157
  end
158
158
 
159
159
  namespace(name = task_name('repo')) do |repo|
@@ -230,7 +230,7 @@ module Squared
230
230
  end
231
231
 
232
232
  def repo_install?(dir = root, parent: false)
233
- return true if Repo.empty?(dir) || dir.join('.repo').directory?
233
+ return true if root?(dir, pass: ['.repo']) || dir.join('.repo').directory?
234
234
 
235
235
  parent && root.children.none? { |ent| ent.directory? && ent.basename.to_s[0] != '.' && ent != home }
236
236
  end
@@ -97,8 +97,9 @@ module Squared
97
97
  items.concat(tasks)
98
98
  end
99
99
  if tasks.size > 1 && (data = batch_get(key)) && data.keys.any? { |ref| proj.ref?(ref) }
100
- desc ws.task_name(t = ws.task_join(proj.name, key), desc: true)
101
- task ws.task_name(t) => tasks
100
+ t = ws.task_join(proj.name, key)
101
+ desc Common::Format.message(*t.split(':'))
102
+ task t => tasks
102
103
  end
103
104
  next unless (b = ws.find_base(proj)) && (n = b.ref.to_s) != g
104
105
 
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: squared
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - An Pham
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2024-12-15 00:00:00.000000000 Z
10
+ date: 2025-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: rake
@@ -93,7 +92,6 @@ metadata:
93
92
  homepage_uri: https://github.com/anpham6/squared
94
93
  source_code_uri: https://github.com/anpham6/squared
95
94
  documentation_uri: https://squared.readthedocs.io
96
- post_install_message:
97
95
  rdoc_options: []
98
96
  require_paths:
99
97
  - lib
@@ -108,8 +106,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
108
106
  - !ruby/object:Gem::Version
109
107
  version: '0'
110
108
  requirements: []
111
- rubygems_version: 3.5.22
112
- signing_key:
109
+ rubygems_version: 3.6.2
113
110
  specification_version: 4
114
111
  summary: Rake task generator for managing multi-language workspaces.
115
112
  test_files: []