squared 0.1.3 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
- branch = env('REPO_MANIFEST') || Repo.read_manifest(root)
130
- target = branch || manifest
131
- stage = nil
132
- failfast = true
133
- cmd = []
134
- newline = ARGV.index { |val| val.start_with?('repo:') }.to_i > 0
135
- parse_opts = lambda do |args|
136
- args.to_a.each do |val|
137
- case val
138
- when 'no-fail'
139
- failfast = false
140
- when 'force'
141
- cmd << '--force-checkout'
142
- when 'rebase'
143
- cmd << '--rebase'
144
- when 'detach'
145
- cmd << '--detach'
146
- when 'gc'
147
- cmd << '--auto-gc'
148
- when 'no-update'
149
- cmd << '--no-manifest-update'
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
- namespace(name = task_name('repo')) do |repo|
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 = ws.task_name(task_join(proj.name, 'copy')))
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 status.("init[manifest?=#{target},{0}]", target)
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 status.('sync[{0}]')
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.dup
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 = @workspace.task_namespace(val)) && parallel.include?(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 = @workspace.task_name(t = name_get(key))
119
- val = @workspace.task_name(t, desc: true)
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| pat.match?(t) } || subcheck.(t)
123
- desc "#{val} (thread)"
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 = @workspace.task_join(key, 'sync')
128
- desc "#{val} (sync)"
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
- desc val
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
- return false if val && !list.include?(val)
200
-
201
- Rake::Task.tasks.any? { |obj| obj.already_invoked && (val ? val == obj.name : list.include?(obj.name)) }
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.1.3
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-02 00:00:00.000000000 Z
10
+ date: 2025-01-07 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: rake