squared 0.5.3 → 0.5.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.
@@ -94,7 +94,7 @@ module Squared
94
94
  PATH.freeze
95
95
  ARG.freeze
96
96
  VAR.each_value(&:freeze)
97
- VAR[:theme].each_value(&:freeze)
97
+ VAR[:theme].each_value { |val| val.freeze.each_value(&:freeze) }
98
98
  VAR.freeze
99
99
  end
100
100
 
@@ -143,11 +143,11 @@ module Squared
143
143
  def apply_style(data, key, args, empty: true)
144
144
  return if data.is_a?(::Symbol) && (data = __get__(:theme)[data]).nil?
145
145
 
146
- set = ->(k, v) { data[k] = check_style(v, empty: empty) }
146
+ set = ->(k, v) { data[k.to_sym] = check_style(v, empty: empty) }
147
147
  if key.is_a?(::Hash)
148
148
  key.each { |k, v| set.call(k, v || args) }
149
149
  else
150
- set.call(key.to_sym, args)
150
+ set.call(key, args)
151
151
  end
152
152
  end
153
153
 
@@ -196,7 +196,7 @@ module Squared
196
196
  end
197
197
  end
198
198
 
199
- def puts_oe(*args, pipe: 1)
199
+ def log_console(*args, pipe: 1)
200
200
  return if args.first == false && args.size == 1
201
201
 
202
202
  if pipe.is_a?(Pathname)
@@ -213,6 +213,8 @@ module Squared
213
213
  (pipe == 2 ? $stderr : $stdout).puts(*args)
214
214
  end
215
215
 
216
+ alias puts_oe log_console
217
+
216
218
  module_function
217
219
 
218
220
  def message(*args, hint: nil, empty: false, space: ARG[:SPACE])
@@ -48,7 +48,7 @@ module Squared
48
48
  list.each do |val|
49
49
  next if grep&.none? { |pat| pat.match?(line) }
50
50
 
51
- items << val.chomp
51
+ items << val.to_s.chomp
52
52
  puts '%2d. %s' % [items.size, val]
53
53
  end
54
54
  max = items.size
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'shellwords'
4
3
  require 'rake'
4
+ require 'shellwords'
5
5
 
6
6
  module Squared
7
7
  module Common
@@ -31,13 +31,17 @@ module Squared
31
31
 
32
32
  "#{$1}=%s" % if $2.include?(' ')
33
33
  shell_quote($2, option: false)
34
+ elsif Rake::Win32.windows?
35
+ $2
34
36
  else
35
- Rake::Win32.windows? ? $2 : Shellwords.escape($2)
37
+ Shellwords.escape($2)
36
38
  end
37
39
  elsif Rake::Win32.windows?
38
40
  quote ? shell_quote(val, double: double, force: force) : val
41
+ elsif val.empty?
42
+ ''
39
43
  else
40
- val.empty? ? '' : Shellwords.escape(val)
44
+ Shellwords.escape(val)
41
45
  end
42
46
  end
43
47
 
@@ -92,6 +96,12 @@ module Squared
92
96
  ret.join(join.is_a?(::String) ? join : ' ')
93
97
  end
94
98
 
99
+ def shell_bin(name, env: true)
100
+ key = name.upcase
101
+ shell_quote((env && ENV["PATH_#{key}"]) || PATH[key] || PATH[key.to_sym] || name,
102
+ option: false, force: false)
103
+ end
104
+
95
105
  def line_width(lines)
96
106
  ret = [lines.max_by(&:size).size, 80].max
97
107
  [ret, Rake.application.terminal_width].min
@@ -12,9 +12,9 @@ module Squared
12
12
  if RUBY_ENGINE == 'jruby' && Rake::Win32.windows?
13
13
  e = kwargs[:exception]
14
14
  if (dir = kwargs[:chdir]) && ((pwd = Dir.pwd) != dir)
15
- Dir.chdir(dir)
15
+ Dir.chdir dir
16
16
  ret = Kernel.send(name, *args)
17
- Dir.chdir(pwd)
17
+ Dir.chdir pwd
18
18
  else
19
19
  ret = Kernel.send(name, *args)
20
20
  end
@@ -24,7 +24,7 @@ module Squared
24
24
  else
25
25
  return Kernel.send(name, *args, **kwargs)
26
26
  end
27
- return ret if ret || !e
27
+ return ret unless e && !ret && name == :system
28
28
 
29
29
  raise $?.to_s
30
30
  end
@@ -59,7 +59,7 @@ module Squared
59
59
  soft = 0
60
60
  subdir.each do |dir, files|
61
61
  if link
62
- files.dup.yield_self do |items|
62
+ files.dup.tap do |items|
63
63
  files.clear
64
64
  items.each do |file|
65
65
  if file.exist?
@@ -41,8 +41,8 @@ module Squared
41
41
  attr_reader :main, :name, :project, :theme
42
42
  attr_accessor :pipe
43
43
 
44
- def initialize(main, name = nil, project: nil, prefix: nil, command: nil, dump: nil, opts: {}, auto: true,
45
- common: ARG[:COMMON], pipe: ARG[:PIPE], **)
44
+ def initialize(main, name = nil, project: nil, command: nil, opts: {}, auto: true,
45
+ common: ARG[:COMMON], pipe: ARG[:PIPE], **kwargs)
46
46
  if project && (project.respond_to?(:workspace) || (project = __get__(:project)[project.to_s]))
47
47
  main = project.basepath(main).to_s
48
48
  @project = project
@@ -50,9 +50,9 @@ module Squared
50
50
  @required = true
51
51
  end
52
52
  @name = name || @project&.name
53
- @prefix = prefix unless @project
53
+ @prefix = kwargs[:prefix] unless @project
54
54
  @ext = File.extname(main)
