squared 0.0.6 → 0.0.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.ruby.md +30 -8
- data/lib/squared/common/base.rb +14 -8
- data/lib/squared/common/class.rb +5 -1
- data/lib/squared/common/format.rb +48 -45
- data/lib/squared/common/shell.rb +3 -3
- data/lib/squared/common/system.rb +35 -3
- data/lib/squared/common/task.rb +1 -9
- data/lib/squared/config.rb +3 -4
- data/lib/squared/version.rb +1 -1
- data/lib/squared/workspace/application.rb +79 -83
- data/lib/squared/workspace/project/base.rb +100 -57
- data/lib/squared/workspace/project/git.rb +21 -21
- data/lib/squared/workspace/project/node.rb +62 -52
- data/lib/squared/workspace/project/python.rb +9 -16
- data/lib/squared/workspace/project/ruby.rb +211 -63
- data/lib/squared/workspace/project.rb +4 -0
- data/lib/squared/workspace/repo.rb +20 -16
- data/lib/squared/workspace/series.rb +14 -12
- data/lib/squared/workspace.rb +3 -1
- metadata +2 -2
@@ -36,7 +36,7 @@ module Squared
|
|
36
36
|
|
37
37
|
def find(path: nil, ref: nil)
|
38
38
|
if ref.is_a?(::Symbol) || ref.is_a?(::String)
|
39
|
-
ret = project_kind.find { |proj| proj.
|
39
|
+
ret = project_kind.find { |proj| proj.ref == ref.to_sym }
|
40
40
|
return ret if ret
|
41
41
|
end
|
42
42
|
project_kind.find { |proj| proj.is_a?(path) } if path
|
@@ -51,14 +51,14 @@ module Squared
|
|
51
51
|
|
52
52
|
@project_kind = []
|
53
53
|
|
54
|
-
attr_reader :main, :root, :home, :series, :theme
|
55
|
-
attr_accessor :exception, :pipe, :verbose
|
54
|
+
attr_reader :main, :root, :home, :series, :theme
|
55
|
+
attr_accessor :exception, :warning, :pipe, :verbose
|
56
56
|
|
57
|
-
def initialize(main, *,
|
57
|
+
def initialize(main, *, exception: false, pipe: false, verbose: nil, **kwargs)
|
58
58
|
@main = main.to_s
|
59
59
|
@home = Pathname.pwd
|
60
60
|
@root = @home.parent
|
61
|
-
@series = Series.new(TASK_BASE
|
61
|
+
@series = Series.new(TASK_BASE)
|
62
62
|
@project = {}
|
63
63
|
@extensions = []
|
64
64
|
@script = {
|
@@ -68,11 +68,12 @@ module Squared
|
|
68
68
|
dev: nil,
|
69
69
|
prod: nil
|
70
70
|
}
|
71
|
-
@theme = common &&
|
71
|
+
@theme = kwargs.key?(:common) && !kwargs[:common] ? {} : __get__(:theme)[:workspace]
|
72
72
|
@exception = exception.is_a?(String) ? !env(exception, ignore: '0').nil? : exception
|
73
73
|
@pipe = pipe.is_a?(String) ? !env(pipe, ignore: '0').nil? : pipe
|
74
74
|
@verbose = verbose.nil? ? !@pipe : verbose
|
75
|
-
@warning =
|
75
|
+
@warning = @verbose
|
76
|
+
__set__(:no_color, true) if @pipe
|
76
77
|
end
|
77
78
|
|
78
79
|
def build(**kwargs)
|
@@ -81,82 +82,84 @@ module Squared
|
|
81
82
|
@project.each_value do |proj|
|
82
83
|
next unless proj.enabled?
|
83
84
|
|
84
|
-
series.populate(proj)
|
85
85
|
proj.populate(**kwargs)
|
86
|
+
series.populate(proj)
|
86
87
|
end
|
87
88
|
|
88
89
|
Application.project_kind.each { |obj| obj.populate(self, **kwargs) }
|
89
90
|
@extensions.each { |ext| __send__(ext, **kwargs) }
|
90
91
|
|
91
|
-
|
92
|
-
|
93
|
-
task default: kwargs[:default] if series.has?(kwargs[:default]) && !task_defined?('default')
|
94
|
-
|
95
|
-
if series.has?('build')
|
96
|
-
init = ['depend', dev? && series.has?('refresh') ? 'refresh' : 'build']
|
92
|
+
__build__(**kwargs)
|
93
|
+
series.build(**kwargs)
|
97
94
|
|
98
|
-
|
95
|
+
yield self if block_given?
|
96
|
+
end
|
99
97
|
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
98
|
+
def with(group: nil, ref: nil)
|
99
|
+
@group = nil
|
100
|
+
@ref = nil
|
101
|
+
if group
|
102
|
+
@group = group
|
103
|
+
elsif ref
|
104
|
+
@ref = ref
|
104
105
|
end
|
105
|
-
|
106
|
-
|
107
|
-
yield self if block_given?
|
106
|
+
self
|
108
107
|
end
|
109
108
|
|
110
|
-
def run(script, group:
|
109
|
+
def run(script, group: @group, ref: @ref)
|
111
110
|
script_command :run, script, group, ref
|
112
111
|
end
|
113
112
|
|
114
|
-
def depend(script, group:
|
113
|
+
def depend(script, group: @group, ref: @ref)
|
115
114
|
script_command :depend, script, group, ref
|
116
115
|
end
|
117
116
|
|
118
|
-
def clean(script, group:
|
117
|
+
def clean(script, group: @group, ref: @ref)
|
119
118
|
script_command :clean, script, group, ref
|
120
119
|
end
|
121
120
|
|
122
|
-
def doc(script, group:
|
121
|
+
def doc(script, group: @group, ref: @ref)
|
123
122
|
script_command :doc, script, group, ref
|
124
123
|
end
|
125
124
|
|
126
|
-
def test(script, group:
|
125
|
+
def test(script, group: @group, ref: @ref)
|
127
126
|
script_command :test, script, group, ref
|
128
127
|
end
|
129
128
|
|
130
|
-
def add(name, path = nil,
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
129
|
+
def add(name, path = nil, **kwargs)
|
130
|
+
ref = if kwargs.key?(:ref)
|
131
|
+
kwargs.delete(:ref)
|
132
|
+
elsif !@ref.is_a?(::Array)
|
133
|
+
@ref
|
134
|
+
end
|
135
|
+
kwargs[:group] = @group if !kwargs.key?(:group) && !@group.is_a?(::Array)
|
136
|
+
path = root_path(path || name.to_s)
|
137
|
+
proj = ((if !ref.is_a?(::Class)
|
138
|
+
Application.find(path: path, ref: ref)
|
139
|
+
elsif ref < Project::Base
|
140
|
+
ref
|
141
|
+
end) || Project::Base).new(name, path, self, **kwargs)
|
142
|
+
@project[name = name.to_sym] = proj
|
143
|
+
__get__(:project)[name] = proj unless kwargs[:private]
|
140
144
|
self
|
141
145
|
end
|
142
146
|
|
143
|
-
def group(name, path, **kwargs)
|
147
|
+
def group(name, path, override: {}, **kwargs)
|
144
148
|
root_path(path).children.map do |ent|
|
145
149
|
next unless (dir = Pathname.new(ent)).directory?
|
146
150
|
|
147
151
|
index = 0
|
148
152
|
basename = dir.basename.to_s.to_sym
|
149
|
-
override = kwargs.delete(basename)
|
150
153
|
while @project[basename]
|
151
154
|
index += 1
|
152
155
|
basename = :"#{basename}-#{index}"
|
153
156
|
end
|
154
|
-
[basename, dir, override]
|
157
|
+
[basename, dir, override[basename]]
|
155
158
|
end
|
156
|
-
.each do |basename, dir,
|
157
|
-
|
158
|
-
|
159
|
-
add(basename, dir, group: name, **
|
159
|
+
.each do |basename, dir, opts|
|
160
|
+
args = kwargs.dup
|
161
|
+
args.merge!(opts) if opts
|
162
|
+
add(basename, dir, group: name, **args)
|
160
163
|
end
|
161
164
|
self
|
162
165
|
end
|
@@ -188,15 +191,17 @@ module Squared
|
|
188
191
|
end
|
189
192
|
|
190
193
|
def script(group: nil, ref: nil)
|
191
|
-
if group
|
192
|
-
|
194
|
+
if group
|
195
|
+
@script[:group][group.to_sym]
|
196
|
+
elsif ref
|
197
|
+
@script[:ref][ref.to_sym]
|
193
198
|
else
|
194
199
|
@script[:build]
|
195
200
|
end
|
196
201
|
end
|
197
202
|
|
198
|
-
def env(key,
|
199
|
-
ret = ENV.fetch("#{key}_#{main.gsub(/[^\w]
|
203
|
+
def env(key, default = nil, equals: nil, ignore: nil)
|
204
|
+
ret = ENV.fetch("#{key}_#{main.gsub(/[^\w]+/, '_').upcase}", ENV[key]).to_s
|
200
205
|
return ret == equals.to_s unless equals.nil?
|
201
206
|
|
202
207
|
ret.empty? || (ignore && as_a(ignore).any? { |val| ret == val.to_s }) ? default : ret
|
@@ -240,47 +245,36 @@ module Squared
|
|
240
245
|
::Rake::Task.task_defined?(key)
|
241
246
|
end
|
242
247
|
|
243
|
-
def dev?(
|
244
|
-
|
248
|
+
def dev?(global: nil, **kwargs)
|
249
|
+
script?(:dev, global: global.nil? ? kwargs[:pat].nil? : global, **kwargs)
|
245
250
|
end
|
246
251
|
|
247
|
-
def prod?(
|
252
|
+
def prod?(global: false, **kwargs)
|
248
253
|
return false if global && (@script[:dev] == true || !@script[:prod])
|
249
254
|
|
250
|
-
|
255
|
+
script?(:prod, global: global, **kwargs)
|
251
256
|
end
|
252
257
|
|
253
|
-
|
254
|
-
|
255
|
-
def
|
256
|
-
|
257
|
-
|
258
|
-
agree = /^#{agree}$/i if agree.is_a?(String)
|
259
|
-
cancel = /^#{cancel}$/i if cancel.is_a?(String)
|
260
|
-
Timeout.timeout(timeout) do
|
261
|
-
begin
|
262
|
-
while (ch = Readline.readline(msg, true))
|
263
|
-
ch = ch.chomp
|
264
|
-
ch = default if ch.empty?
|
265
|
-
case ch
|
266
|
-
when agree
|
267
|
-
return true
|
268
|
-
when cancel
|
269
|
-
return false
|
270
|
-
end
|
271
|
-
attempts -= 1
|
272
|
-
exit 1 unless attempts >= 0
|
273
|
-
end
|
274
|
-
rescue Interrupt
|
275
|
-
puts
|
276
|
-
exit 0
|
277
|
-
else
|
278
|
-
false
|
279
|
-
end
|
258
|
+
private
|
259
|
+
|
260
|
+
def __build__(**kwargs)
|
261
|
+
if !task_defined?('default') && (default = kwargs[:default]) && !series.has?(default)
|
262
|
+
task default: default
|
280
263
|
end
|
281
|
-
|
264
|
+
return unless series.has?('build')
|
282
265
|
|
283
|
-
|
266
|
+
if (refresh = series[:refresh]).all? { |val| val.end_with?(':build') }
|
267
|
+
refresh.clear
|
268
|
+
end
|
269
|
+
init = ['depend', dev? && series.has?('refresh') ? 'refresh' : 'build']
|
270
|
+
|
271
|
+
task default: init[1] unless task_defined?('default')
|
272
|
+
|
273
|
+
return if task_defined?('init') || !series.has?(init[0])
|
274
|
+
|
275
|
+
desc 'init'
|
276
|
+
task init: init
|
277
|
+
end
|
284
278
|
|
285
279
|
def script_command(task, val, group, ref)
|
286
280
|
if group
|
@@ -294,8 +288,10 @@ module Squared
|
|
294
288
|
self
|
295
289
|
end
|
296
290
|
|
297
|
-
def
|
298
|
-
|
291
|
+
def script?(state, script: nil, pat: nil, ref: nil, group: nil, global: false)
|
292
|
+
gr = @script[:ref][:_]
|
293
|
+
gg = @script[:group][:_]
|
294
|
+
if global && ((!ref && !group) || (!gr && !gg) || (ref && ref == gr) || (group && group == gg))
|
299
295
|
pat = @script[state] if pat.nil?
|
300
296
|
script ||= @script[:build]
|
301
297
|
end
|
@@ -13,12 +13,9 @@ module Squared
|
|
13
13
|
include Task
|
14
14
|
include ::Rake::DSL
|
15
15
|
|
16
|
-
SEM_VER =
|
16
|
+
SEM_VER = /(\d+)(?:(\.)(\d+))?(?:(\.)(\d+))?/.freeze
|
17
17
|
|
18
18
|
class << self
|
19
|
-
include Common::Task
|
20
|
-
include ::Rake::DSL
|
21
|
-
|
22
19
|
def populate(*); end
|
23
20
|
|
24
21
|
def tasks
|
@@ -34,24 +31,24 @@ module Squared
|
|
34
31
|
end
|
35
32
|
end
|
36
33
|
|
37
|
-
def
|
38
|
-
|
34
|
+
def ref
|
35
|
+
@ref ||= to_s.downcase.to_sym
|
39
36
|
end
|
40
37
|
|
41
|
-
def
|
42
|
-
to_s.
|
38
|
+
def to_s
|
39
|
+
super.to_s.match(/[^:]+$/)[0]
|
43
40
|
end
|
44
41
|
end
|
45
42
|
|
46
43
|
@@print_order = 0
|
47
44
|
@@tasks = {}
|
48
45
|
|
49
|
-
attr_reader :name, :project, :workspace, :group, :path, :
|
46
|
+
attr_reader :name, :project, :workspace, :group, :path, :theme
|
50
47
|
attr_accessor :warning
|
51
48
|
|
52
|
-
def initialize(name, path, workspace, *, group: nil,
|
49
|
+
def initialize(name, path, workspace, *, group: nil, **kwargs)
|
53
50
|
@name = name.to_s
|
54
|
-
@path =
|
51
|
+
@path = path
|
55
52
|
@project = @path.basename.to_s
|
56
53
|
@workspace = workspace
|
57
54
|
@group = group&.to_s
|
@@ -61,40 +58,50 @@ module Squared
|
|
61
58
|
@output = [kwargs[:run], nil]
|
62
59
|
@copy = kwargs[:copy]
|
63
60
|
@clean = kwargs[:clean]
|
61
|
+
@exclude = as_a(kwargs[:exclude])
|
64
62
|
@warning = workspace.warning
|
65
63
|
@theme = if !workspace.verbose
|
66
64
|
{}
|
67
|
-
elsif common
|
65
|
+
elsif kwargs.fetch(:common, true)
|
68
66
|
workspace.theme
|
69
67
|
else
|
70
68
|
__get__(:theme)[:project][to_sym] ||= {}
|
71
69
|
end
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
70
|
+
initialize_logger(**kwargs)
|
71
|
+
end
|
72
|
+
|
73
|
+
def initialize_logger(log: nil, **)
|
74
|
+
log = log.is_a?(::Hash) ? log.dup : { file: log }
|
75
|
+
if (file = env('LOG_FILE')).nil? && (auto = env('LOG_AUTO'))
|
76
|
+
file = case auto
|
77
|
+
when 'y', 'year'
|
78
|
+
"#{@name}-#{Date.today.year}.log"
|
79
|
+
when 'm', 'month'
|
80
|
+
"#{@name}-#{Date.today.strftime('%Y-%m')}.log"
|
81
|
+
when 'd', 'day', '1'
|
82
|
+
"#{@name}-#{Date.today}.log"
|
83
|
+
end
|
82
84
|
end
|
83
|
-
if
|
84
|
-
|
85
|
-
|
85
|
+
if file ||= log[:file]
|
86
|
+
file = Date.today.strftime(file)
|
87
|
+
file = (dir = env('LOG_DIR')) ? Pathname.new(dir).join(file) : Pathname.new(file)
|
86
88
|
begin
|
87
|
-
|
89
|
+
file = file.realdirpath
|
88
90
|
rescue StandardError => e
|
89
|
-
|
91
|
+
raise if @workspace.exception
|
92
|
+
|
93
|
+
file = nil
|
90
94
|
warn e if @warning
|
91
95
|
end
|
92
96
|
end
|
93
|
-
|
97
|
+
log[:progname] = @name
|
98
|
+
log[:level] = env('LOG_LEVEL', log[:level] || Logger::INFO, ignore: nil)
|
99
|
+
log.delete(:file)
|
100
|
+
@log = [file, log]
|
94
101
|
end
|
95
102
|
|
96
103
|
def initialize_build(ref, **kwargs)
|
97
|
-
initialize_script(ref)
|
104
|
+
initialize_script(ref, **kwargs)
|
98
105
|
if (val = env('BUILD', strict: true))
|
99
106
|
@output[0] = val
|
100
107
|
elsif @script && @output[0] != false
|
@@ -106,11 +113,11 @@ module Squared
|
|
106
113
|
elsif env('BUILD', suffix: 'DEV')
|
107
114
|
@dev = true
|
108
115
|
elsif @dev.nil?
|
109
|
-
@dev = workspace.dev?
|
116
|
+
@dev = !group.nil? && workspace.dev?(group: group, global: true)
|
110
117
|
end
|
111
118
|
end
|
112
119
|
|
113
|
-
def initialize_script(ref)
|
120
|
+
def initialize_script(ref, **)
|
114
121
|
return unless (script = workspace.script(group: group, ref: ref))
|
115
122
|
|
116
123
|
@depend = script[:depend] if @depend.nil?
|
@@ -121,6 +128,8 @@ module Squared
|
|
121
128
|
end
|
122
129
|
|
123
130
|
def populate(*)
|
131
|
+
return if @exclude.include?(Base.ref)
|
132
|
+
|
124
133
|
namespace name do
|
125
134
|
workspace.series.each_key do |key|
|
126
135
|
next unless Application::WORKSPACE_KEYS.include?(key) ? has?(key) : workspace.task_include?(self, key)
|
@@ -154,7 +163,7 @@ module Squared
|
|
154
163
|
cmd = compose(opts)
|
155
164
|
banner = env('REPO_BUILD') == 'verbose'
|
156
165
|
end
|
157
|
-
run(cmd,
|
166
|
+
run(cmd, banner: banner, sync: sync)
|
158
167
|
end
|
159
168
|
|
160
169
|
def refresh(*)
|
@@ -168,11 +177,11 @@ module Squared
|
|
168
177
|
end
|
169
178
|
|
170
179
|
def depend(*)
|
171
|
-
run(@depend,
|
180
|
+
run(@depend, sync: invoked_sync?('depend')) if @depend
|
172
181
|
end
|
173
182
|
|
174
183
|
def copy(*)
|
175
|
-
run_s(@copy, sync: invoked_sync?('copy'))
|
184
|
+
run_s(@copy, sync: invoked_sync?('copy')) if @copy
|
176
185
|
end
|
177
186
|
|
178
187
|
def doc
|
@@ -212,6 +221,12 @@ module Squared
|
|
212
221
|
end
|
213
222
|
end
|
214
223
|
|
224
|
+
def log
|
225
|
+
return @log unless @log.is_a?(::Array)
|
226
|
+
|
227
|
+
@log = Logger.new(enabled? ? @log[0] : nil, **@log[1])
|
228
|
+
end
|
229
|
+
|
215
230
|
def base_path(*args)
|
216
231
|
path.join(*args)
|
217
232
|
end
|
@@ -245,7 +260,7 @@ module Squared
|
|
245
260
|
end
|
246
261
|
|
247
262
|
def depend?
|
248
|
-
|
263
|
+
@depend != false && (!@depend.nil? || has?('outdated'))
|
249
264
|
end
|
250
265
|
|
251
266
|
def doc?
|
@@ -264,16 +279,25 @@ module Squared
|
|
264
279
|
!!@clean
|
265
280
|
end
|
266
281
|
|
282
|
+
def dev?
|
283
|
+
!!@dev
|
284
|
+
end
|
285
|
+
|
267
286
|
protected
|
268
287
|
|
269
|
-
def run(cmd = @session, exception:
|
288
|
+
def run(cmd = @session, exception: workspace.exception, banner: true, sync: true, req: nil, **)
|
270
289
|
return if req && !base_path(req).exist?
|
271
290
|
|
272
291
|
cmd = close_session(cmd)
|
273
292
|
log.info cmd
|
274
|
-
print_item format_banner(cmd, banner: banner) if sync
|
275
293
|
begin
|
276
|
-
|
294
|
+
if cmd =~ /^\S+:(\S+:?)+$/ && workspace.task_defined?(cmd)
|
295
|
+
print_item if sync
|
296
|
+
invoke(cmd, exception: exception)
|
297
|
+
else
|
298
|
+
print_item format_banner(cmd, banner: banner) if sync
|
299
|
+
shell(cmd, chdir: path, exception: exception)
|
300
|
+
end
|
277
301
|
rescue StandardError => e
|
278
302
|
log.error e
|
279
303
|
raise
|
@@ -281,11 +305,11 @@ module Squared
|
|
281
305
|
end
|
282
306
|
|
283
307
|
def run_s(cmd, **kwargs)
|
284
|
-
run(cmd,
|
308
|
+
run(cmd, banner: verbose?, **kwargs) if cmd.is_a?(::String)
|
285
309
|
end
|
286
310
|
|
287
|
-
def env(key, equals: nil, ignore: ['0'].freeze,
|
288
|
-
a = "#{key}_#{name.upcase}"
|
311
|
+
def env(key, default = nil, equals: nil, ignore: ['0'].freeze, suffix: nil, strict: false)
|
312
|
+
a = "#{key}_#{name.gsub(/[^\w]+/, '_').upcase}"
|
289
313
|
b = ''
|
290
314
|
if suffix
|
291
315
|
a = [a, suffix].flatten.join('_')
|
@@ -328,7 +352,7 @@ module Squared
|
|
328
352
|
styles = [:bold] + styles
|
329
353
|
end
|
330
354
|
end
|
331
|
-
n = max_width(lines)
|
355
|
+
n = Project.max_width(lines)
|
332
356
|
ch = ' ' * pad
|
333
357
|
index = -1
|
334
358
|
out = lines.map do |val|
|
@@ -344,15 +368,17 @@ module Squared
|
|
344
368
|
out.join("\n")
|
345
369
|
end
|
346
370
|
|
347
|
-
def print_footer(*lines, sub: nil, border: theme[:border])
|
348
|
-
n = max_width(lines)
|
371
|
+
def print_footer(*lines, sub: nil, border: theme[:border], reverse: false)
|
372
|
+
n = Project.max_width(lines)
|
349
373
|
sub = as_a(sub)
|
350
374
|
lines.map! do |val|
|
351
375
|
s = val.ljust(n)
|
352
376
|
sub.each { |h| s = sub_style(s, **h) }
|
353
377
|
s
|
354
378
|
end
|
355
|
-
[sub_style('-' * n, styles: border), *lines]
|
379
|
+
ret = [sub_style('-' * n, styles: border), *lines]
|
380
|
+
ret.reverse! if reverse
|
381
|
+
ret.join("\n")
|
356
382
|
end
|
357
383
|
|
358
384
|
def format_desc(action, flag, opts = nil, req: 'opts*')
|
@@ -374,8 +400,8 @@ module Squared
|
|
374
400
|
end
|
375
401
|
end
|
376
402
|
|
377
|
-
def empty_status(msg, title, obj)
|
378
|
-
"#{msg}#{!obj || obj == 0 || obj.to_s.empty? ? '' : message(hint: message(title, obj.to_s))}"
|
403
|
+
def empty_status(msg, title, obj, always: false)
|
404
|
+
"#{msg}#{!always && (!obj || obj == 0 || obj.to_s.empty?) ? '' : message(hint: message(title, obj.to_s))}"
|
379
405
|
end
|
380
406
|
|
381
407
|
def append_nocolor
|
@@ -394,10 +420,33 @@ module Squared
|
|
394
420
|
@session = nil
|
395
421
|
raise_error(action, "#{flag}[]", hint: 'empty')
|
396
422
|
end
|
397
|
-
|
423
|
+
end
|
398
424
|
|
399
|
-
|
400
|
-
|
425
|
+
def store_pwd(done = nil)
|
426
|
+
if @pwd
|
427
|
+
Dir.chdir(@pwd)
|
428
|
+
@pwd = nil
|
429
|
+
elsif !done && Dir.pwd != path.to_s
|
430
|
+
@pwd = Dir.pwd
|
431
|
+
Dir.chdir(path)
|
432
|
+
@pwd
|
433
|
+
end
|
434
|
+
end
|
435
|
+
|
436
|
+
def semver(val)
|
437
|
+
unless val[3]
|
438
|
+
val[3] = '.'
|
439
|
+
val[4] = '0'
|
440
|
+
end
|
441
|
+
unless val[1]
|
442
|
+
val[1] = '.'
|
443
|
+
val[2] = '0'
|
444
|
+
end
|
445
|
+
val
|
446
|
+
end
|
447
|
+
|
448
|
+
def semmajor(cur, want)
|
449
|
+
cur[0] == '0' && want[0] == '0' ? cur[2] != want[2] : cur[0] != want[0]
|
401
450
|
end
|
402
451
|
|
403
452
|
def verbose?
|
@@ -423,17 +472,11 @@ module Squared
|
|
423
472
|
return ret unless ret.nil?
|
424
473
|
end
|
425
474
|
if (base = workspace.find_base(self))
|
426
|
-
ret = check.("#{action}:#{base.
|
475
|
+
ret = check.("#{action}:#{base.ref}")
|
427
476
|
return ret unless ret.nil?
|
428
477
|
end
|
429
478
|
invoked?("#{name}:#{action}") && (!invoked?(action) || !workspace.task_defined?("#{action}:sync"))
|
430
479
|
end
|
431
|
-
|
432
|
-
private
|
433
|
-
|
434
|
-
def max_width(lines)
|
435
|
-
[lines.max_by(&:size).size, Project.line_width].max
|
436
|
-
end
|
437
480
|
end
|
438
481
|
end
|
439
482
|
end
|