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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +159 -61
- data/README.md +662 -1273
- data/lib/squared/common/base.rb +1 -1
- data/lib/squared/common/format.rb +5 -3
- data/lib/squared/common/prompt.rb +1 -1
- data/lib/squared/common/shell.rb +13 -3
- data/lib/squared/common/system.rb +4 -4
- data/lib/squared/config.rb +8 -8
- data/lib/squared/version.rb +1 -1
- data/lib/squared/workspace/application.rb +37 -14
- data/lib/squared/workspace/project/base.rb +143 -51
- data/lib/squared/workspace/project/docker.rb +68 -52
- data/lib/squared/workspace/project/git.rb +314 -208
- data/lib/squared/workspace/project/node.rb +42 -32
- data/lib/squared/workspace/project/python.rb +76 -30
- data/lib/squared/workspace/project/ruby.rb +121 -69
- data/lib/squared/workspace/project/support/class.rb +109 -15
- data/lib/squared/workspace/repo.rb +75 -48
- data/squared.gemspec +2 -2
- metadata +4 -5
- data/README.ruby.md +0 -724
data/lib/squared/common/base.rb
CHANGED
@@ -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
|
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
|
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])
|
data/lib/squared/common/shell.rb
CHANGED
@@ -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
|
-
|
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
|
-
|
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
|
15
|
+
Dir.chdir dir
|
16
16
|
ret = Kernel.send(name, *args)
|
17
|
-
Dir.chdir
|
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
|
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.
|
62
|
+
files.dup.tap do |items|
|
63
63
|
files.clear
|
64
64
|
items.each do |file|
|
65
65
|
if file.exist?
|
data/lib/squared/config.rb
CHANGED
@@ -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,
|
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'] : [
|
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
|
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
|
-
|
199
|
+
log_console(*args, pipe: pipe)
|
200
200
|
end
|
201
201
|
|
202
202
|
def log
|
data/lib/squared/version.rb
CHANGED
@@ -26,7 +26,7 @@ module Squared
|
|
26
26
|
next unless base || obj < impl_project
|
27
27
|
|
28
28
|
if base
|
29
|
-
|
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
|
-
|
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.
|
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 =
|
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
|
-
|
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
|
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
|
-
|
690
|
-
|
691
|
-
|
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
|
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
|
-
|
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)
|