55
- @dump = dump
55
+ @dump = kwargs[:dump]
56
56
  @mime = {}
57
57
  @theme = common ? __get__(:theme)[:viewer] : {}
58
58
  @pipe = env_pipe(pipe, @project ? @project.pipe : 1)
@@ -86,7 +86,7 @@ module Squared
86
86
  ['path not found', realpath]
87
87
  else
88
88
  @required = true
89
- project ? [project, 'not found'] : ['name', 'missing']
89
+ project ? [project, 'not found'] : %w[name missing]
90
90
  end
91
91
  warn log_message(Logger::WARN, msg, subject: self.class, hint: hint)
92
92
  end
@@ -94,10 +94,10 @@ module Squared
94
94
  def build
95
95
  return unless enabled?
96
96
 
97
- namespace(ns = task_name(name)) do
97
+ namespace task_name(name) do |ns|
98
98
  @mime.each do |type, items|
99
99
  items.each do |command, file, opts|
100
- next if Rake::Task.task_defined?("#{ns}:#{command}:#{type}")
100
+ next if Rake::Task.task_defined?("#{ns.scope.path}:#{command}:#{type}")
101
101
 
102
102
  namespace command do
103
103
  unless (data = @@mime_obj[type])
@@ -196,7 +196,7 @@ module Squared
196
196
  private
197
197
 
198
198
  def puts(*args)
199
- puts_oe(*args, pipe: pipe)
199
+ log_console(*args, pipe: pipe)
200
200
  end
201
201
 
202
202
  def log
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Squared
4
- VERSION = '0.5.3'
4
+ VERSION = '0.5.5'
5
5
  end
@@ -26,7 +26,7 @@ module Squared
26
26
  next unless base || obj < impl_project
27
27
 
28
28
  if base
29
- @impl_project = obj
29
+ self.impl_project = obj
30
30
  impl_series.base_set(obj)
31
31
  else
32
32
  kind_project.prepend(obj)
@@ -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
@@ -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.downcase == basename.downcase)
86
+ @home += @main unless @main == basename || (windows? && @main.casecmp?(basename))
87
87
  else
88
88
  @main = basename.freeze
89
89
  end
@@ -95,9 +95,15 @@ module Squared
95
95
  @kind = Support.hashlist
96
96
  @extensions = []
97
97
  @envname = env_key(@main).freeze
98
- @pipe = env_pipe(pipe, (ARG[:OUT] && env(ARG[:OUT])) || 1, root: @home)
98
+ @pipe = $DEBUG ? 2 : env_pipe(pipe, (ARG[:OUT] && env(ARG[:OUT])) || 1, root: @home)
99
99
  @exception = env_bool exception
100
- @verbose = env_bool(verbose, verbose.nil? || verbose.is_a?(String) ? @pipe != 0 : verbose, index: true)
100
+ @verbose = if $VERBOSE.nil?
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
101
107
  @warning = @verbose != false
102
108
  @closed = false
103
109
  if common
@@ -382,7 +388,15 @@ module Squared
382
388
  end
383
389
  end
384
390
  end
385
- apply_style(data || theme, obj, args, empty: empty) unless target && !data
391
+ if obj.is_a?(String)
392
+ begin
393
+ obj = JSON.parse(homepath(obj).read, { symbolize_names: true })
394
+ rescue StandardError => e
395
+ warn log_message(Logger::ERROR, e)
396
+ obj = nil
397
+ end
398
+ end
399
+ apply_style(data || theme, obj, args, empty: empty) if obj && (!target || data)
386
400
  self
387
401
  end
388
402
 
@@ -418,7 +432,7 @@ module Squared
418
432
  ret << proj if proj
419
433
  end
420
434
  end
421
- return (group || ref ? ret : ret[0]) unless block_given?
435
+ return (group || ref ? ret : ret.first) unless block_given?
422
436
 
423
437
  ret.each(&blk)
424
438
  self
@@ -673,6 +687,10 @@ module Squared
673
687
  { exception: exception, warning: warning }
674
688
  end
675
689
 
690
+ def size
691
+ @project.size
692
+ end
693
+
676
694
  def to_s
677
695
  (home? ? home : root).to_s
678
696
  end
@@ -686,9 +704,14 @@ module Squared
686
704
  private
687
705
 
688
706
  def __build__(default: nil, **)
689
- return unless default && task_defined?(out = task_name(default))
690
-
691
- task Rake.application.default_task_name => out
707
+ unless task_defined?('squared:version')
708
+ task 'squared:version' do
709
+ puts Squared::VERSION
710
+ end
711
+ end
712
+ if default && task_defined?(out = task_name(default))
713
+ task Rake.application.default_task_name => out
714
+ end
692
715
  end
693
716
 
694
717
  def __chain__(*)
@@ -790,8 +813,8 @@ module Squared
790
813
  format_desc key
791
814
  task key do
792
815
  unless failed.empty? && group.empty?
793
- puts log_message(Logger::ERROR, *(failed + group.map { |val| val.action }.flatten),
794
- subject: 'failed placement', hint: false)
816
+ puts(log_message(Logger::ERROR, *(failed + group.map { |val| val.action }.flatten),
817
+ subject: 'failed placement', hint: false), pipe: 2)
795
818
  end
796
819
  cols = level.flatten(1).map(&:size).max
797
820
  level.each_with_index do |grp, n|
@@ -807,8 +830,8 @@ module Squared
807
830
  end
808
831
  end
809
832
 
810
- def puts(*args)
811
- puts_oe(*args, pipe: pipe)
833
+ def puts(*args, **kwargs)
834
+ log_console(*args, pipe: kwargs[:pipe] || pipe)
812
835
  end
813
836
 
814
837
  def script_command(task, val, group, ref, on, &blk)