squared 0.1.7 → 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.
@@ -3,6 +3,8 @@
3
3
  module Squared
4
4
  module Workspace
5
5
  module Repo
6
+ include Common::Format
7
+
6
8
  class << self
7
9
  def read_manifest(path)
8
10
  require 'rexml/document'
@@ -11,20 +13,6 @@ module Squared
11
13
  doc = REXML::Document.new(file.read)
12
14
  doc.elements['manifest/include'].attributes['name']&.sub('.xml', '')
13
15
  end
14
-
15
- def empty?(dir)
16
- return false unless dir.exist?
17
-
18
- case dir.children.size
19
- when 0
20
- true
21
- when 1
22
- file = dir.children.first
23
- file.to_s == __FILE__ || (file.directory? && file.basename.to_s == '.repo')
24
- else
25
- false
26
- end
27
- end
28
16
  end
29
17
 
30
18
  attr_reader :manifest_url, :manifest
@@ -124,38 +112,41 @@ module Squared
124
112
  def __repo__(**kwargs)
125
113
  kwargs.delete(:parallel) if env('REPO_SYNC', ignore: '0')
126
114
 
127
- branch = env('REPO_MANIFEST') || Repo.read_manifest(root)
128
- target = branch || manifest
129
- stage = nil
130
- failfast = true
131
- cmd = []
132
- newline = ARGV.index { |val| val.start_with?('repo:') }.to_i > 0
133
- parse_opts = lambda do |args|
134
- args.to_a.each do |val|
135
- case val
136
- when 'no-fail'
137
- failfast = false
138
- when 'force'
139
- cmd << '--force-checkout'
140
- when 'rebase'
141
- cmd << '--rebase'
142
- when 'detach'
143
- cmd << '--detach'
144
- when 'gc'
145
- cmd << '--auto-gc'
146
- when 'no-update'
147
- 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'
148
146
  end
149
147
  end
150
- end
151
- status = lambda do |val, alt = nil|
152
- return 'inactive' unless (ver = branch || alt)
153
-
154
- message(task_name('repo'), val.sub('{0}', 'opts*=force,rebase,detach,gc,no-update,no-fail'), ver)
155
- end
156
148
 
157
- namespace(name = task_name('repo')) do |repo|
158
- desc status.('all[{0}]')
149
+ desc.('all[{0}]')
159
150
  task 'all', [:opts] do |_, args|
160
151
  parse_opts.(args)
161
152
  stage ||= 'all'
@@ -170,7 +161,7 @@ module Squared
170
161
  proj.build(sync: true)
171
162
  next unless proj.dev? && proj.copy?
172
163
 
173
- 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'))
174
165
  task_invoke(target, **ws.invokeargs)
175
166
  else
176
167
  proj.copy
@@ -178,7 +169,7 @@ module Squared
178
169
  end
179
170
  end
180
171
 
181
- desc status.("init[manifest?=#{target},{0}]", target)
172
+ desc.("init[manifest?=#{target},{0}]", target)
182
173
  task 'init', [:manifest, :opts] do |_, args|
183
174
  parse_opts.(args)
184
175
  stage = 'init'
@@ -187,7 +178,7 @@ module Squared
187
178
  repo['all'].invoke
188
179
  end
189
180
 
190
- desc status.('sync[{0}]')
181
+ desc.('sync[{0}]')
191
182
  task 'sync', [:opts] do |_, args|
192
183
  unless branch || stage == 'init'
193
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
 
data/squared.gemspec CHANGED
@@ -27,5 +27,4 @@ Gem::Specification.new do |spec|
27
27
  spec.add_dependency "rake"
28
28
  spec.add_dependency "logger"
29
29
  spec.add_dependency "rexml"
30
- spec.add_dependency "readline"
31
30
  end
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: squared
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - An Pham
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2025-04-28 00:00:00.000000000 Z
10
+ date: 2025-01-07 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: rake
@@ -52,20 +51,6 @@ dependencies:
52
51
  - - ">="
53
52
  - !ruby/object:Gem::Version
54
53
  version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: readline
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :runtime
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
54
  description: Rake task generator for managing multi-language workspaces.
70
55
  email:
71
56
  - anpham6@gmail.com
@@ -107,7 +92,6 @@ metadata:
107
92
  homepage_uri: https://github.com/anpham6/squared
108
93
  source_code_uri: https://github.com/anpham6/squared
109
94
  documentation_uri: https://squared.readthedocs.io
110
- post_install_message:
111
95
  rdoc_options: []
112
96
  require_paths:
113
97
  - lib
@@ -122,8 +106,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
122
106
  - !ruby/object:Gem::Version
123
107
  version: '0'
124
108
  requirements: []
125
- rubygems_version: 3.3.27
126
- signing_key:
109
+ rubygems_version: 3.6.2
127
110
  specification_version: 4
128
111
  summary: Rake task generator for managing multi-language workspaces.
129
112
  test_files: []