squared 0.4.19 → 0.4.21

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,14 +7,13 @@ module Squared
7
7
  GEMFILE = %w[Gemfile Gemfile.lock gem.deps.rb gems.rb Isolate].freeze
8
8
  DIR_RUBY = (GEMFILE + Rake::Application::DEFAULT_RAKEFILES + ['README.rdoc']).freeze
9
9
  OPT_RUBY = {
10
- ruby: %w[0=im? a c e=q E=bm F=qm i=bm? I=pm l n p r=bm s S w W=bm? x=pm? d|debug jit rjit v|verbose y|yydebug
10
+ ruby: %w[0=im? a c e=q E=bm F=qm i=bm? I=pm l n p r=bm s S w W=bm? x=pm? d|debug jit rjit verbose y|yydebug
11
11
  backtrace-limit=i crash-report=q disable=q dump=q enable=q encoding=b external-encoding=b
12
12
  internal-encoding=b parser=b].freeze,
13
- rake: %w[A|all B|build-all comments n|dry-run p|execute-print=q m|multitask P|prereqs q|quiet
14
- X|no-deprecation-warnings N|no-search G|no-system nosearch nosystem rules s|silent g|system
15
- v|verbose backtrace=b? D|describe=q? e|execute=q E|execute-continue=q job-stats=b? j|jobs=i?
16
- I|libdir=p R|rakelib=p rakelibdir=p r|require=b suppress-backtrace=q T|tasks=q? t|trace=b?
17
- W|where=q?].freeze,
13
+ rake: %w[A|all B|build-all comments n|dry-run m|multitask P|prereqs q|quiet X|no-deprecation-warnings
14
+ N|no-search G|no-system nosearch nosystem rules s|silent g|system v|verbose backtrace=b?
15
+ D|describe=q? e|execute=q E|execute-continue=q p|execute-print=q job-stats=b? j|jobs=i? I|libdir=p
16
+ R|rakelib=p rakelibdir=p r|require=b suppress-backtrace=q T|tasks=q? t|trace=b? W|where=q?].freeze,
18
17
  irb: %w[d f U w E=b I=p r=b W=im? autocomplete colorize echo echo-on-assignment extra-doc-dir inf-ruby-mode
19
18
  inspect multiline no-pager noautocomplete nocolorize noecho noecho-on-assignment noinspect
20
19
  nomultiline noprompt noscript nosingleline noverbose regexp-completor sample-book-mode script
@@ -22,38 +21,41 @@ module Squared
22
21
  back-trace-limit=i context-mode=i prompt=b prompt-mode=b].freeze
23
22
  }.freeze
24
23
  OPT_BUNDLE = {
25
- common: %w[no-color V|verbose retry=i].freeze,
24
+ common: %w[no-color V|verbose r|retry=i].freeze,
26
25
  install: %w[frozen no-cache no-prune system binstubs=p? path=p standalone=q? target-rbconfig=p trust-policy=b
27
26
  with=q without=q].freeze,
28
- install_base: %w[force full-index quiet redownload retry gemfile=p j|jobs=i].freeze,
29
- update: %w[conservative local pre ruby strict bundler=b? g|group=q source=b].freeze,
27
+ install_base: %w[force full-index quiet redownload gemfile=p j|jobs=i].freeze,
28
+ update: %w[all conservative local major minor patch pre ruby strict bundler=b? g|group=q source=b].freeze,
30
29
  outdated: %w[filter-major filter-minor filter-patch groups local parseable pre only-explicit strict
31
- update-strict g|group=q source=b].freeze,
30
+ update-strict group=q source=b].freeze,
32
31
  exec: %w[gemfile=p].freeze,
33
- cache: %w[all-platforms frozen no-install no-prune quiet cache-path=p gemfile=p path=p].freeze,
34
- check: %w[dry-run gemfile=p].freeze
32
+ cache: %w[all all-platforms frozen no-all no-install no-prune quiet cache-path=p gemfile=p path=p].freeze,
33
+ check: %w[dry-run gemfile=p path=p].freeze
35
34
  }.freeze
