squared 0.1.3 → 0.2.0
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 +68 -1
- data/README.md +3 -0
- data/README.ruby.md +120 -40
- data/lib/squared/app.rb +0 -2
- data/lib/squared/common/base.rb +20 -14
- data/lib/squared/common/class.rb +18 -1
- data/lib/squared/common/format.rb +9 -9
- data/lib/squared/common/shell.rb +17 -8
- data/lib/squared/common/system.rb +56 -20
- data/lib/squared/common/utils.rb +5 -5
- data/lib/squared/config.rb +130 -82
- data/lib/squared/version.rb +1 -1
- data/lib/squared/workspace/application.rb +168 -51
- data/lib/squared/workspace/project/base.rb +341 -130
- data/lib/squared/workspace/project/git.rb +705 -270
- data/lib/squared/workspace/project/node.rb +174 -100
- data/lib/squared/workspace/project/python.rb +176 -61
- data/lib/squared/workspace/project/ruby.rb +337 -171
- data/lib/squared/workspace/repo.rb +35 -46
- data/lib/squared/workspace/series.rb +16 -14
- metadata +2 -2
@@ -13,20 +13,6 @@ module Squared
|
|
13
13
|
doc = REXML::Document.new(file.read)
|
14
14
|
doc.elements['manifest/include'].attributes['name']&.sub('.xml', '')
|
15
15
|
end
|
16
|
-
|
17
|
-
def empty?(dir)
|
18
|
-
return false unless dir.exist?
|
19
|
-
|
20
|
-
case dir.children.size
|
21
|
-
when 0
|
22
|
-
true
|
23
|
-
when 1
|
24
|
-
file = dir.children.first
|
25
|
-
file.to_s == __FILE__ || (file.directory? && file.basename.to_s == '.repo')
|
26
|
-
else
|
27
|
-
false
|
28
|
-
end
|
29
|
-
end
|
30
16
|
end
|
31
17
|
|
32
18
|
attr_reader :manifest_url, :manifest
|
@@ -126,38 +112,41 @@ module Squared
|
|
126
112
|
def __repo__(**kwargs)
|
127
113
|
kwargs.delete(:parallel) if env('REPO_SYNC', ignore: '0')
|
128
114
|
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
115
|
+
namespace(name = task_name('repo')) do |repo|
|
116
|
+
branch = env('REPO_MANIFEST') || Repo.read_manifest(root)
|
117
|
+
target = branch || manifest
|
118
|
+
stage = nil
|
119
|
+
failfast = true
|
120
|
+
cmd = []
|
121
|
+
newline = ARGV.index { |val| val.start_with?('repo:') }.to_i > 0
|
122
|
+
parse_opts = lambda do |args|
|
123
|
+
args.to_a.each do |val|
|
124
|
+
case val
|
125
|
+
when 'no-fail'
|
126
|
+
failfast = false
|
127
|
+
when 'force'
|
128
|
+
cmd << '--force-checkout'
|
129
|
+
when 'rebase'
|
130
|
+
cmd << '--rebase'
|
131
|
+
when 'detach'
|
132
|
+
cmd << '--detach'
|
133
|
+
when 'gc'
|
134
|
+
cmd << '--auto-gc'
|
135
|
+
when 'no-update'
|
136
|
+
cmd << '--no-manifest-update'
|
137
|
+
end
|
138
|
+
end
|
139
|
+
end
|
140
|
+
desc = lambda do |val, alt = nil|
|
141
|
+
if (ver = branch || alt)
|
142
|
+
val = val.sub('{0}', 'opts*=force,rebase,detach,gc,no-update,no-fail')
|
143
|
+
task_desc(task_name('repo'), val, ver)
|
144
|
+
else
|
145
|
+
task_desc 'inactive'
|
150
146
|
end
|
151
147
|
end
|
152
|
-
end
|
153
|
-
status = lambda do |val, alt = nil|
|
154
|
-
return 'inactive' unless (ver = branch || alt)
|
155
|
-
|
156
|
-
message(task_name('repo'), val.sub('{0}', 'opts*=force,rebase,detach,gc,no-update,no-fail'), ver)
|
157
|
-
end
|
158
148
|
|
159
|
-
|
160
|
-
desc status.('all[{0}]')
|
149
|
+
desc.('all[{0}]')
|
161
150
|
task 'all', [:opts] do |_, args|
|
162
151
|
parse_opts.(args)
|
163
152
|
stage ||= 'all'
|
@@ -172,7 +161,7 @@ module Squared
|
|
172
161
|
proj.build(sync: true)
|
173
162
|
next unless proj.dev? && proj.copy?
|
174
163
|
|
175
|
-
if (ws = proj.workspace).task_defined?(target =
|
164
|
+
if (ws = proj.workspace).task_defined?(target = task_join(proj.name, 'copy'))
|
176
165
|
task_invoke(target, **ws.invokeargs)
|
177
166
|
else
|
178
167
|
proj.copy
|
@@ -180,7 +169,7 @@ module Squared
|
|
180
169
|
end
|
181
170
|
end
|
182
171
|
|
183
|
-
desc
|
172
|
+
desc.("init[manifest?=#{target},{0}]", target)
|
184
173
|
task 'init', [:manifest, :opts] do |_, args|
|
185
174
|
parse_opts.(args)
|
186
175
|
stage = 'init'
|
@@ -189,7 +178,7 @@ module Squared
|
|
189
178
|
repo['all'].invoke
|
190
179
|
end
|
191
180
|
|
192
|
-
desc
|
181
|
+
desc.('sync[{0}]')
|
193
182
|
task 'sync', [:opts] do |_, args|
|
194
183
|
unless branch || stage == 'init'
|
195
184
|
raise_error('repo is not initialized', "rake #{task_name('repo:init')}", kind: LoadError)
|
@@ -50,7 +50,7 @@ module Squared
|
|
50
50
|
def base_set(obj)
|
51
51
|
TASK_BASE.clear
|
52
52
|
.concat((if TASK_KEYS.empty?
|
53
|
-
obj.tasks
|
53
|
+
obj.tasks
|
54
54
|
else
|
55
55
|
obj.tasks.reject { |val| TASK_KEYS.include?(val) }
|
56
56
|
end).freeze)
|
@@ -69,6 +69,7 @@ module Squared
|
|
69
69
|
attr_reader :sync, :multiple, :parallel
|
70
70
|
|
71
71
|
def_delegators :@data, :[], :each, :each_key, :keys, :fetch, :to_a, :to_s, :inspect, :merge!, :key?
|
72
|
+
def_delegators :@workspace, :task_desc, :task_name, :task_namespace, :task_join, :format_desc
|
72
73
|
|
73
74
|
def initialize(workspace)
|
74
75
|
@workspace = workspace
|
@@ -97,8 +98,7 @@ module Squared
|
|
97
98
|
items.concat(tasks)
|
98
99
|
end
|
99
100
|
if tasks.size > 1 && (data = batch_get(key)) && data.keys.any? { |ref| proj.ref?(ref) }
|
100
|
-
t = ws.task_join(proj.name, key)
|
101
|
-
desc Common::Format.message(*t.split(':'))
|
101
|
+
ws.task_desc(t = ws.task_join(proj.name, key))
|
102
102
|
task t => tasks
|
103
103
|
end
|
104
104
|
next unless (b = ws.find_base(proj)) && (n = b.ref.to_s) != g
|
@@ -109,30 +109,30 @@ module Squared
|
|
109
109
|
end
|
110
110
|
|
111
111
|
def build(parallel: [], pattern: [], **)
|
112
|
-
subcheck = ->(val) { (ns =
|
112
|
+
subcheck = ->(val) { (ns = task_namespace(val)) && parallel.include?(ns) }
|
113
113
|
@data.merge!(@session[:parent]) if @session[:id].uniq.size > 1
|
114
114
|
@data.merge!(@session[:group])
|
115
115
|
@data.each do |key, items|
|
116
116
|
next if items.empty?
|
117
117
|
|
118
|
-
key =
|
119
|
-
val =
|
118
|
+
key = task_name(t = name_get(key))
|
119
|
+
val = format_desc(key, out: true)
|
120
120
|
if items.size > 1
|
121
121
|
@multiple << key
|
122
|
-
if parallel.include?(t) || pattern.any? { |pat|
|
123
|
-
|
122
|
+
if parallel.include?(t) || pattern.any? { |pat| t =~ pat } || subcheck.(t)
|
123
|
+
task_desc("#{val} (thread)", name: key)
|
124
124
|
multitask key => items
|
125
125
|
@parallel << key
|
126
126
|
|
127
|
-
s =
|
128
|
-
|
127
|
+
s = task_join(key, 'sync')
|
128
|
+
task_desc("#{val} (sync)", name: s)
|
129
129
|
task s => items
|
130
130
|
@sync << s
|
131
131
|
next
|
132
132
|
end
|
133
133
|
end
|
134
134
|
|
135
|
-
|
135
|
+
task_desc(val, name: key)
|
136
136
|
task key => items
|
137
137
|
end
|
138
138
|
@multiple += sync
|
@@ -196,9 +196,11 @@ module Squared
|
|
196
196
|
private
|
197
197
|
|
198
198
|
def already_invoked?(list, val)
|
199
|
-
|
200
|
-
|
201
|
-
|
199
|
+
if val
|
200
|
+
list.include?(val) && Rake::Task[val].already_invoked
|
201
|
+
else
|
202
|
+
Rake::Task.tasks.any? { |obj| obj.already_invoked && list.include?(obj.name) }
|
203
|
+
end
|
202
204
|
end
|
203
205
|
end
|
204
206
|
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: squared
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- An Pham
|
8
8
|
bindir: exe
|
9
9
|
cert_chain: []
|
10
|
-
date: 2025-01-
|
10
|
+
date: 2025-01-07 00:00:00.000000000 Z
|
11
11
|
dependencies:
|
12
12
|
- !ruby/object:Gem::Dependency
|
13
13
|
name: rake
|