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.
@@ -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