36
35
  OPT_GEM = {
37
36
  common: %w[backtrace debug q|quiet no-verbose norc silent V|verbose config-file=p].freeze,
38
- install: %w[version=b].freeze,
39
- install_base: %w[f b|both clear-sources conservative default development development-all E|explain
40
- ignore-dependencies l|local N|no-document r|remote w|vendor n|bindir=p build-root=p
41
- bulk-threshold=i document=b? g|file=p? p|http-proxy=q i|install-dir=p platform=q s|source=q
42
- target-rbconfig=p? P|trust-policy=b without=b].freeze,
37
+ install: %w[version=q].freeze,
38
+ install_base: %w[E f w b|both clear-sources conservative default development development-all explain
39
+ ignore-dependencies l|local N|no-document r|remote vendor n|bindir=p build-root=p
40
+ B|bulk-threshold=i document=b? g|file=p? p|http-proxy=q? i|install-dir=p platform=q
41
+ s|source=q target-rbconfig=p? P|trust-policy=b without=b].freeze,
43
42
  update: %w[system=b?].freeze,
44
- uninstall: %w[a D I x vendor n|bindir=p i|install-dir=p platform=b v|version=b].freeze,
45
- outdated: %w[b|both clear-sources l|local no-http-proxy r|remote B|bulk-threshold=i p|http-proxy=q? platform=q
43
+ uninstall: %w[a D I x vendor n|bindir=p i|install-dir=p platform=b v|version=q].freeze,
44
+ outdated: %w[b|both clear-sources l|local r|remote B|bulk-threshold=i p|http-proxy=q? platform=q
46
45
  source=q].freeze,
47
- push: %w[no-http-proxy attestation=p host=q p|http-proxy=q? key=b otp=b].freeze,
48
- build: %w[force strict o|output=p platform=q].freeze,
49
- exec: %w[conservative no-prerelease prerelease g|gem=v version=b].freeze,
50
- pristine: %w[all only-executables only-missing-extensions only-plugins n|bindir=p i|install-dir=p skip=b
51
- v|version=b].freeze,
46
+ push: %w[attestation=p host=q p|http-proxy=q? k|key=b otp=b].freeze,
47
+ build: %w[C=p force strict o|output=p platform=q].freeze,
48
+ exec: %w[conservative g|gem=b v|version=q].freeze,
49
+ pristine: %w[E all only-executables only-missing-extensions only-plugins n|bindir=p i|install-dir=p skip=b
50
+ v|version=q].freeze,
52
51
  no: {
53
52
  install: %w[env-shebang force format-executable http-proxy lock minimal-deps post-install-message prerelease
54
53
  suggestions user-install wrappers].freeze,
55
54
  uninstall: %w[abort-on-dependent all check-development executables force format-executable
56
55
  ignore-dependencies user-install].freeze,
56
+ outdated: %w[http-proxy].freeze,
57
+ push: %w[http-proxy].freeze,
58
+ exec: %w[prerelease].freeze,
57
59
  pristine: %w[env-shebang extensions].freeze
58
60
  }.freeze
59
61
  }.freeze
@@ -67,7 +69,7 @@ module Squared
67
69
  end
68
70
 
69
71
  def bannerargs
70
- [:dependfile].freeze
72
+ %i[dependfile gemname].freeze
71
73
  end
72
74
 
73
75
  def config?(val)
@@ -105,9 +107,7 @@ module Squared
105
107
  @gemfile = if gemspec == false
106
108
  false
107
109
  elsif gemspec
108
- path + (gemspec.include?('.') ? gemspec : "#{gemspec}.gemspec")
109
- elsif (gemspec = path + "#{name}.gemspec").exist? || (gemspec = path + "#{project}.gemspec").exist?
110
- gemspec
110
+ basepath(gemspec.include?('.') ? gemspec : "#{gemspec}.gemspec")
111
111
  end
112
112
  return if !@output[0].nil? || !@copy.nil? || version || @autodetect || !rakefile
113
113
 
@@ -235,21 +235,26 @@ module Squared
235
235
  format_desc action, flag, 'path,opts*,args*'
236
236
  task flag, [:rb] do |_, args|
237
237
  file = args.rb
238
- args = args.extras
239
- unless file && !file.include?('*')
240
- file, opts, prog = choice_index('Select a file', Dir.glob(file || (path + '*.rb')),
241
- values: (file ? [] : ['Options']) << 'Arguments',
242
- force: true, series: !args.include?('v'))
243
- if file
244
- prog = opts
245
- else
246
- args.concat(OptionPartition.strip(opts))
247
- end
248
- end
249
- ruby(flag, args, file: file, args: prog)
238
+ opts = args.extras
239
+ args = if file && !file.include?('*')
240
+ ENV['RUBY_ARGS']
241
+ else
242
+ a, b, c = choice_index('Select a file', Dir.glob(file || path.join('*.rb')),
243
+ values: (file ? [] : ['Options']).push('Arguments'),
244
+ force: true, series: true)
245
+ if file
246
+ file = a
247
+ b
248
+ else
249
+ file = a
250
+ opts.concat(OptionPartition.strip(b))
251
+ c
252
+ end
253
+ end
254
+ ruby(flag, opts, file: file, args: args)
250
255
  end
251
256
  when :script
252
- format_desc action, flag, 'opts*,args*'
257
+ format_desc action, flag, 'opts*'
253
258
  task flag do |_, args|
254
259
  command = ENV['RUBY_E'] || readline('Enter script', force: true, multiline: ['##', ';'])
255
260
  ruby(flag, args.to_a, command: command)
@@ -302,7 +307,7 @@ module Squared
302
307
  print_item unless @output[0] || task_invoked?(/^copy(?::#{Ruby.ref}|$)/)
303
308
  glob = Array(glob || '**/*')
304
309
  Array(from).each_with_index do |val, i|
305
- a = path + val
310
+ a = basepath val
306
311
  b = dest + val
307
312
  c = glob[i] || glob.first
308
313
  log.info "cp #{a + c} #{b}"
@@ -439,7 +444,7 @@ module Squared
439
444
  if flag != :redownload
440
445
  op << '--redownload'
441
446
  elsif (lock = basepath('Gemfile.lock')).exist?
442
- config = basepath('.bundle', 'config')
447
+ config = basepath '.bundle', 'config'
443
448
  lock.delete unless config.exist? && config.read.match?(/\bBUNDLE_FROZEN:\s+"true"/)
444
449
  end
445
450
  end
@@ -458,11 +463,11 @@ module Squared
458
463
  when :file, :script
459
464
  op = OptionPartition.new(opts, OPT_RUBY[:ruby], ruby_session, project: self, args: true)
460
465
  if file
461
- op.unshift(shell_quote(path + file))
466
+ op.unshift(shell_quote(basepath(file)))
462
467
  elsif command
463
468
  op << quote_option('e', command, option: false)
464
469
  end
465
- op.push(args) if (args = ENV.fetch('RUBY_ARGS', args))
470
+ op.push(args) if args
466
471
  op.append(delim: true, escape: false, quote: false) unless op.empty?
467
472
  when :version
468
473
  pwd_set do
@@ -539,14 +544,14 @@ module Squared
539
544
  end
540
545
  return
541
546
  end
542
- run_rb(banner: op.arg?('v'), from: :"ruby:#{flag}")
547
+ run_rb(banner: false, from: :"ruby:#{flag}")
543
548
  end
544
549
 
545
550
  def gem!(flag, opts = [], filter: nil)
546
551
  cmd = gem_session
547
552
  case flag
548
553
  when :outdated
549
- cmd << gempwd << 'outdated'
554
+ cmd << gempwd << flag
550
555
  else
551
556
  cmd << flag
552
557
  end
@@ -559,12 +564,7 @@ module Squared
559
564
  cmd.merge(preopts)
560
565
  op = OptionPartition.new(opts, list, cmd, project: self, no: OPT_GEM[:no][flag])
561
566
  op.each do |opt|
562
- if opt =~ op.values
563
- case $1
564
- when 'g', 'gem'
565
- op << (flag == :exec ? shell_option($1, $2) : quote_option($1, path + $2))
566
- end
567
- elsif opt.include?('=') && !%i[outdated build push exec].include?(flag)
567
+ if !opt.match?(/\A[A-Za-z\d][A-Za-z\d_.-]*\z/) && %i[install uninstall update pristine].include?(flag)
568
568
  op.errors << opt
569
569
  else
570
570
  op.found << opt
@@ -573,17 +573,18 @@ module Squared
573
573
  op.swap
574
574
  case flag
575
575
  when :outdated
576
- log.info cmd.to_s
577
576
  op.clear
577
+ cmd = cmd.done
578
+ log.info cmd
578
579
  on :first, from
579
- print_item format_banner(cmd.to_s)
580
+ print_item format_banner(cmd)
580
581
  major = 0
581
582
  minor = 0
582
583
  patch = 0
583
584
  update = []
584
585
  pwd_set(pass: !gempwd.nil?, from: from) do
585
586
  items = [[%w[Gem Current Latest], nil]]
586
- IO.popen(cmd.done).each do |line|
587
+ IO.popen(cmd).each do |line|
587
588
  if line =~ /^(\S+) \((\S+) < ([^)]+)\)$/
588
589
  cur = semscan $2
589
590
  lat = semscan $3
@@ -702,6 +703,7 @@ module Squared
702
703
  return
703
704
  when :build
704
705
  if op.empty?
706
+ raise_error('gemspec not found', hint: project) unless gemfile
705
707
  op.add_path(gemfile)
706
708
  else
707
709
  op.add_path(op.shift)
@@ -709,16 +711,17 @@ module Squared
709
711
  end
710
712
  when :push
711
713
  if op.empty?
712
- file = path + (if (spec = gemspec)
713
- "#{spec.name}-#{spec.version}.gem"
714
- else
715
- choice_index('Select a file', Dir.glob('*.gem', base: path), force: true)
716
- end)
714
+ file = basepath(if (spec = gemspec)
715
+ "#{spec.name}-#{spec.version}.gem"
716
+ else
717
+ gems = Dir.glob(basepath('*.gem')).map { |val| File.basename(val) }
718
+ choice_index('Select a file', gems, force: true)
719
+ end)
717
720
  else
718
- file = path + op.shift
719
- raise_error('gem not found', hint: file) unless file.exist?
721
+ file = op.shift
720
722
  raise_error("unknown args: #{op.join(', ')}", hint: flag) unless op.empty?
721
723
  end
724
+ raise_error('gem not found', hint: file) unless op.exist?(file)
722
725
  op.add_path(file)
723
726
  run_rb(from: from, interactive: "Push #{sub_style(gemname, styles: theme[:active])}")
724
727
  return
@@ -738,41 +741,40 @@ module Squared
738
741
  op.append(quote: false)
739
742
  when :update
740
743
  unless op.arg?('system')
741
- op.push(gemname) if op.empty?
742
- op.adjoin
744
+ if op.empty?
745
+ op << gemname
746
+ else
747
+ op.append
748
+ end
743
749
  end
744
750
  op.clear(errors: true)
745
- else
751
+ when :install, :uninstall, :pristine
746
752
  raise_error('missing gemname', hint: flag) if op.empty?
747
- case flag
748
- when :install, :uninstall, :pristine
749
- post = readline('Enter command [args]', force: true) if flag == :install && op.remove(':')
750
- if op.arg?('all')
751
- if flag == :pristine
752
- append_repeat 'skip', op.extras
753
- op.reset
754
- else
755
- op.clear
756
- end
757
- elsif (n = op.extras.find_index { |val| val.match?(/(\A|[a-z])@\d/) })
758
- items = op.extras.to_a
759
- name = items.delete_at(n)
760
- if (n = name.index('@')) == 0
761
- pre = gemname
762
- ver = name[1..-1]
763
- else
764
- pre = name[0, n]
765
- ver = name[(n + 1)..-1]
766
- end
767
- op.adjoin(pre, shell_option('version', ver))
768
- .clear(items)
769
- .reset
770
- elsif flag != :install
771
- op.adjoin
753
+ if op.arg?('all')
754
+ if flag == :pristine
755
+ append_repeat 'skip', op.extras
756
+ op.reset
757
+ else
758
+ op.clear
772
759
  end
760
+ elsif (n = op.index { |val| val.match?(/(\A|[a-z])@\d/) })
761
+ name = op.delete_at(n)
762
+ pre, ver = if (n = name.index('@')) == 0
763
+ [gemname, name[1..-1]]
764
+ else
765
+ [name[0, n], name[(n + 1)..-1]]
766
+ end
767
+ op.adjoin(pre, shell_option('version', ver))
768
+ .clear
769
+ elsif flag == :install
770
+ op.append_any
771
+ else
772
+ op.append
773
773
  end
774
- op.append.clear(errors: true)
775
- op << '--' << post if post
774
+ op.clear(errors: true)
775
+ op << '--' << readline('Enter command [args]', force: true) if flag == :install && op.remove(':')
776
+ else
777
+ op.append
776
778
  end
777
779
  run_rb(from: from)
778
780
  end
@@ -782,26 +784,24 @@ module Squared
782
784
  args = case flag
783
785
  when 'exec', 'cache', 'check'
784
786
  list = OPT_BUNDLE[flag.to_sym] + OPT_BUNDLE[:common]
785
- OptionPartition.new(args, list, cmd, project: self, args: flag == :exec).extras
787
+ OptionPartition.new(args, list, cmd, project: self, args: flag == 'exec').extras
786
788
  else
787
789
  args.flatten
788
790
  end
789
791
  case flag
790
792
  when 'exec', 'config'
791
- if args.empty?
792
- cmd << readline('Enter arguments', force: true)
793
- else
794
- args << command_args(args)
795
- cmd.merge(args)
796
- end
797
- else
793
+ cmd << readline('Enter arguments', force: true) if args.empty?
794
+ when 'cache', 'check'
798
795
  option_clear args
796
+ args.clear
799
797
  end
798
+ cmd.merge(args)
800
799
  run(from: :"bundle:#{flag}")
801
800
  end
802
801
 
803
802
  def rake(*args, opts: [])
804
- op = OptionPartition.new(opts, OPT_RUBY[:rake], [quote_option('f', rakefile)], project: self)
803
+ op = OptionPartition.new(opts, OPT_RUBY[:rake], [(quote_option('f', rakefile) if rakefile)].compact,
804
+ project: self)
805
805
  args.concat(op.extras)
806
806
  if args.empty?
807
807
  args << nil
@@ -831,8 +831,8 @@ module Squared
831
831
  def gemspec
832
832
  return @gemspec unless @gemspec.nil?
833
833
 
834
- @gemspec = if (file = gemfile)
835
- Gem::Specification.load(file.to_s) rescue false
834
+ @gemspec = if gemfile
835
+ Gem::Specification.load(gemfile.to_s) rescue false
836
836
  else
837
837
  false
838
838
  end
@@ -998,14 +998,14 @@ module Squared
998
998
  end
999
999
 
1000
1000
  def variables
1001
- (super + %i[version autodetect]).freeze
1001
+ (super + %i[autodetect]).freeze
1002
1002
  end
1003
1003
 
1004
1004
  def rakefile
1005
1005
  return @rakefile unless @rakefile.nil?
1006
1006
 
1007
1007
  file = Rake::Application::DEFAULT_RAKEFILES.find { |val| basepath(val).exist? }
1008
- @rakefile = file ? path + file : false
1008
+ @rakefile = file ? basepath(file) : false
1009
1009
  end
1010
1010
 
1011
1011
  def rakepwd
@@ -1036,8 +1036,8 @@ module Squared
1036
1036
  def gemfile
1037
1037
  return @gemfile unless @gemfile.nil?
1038
1038
 
1039
- @gemfile = [project, name].map! { |val| path + "#{val}.gemspec" }
1040
- .concat(path.glob('*.gemspec'))
1039
+ @gemfile = [project, name].map! { |val| basepath("#{val}.gemspec") }
1040
+ .concat(Dir.glob(basepath('*.gemspec')))
1041
1041
  .find { |file| File.exist?(file) } || false
1042
1042
  end
1043
1043