squared 0.1.11 → 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,16 +169,16 @@ 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'
185
176
  puts if newline
186
- Common::System.shell("repo init -u #{manifest_url} -m #{args.manifest || target}.xml", chdir: root)
177
+ system("repo init -u #{manifest_url} -m #{args.manifest || target}.xml", chdir: root)
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
@@ -1,10 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- version = File.read(File.join(__dir__, "lib/squared/version.rb"))[/\bVERSION = '(.+)'$/, 1]
3
+ require_relative "lib/squared/version"
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = "squared"
7
- spec.version = version
7
+ spec.version = Squared::VERSION
8
8
  spec.authors = ["An Pham"]
9
9
  spec.email = ["anpham6@gmail.com"]
10
10
 
@@ -19,7 +19,7 @@ Gem::Specification.new do |spec|
19
19
  spec.metadata["documentation_uri"] = "https://squared.readthedocs.io"
20
20
 
21
21
  spec.files = Dir["lib/**/*"] +
22
- %w[CHANGELOG.md LICENSE README.md squared.gemspec]
22
+ %w[CHANGELOG.md LICENSE README.md README.ruby.md squared.gemspec]
23
23
  spec.bindir = "exe"
24
24
  spec.executables = []
25
25
  spec.require_paths = ["lib"]
@@ -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,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: squared
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.11
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: 1980-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
@@ -51,20 +51,6 @@ dependencies:
51
51
  - - ">="
52
52
  - !ruby/object:Gem::Version
53
53
  version: '0'
54
- - !ruby/object:Gem::Dependency
55
- name: readline
56
- requirement: !ruby/object:Gem::Requirement
57
- requirements:
58
- - - ">="
59
- - !ruby/object:Gem::Version
60
- version: '0'
61
- type: :runtime
62
- prerelease: false
63
- version_requirements: !ruby/object:Gem::Requirement
64
- requirements:
65
- - - ">="
66
- - !ruby/object:Gem::Version
67
- version: '0'
68
54
  description: Rake task generator for managing multi-language workspaces.
69
55
  email:
70
56
  - anpham6@gmail.com
@@ -75,6 +61,7 @@ files:
75
61
  - CHANGELOG.md
76
62
  - LICENSE
77
63
  - README.md
64
+ - README.ruby.md
78
65
  - lib/squared.rb
79
66
  - lib/squared/app.rb
80
67
  - lib/squared/common.rb
@@ -119,7 +106,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
119
106
  - !ruby/object:Gem::Version
120
107
  version: '0'
121
108
  requirements: []
122
- rubygems_version: 3.6.9
109
+ rubygems_version: 3.6.2
123
110
  specification_version: 4
124
111
  summary: Rake task generator for managing multi-language workspaces.
125
112
  test_files: []