squared 0.0.7 → 0.0.8
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 +20 -7
- data/lib/squared/common/base.rb +9 -9
- data/lib/squared/common/format.rb +1 -1
- data/lib/squared/common/task.rb +2 -2
- data/lib/squared/config.rb +18 -14
- data/lib/squared/version.rb +1 -1
- data/lib/squared/workspace/application.rb +81 -69
- data/lib/squared/workspace/project/base.rb +36 -20
- data/lib/squared/workspace/project/git.rb +55 -55
- data/lib/squared/workspace/project/node.rb +36 -21
- data/lib/squared/workspace/project/python.rb +43 -21
- data/lib/squared/workspace/project/ruby.rb +35 -51
- data/lib/squared/workspace/repo.rb +27 -18
- data/lib/squared/workspace/series.rb +50 -41
- data/lib/squared/workspace.rb +8 -2
- data/squared.gemspec +1 -0
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d9b753ae5817f7ddd43ccf1152dde2bd4bc8d37ed2eae1d39d7c118e84c20947
|
4
|
+
data.tar.gz: 910b375d08c1fda296862a22e612832eb0ebbbea505a6d860f2db9e48ff9a2ee
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3595a660add974bb7bf69df55aaca30d7fb8bfb47ae21cdfd0b5d978ce36f35acb97e15f746d97204afa1a800c639a028e3835a9431addf63e6eb6402df6f87c
|
7
|
+
data.tar.gz: cda2b5a2aa217354d8f06d307c3136ae25d77358b0a478195c7ad945701f08f1e16450340819bd1a41e958a1a31f5e4b13ce167dee4a0d40630f4a3e9a61ada7
|
data/README.ruby.md
CHANGED
@@ -36,10 +36,11 @@ require "squared/workspace/repo" # Repo (optional)
|
|
36
36
|
|
37
37
|
# REPO_ROOT = /workspaces
|
38
38
|
# REPO_HOME = /workspaces/squared
|
39
|
+
# NODE_ENV = production
|
39
40
|
# rake = /workspaces/squared/Rakefile
|
40
41
|
|
41
42
|
Workspace::Application
|
42
|
-
.new("squared") #
|
43
|
+
.new(main: "squared") # Dir.pwd? (main? is implicitly basename)
|
43
44
|
.repo("https://github.com/anpham6/squared-repo", "nightly", run: "build", ref: :node) # Repo (optional)
|
44
45
|
.run("rake install", ref: :ruby)
|
45
46
|
.depend(false, group: "default")
|
@@ -48,11 +49,11 @@ Workspace::Application
|
|
48
49
|
.add("pathname", run: "rake compile", copy: "rake install", test: "rake test", group: "default", ref: :ruby) # Ruby (with C extensions)
|
49
50
|
.add("optparse", doc: "rake rdoc", group: "default") # Uses bundler/gem_tasks (without C extensions)
|
50
51
|
.add("logger", copy: { from: "lib", glob: "**/*.rb", gemdir: "~/.rvm/gems/ruby-3.3.5/gems/logger-1.6.1" }, clean: ["tmp/"]) # autodetect: true
|
51
|
-
.add("android", "android-docs", run: false, doc: "make html", ref: :python) # Python
|
52
52
|
.add("emc", "e-mc", copy: { from: "publish", into: "@e-mc", also: [:pir, "squared-express/"] }, ref: :node) # Node
|
53
53
|
.add("pir", "pi-r", copy: { from: "publish", into: "@pi-r" }, clean: ["publish/**/*.js", "tmp/"]) # Trailing slash required for directories
|
54
54
|
.add("squared", log: { file: "tmp/%Y-%m-%d.log", level: "debug" }, group: "app") # Copy target (main)
|
55
|
-
.
|
55
|
+
.add("sqd", "squared/sqd", script: ["build:sqd", "prod:sqd"], depend: false, clean: ["build/sqd/"], exclude: :git) # NPM workspaces
|
56
|
+
.style("banner", 255.255) # 256 colors (fg | fg.bg | -0.bg)
|
56
57
|
.build(default: "status", parallel: ["pull", "fetch", "rebase", "copy", "clean"]) do |workspace|
|
57
58
|
workspace
|
58
59
|
.enable_aixterm
|
@@ -64,21 +65,32 @@ Workspace::Application
|
|
64
65
|
# pathname = /workspaces/pathname
|
65
66
|
# optparse = /workspaces/optparse
|
66
67
|
# log = /workspaces/logger
|
67
|
-
# android = /workspaces/android-docs
|
68
68
|
# emc = /workspaces/e-mc
|
69
69
|
# pir = /workspaces/pi-r
|
70
70
|
# squared = /workspaces/squared
|
71
71
|
|
72
72
|
Workspace::Application
|
73
|
-
.new("
|
74
|
-
.group("default", "ruby", run: "rake build", copy: "rake install", clean: "rake clean", override: {
|
75
|
-
pathname: {
|
73
|
+
.new(ENV["SQUARED_DIR"], prefix: "rb", common: false) # Has empty styles
|
74
|
+
.group("default", "ruby", run: "rake build", copy: "rake install", clean: "rake clean", ref: :ruby, override: {
|
75
|
+
pathname: {
|
76
|
+
run: "rake compile" # rake rb:pathname:build
|
77
|
+
}
|
76
78
|
})
|
79
|
+
.with(ref: :python) do # Python
|
80
|
+
doc("make html") # rake rb:doc | rb:doc:python
|
81
|
+
run(false) # rake rb:build (disabled)
|
82
|
+
exclude(%i[base git]) # superclass
|
83
|
+
add("android", "android-docs") # rake rb:android:doc
|
84
|
+
add("chrome", "chrome-docs") # rake rb:chrome:doc
|
85
|
+
end
|
86
|
+
.style("inline", "bold")
|
77
87
|
.build
|
78
88
|
# default = /workspaces/ruby/*
|
79
89
|
# pathname = /workspaces/ruby/pathname
|
80
90
|
# optparse = /workspaces/ruby/optparse
|
81
91
|
# logger = /workspaces/ruby/logger
|
92
|
+
# android = /workspaces/android-docs
|
93
|
+
# chrome = /workspaces/chrome-docs
|
82
94
|
```
|
83
95
|
|
84
96
|
**NOTE**: The use of "**ref**" (class name) is only necessary when running `repo:init` for the first time into an empty directory.
|
@@ -124,6 +136,7 @@ rake clean:node # none + ["publish/**/*.js", "tmp/"] + ["build/"]
|
|
124
136
|
* header
|
125
137
|
* active
|
126
138
|
* inline
|
139
|
+
* major
|
127
140
|
|
128
141
|
## LICENSE
|
129
142
|
|
data/lib/squared/common/base.rb
CHANGED
@@ -26,7 +26,8 @@ module Squared
|
|
26
26
|
workspace: {
|
27
27
|
header: %i[bold],
|
28
28
|
active: %i[bold],
|
29
|
-
inline: %i[bold]
|
29
|
+
inline: %i[bold],
|
30
|
+
major: %i[bold]
|
30
31
|
},
|
31
32
|
project: {},
|
32
33
|
viewer: {
|
@@ -82,16 +83,15 @@ module Squared
|
|
82
83
|
args.reject(&:empty?).join(' => ') + (hint ? " (#{hint})" : '')
|
83
84
|
end
|
84
85
|
|
85
|
-
def as_a(obj, flat: nil)
|
86
|
-
if obj.nil?
|
87
|
-
|
88
|
-
|
89
|
-
[obj]
|
86
|
+
def as_a(obj, meth = nil, flat: nil)
|
87
|
+
return [] if obj.nil?
|
88
|
+
|
89
|
+
if !obj.is_a?(::Array)
|
90
|
+
obj = [obj]
|
90
91
|
elsif flat
|
91
|
-
obj.flatten(flat == true ? nil : flat)
|
92
|
-
else
|
93
|
-
obj
|
92
|
+
obj = obj.flatten(flat == true ? nil : flat)
|
94
93
|
end
|
94
|
+
meth ? obj.map(&meth) : obj
|
95
95
|
end
|
96
96
|
end
|
97
97
|
end
|
data/lib/squared/common/task.rb
CHANGED
@@ -7,12 +7,12 @@ module Squared
|
|
7
7
|
module Task
|
8
8
|
module_function
|
9
9
|
|
10
|
-
def invoke(name, *args, exception: true)
|
10
|
+
def invoke(name, *args, exception: true, warning: true)
|
11
11
|
::Rake::Task[name].invoke(*args)
|
12
12
|
rescue StandardError => e
|
13
13
|
raise if exception
|
14
14
|
|
15
|
-
warn e
|
15
|
+
warn e if warning
|
16
16
|
end
|
17
17
|
|
18
18
|
def invoked?(name)
|
data/lib/squared/config.rb
CHANGED
@@ -17,14 +17,15 @@ module Squared
|
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
20
|
-
attr_reader :
|
20
|
+
attr_reader :main, :name, :project, :theme
|
21
21
|
|
22
|
-
def initialize(main, name = nil, project: nil, dump: nil, opts: {}, auto: true, common: true)
|
22
|
+
def initialize(main, name = nil, project: nil, prefix: nil, dump: nil, opts: {}, auto: true, common: true)
|
23
23
|
if project
|
24
24
|
main = @project.base_path(main).to_s if (@project = __get__(:project)[project.to_sym])
|
25
25
|
@required = true
|
26
26
|
end
|
27
27
|
@name = name&.to_s || @project&.name
|
28
|
+
@prefix = prefix
|
28
29
|
@ext = File.extname(main)
|
29
30
|
@dump = dump
|
30
31
|
@mime = {}
|
@@ -59,18 +60,19 @@ module Squared
|
|
59
60
|
|
60
61
|
params = ->(args) { exist? ? [realpath, [args.keys] + args.extras] : [args.keys, args.extras] }
|
61
62
|
|
62
|
-
|
63
|
+
ns = @prefix ? "#{@prefix}:#{name}" : name
|
64
|
+
namespace ns do
|
63
65
|
view = @command && @command != name ? @command : 'view'
|
64
66
|
namespace view do
|
65
|
-
if @mime['json'] && (exist? || !::Rake::Task.task_defined?("#{
|
66
|
-
desc format_desc(view,
|
67
|
+
if @mime['json'] && (exist? || !::Rake::Task.task_defined?("#{ns}:#{view}:json"))
|
68
|
+
desc format_desc(view, 'json')
|
67
69
|
task 'json', [:keys] do |_, args|
|
68
70
|
read_keys(JSON, 'json', *params.(args))
|
69
71
|
end
|
70
72
|
end
|
71
73
|
|
72
|
-
if @mime['yaml'] && (exist? || !::Rake::Task.task_defined?("#{
|
73
|
-
desc format_desc(view,
|
74
|
+
if @mime['yaml'] && (exist? || !::Rake::Task.task_defined?("#{ns}:#{view}:yaml"))
|
75
|
+
desc format_desc(view, 'yaml', 'yml')
|
74
76
|
task 'yaml', [:keys] do |_, args|
|
75
77
|
require 'yaml'
|
76
78
|
read_keys(YAML, 'yaml', *params.(args), ext: %w[yml yaml])
|
@@ -91,8 +93,9 @@ module Squared
|
|
91
93
|
obj = eval(parse)
|
92
94
|
ext << type if (ext = as_a(ext)).empty?
|
93
95
|
file = realpath if file.nil? && exist?
|
94
|
-
|
95
|
-
|
96
|
+
|
97
|
+
namespace(@prefix ? "#{@prefix}:#{name}" : name) do
|
98
|
+
desc format_desc(command, *ext, exist: exist)
|
96
99
|
namespace command do
|
97
100
|
task type, [:keys] do |_, args|
|
98
101
|
if file
|
@@ -158,7 +161,7 @@ module Squared
|
|
158
161
|
!@required || (!project.nil? && project.enabled?)
|
159
162
|
end
|
160
163
|
|
161
|
-
|
164
|
+
private
|
162
165
|
|
163
166
|
def read_keys(reader, type, file, keys, ext: [type])
|
164
167
|
if (mime = mime_type(file)) && base_path(file).exist?
|
@@ -224,7 +227,7 @@ module Squared
|
|
224
227
|
end
|
225
228
|
end
|
226
229
|
rescue StandardError
|
227
|
-
project&.log&.warn "#{Viewer}(#{type}) => #{file
|
230
|
+
project&.log&.warn "#{Viewer}(#{type}) => #{file && "#{file} "}{#{key}: undefined}"
|
228
231
|
val = Regexp.escape($!.message)
|
229
232
|
key = key.sub(/(#{val})\.|\.(#{val})|(#{val})/) do
|
230
233
|
s = "<#{$3 || $2 || $1}>"
|
@@ -262,8 +265,9 @@ module Squared
|
|
262
265
|
end
|
263
266
|
end
|
264
267
|
|
265
|
-
def format_desc(command, ext, exist: exist?)
|
266
|
-
message(
|
268
|
+
def format_desc(command, *ext, exist: exist?)
|
269
|
+
message(@prefix || '', *name.split(':'), command,
|
270
|
+
"#{ext.first}[#{exist ? '' : "file?=#{File.basename(main)}.#{ext.last},"}keys*]")
|
267
271
|
end
|
268
272
|
|
269
273
|
def realpath
|
@@ -283,7 +287,7 @@ module Squared
|
|
283
287
|
end
|
284
288
|
|
285
289
|
def warning?
|
286
|
-
project
|
290
|
+
project ? project.workspace.warning : true
|
287
291
|
end
|
288
292
|
end
|
289
293
|
end
|
data/lib/squared/version.rb
CHANGED
@@ -7,58 +7,45 @@ module Squared
|
|
7
7
|
include Format
|
8
8
|
include ::Rake::DSL
|
9
9
|
|
10
|
-
TASK_BASE = {
|
11
|
-
build: [],
|
12
|
-
refresh: [],
|
13
|
-
depend: [],
|
14
|
-
outdated: [],
|
15
|
-
doc: [],
|
16
|
-
test: [],
|
17
|
-
copy: [],
|
18
|
-
clean: []
|
19
|
-
}
|
20
|
-
TASK_EXTEND = {}
|
21
|
-
WORKSPACE_KEYS = TASK_BASE.keys.freeze
|
22
|
-
private_constant :TASK_BASE, :TASK_EXTEND
|
23
|
-
|
24
10
|
class << self
|
25
11
|
def implement(*objs)
|
26
12
|
objs.each do |obj|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
obj
|
31
|
-
|
32
|
-
(TASK_EXTEND[val] ||= []).push(obj)
|
13
|
+
if obj < Project::Base
|
14
|
+
@impl_project.unshift(obj)
|
15
|
+
obj.tasks&.each { |task| @impl_series.add(task, obj) }
|
16
|
+
elsif obj < Workspace::Series
|
17
|
+
@impl_series = obj
|
33
18
|
end
|
34
19
|
end
|
35
20
|
end
|
36
21
|
|
37
|
-
def find(
|
38
|
-
if ref
|
39
|
-
ret
|
40
|
-
|
22
|
+
def find(ref = nil, path: nil)
|
23
|
+
if ref && (ret = impl_project.find { |proj| proj.ref == ref.to_sym })
|
24
|
+
ret
|
25
|
+
elsif path
|
26
|
+
impl_project.find { |proj| proj.is_a?(path) }
|
41
27
|
end
|
42
|
-
project_kind.find { |proj| proj.is_a?(path) } if path
|
43
28
|
end
|
44
29
|
|
45
30
|
def to_s
|
46
31
|
super.to_s.match(/[^:]+$/)[0]
|
47
32
|
end
|
48
33
|
|
49
|
-
attr_reader :
|
34
|
+
attr_reader :impl_project, :impl_series
|
50
35
|
end
|
51
36
|
|
52
|
-
@
|
37
|
+
@impl_project = []
|
38
|
+
@impl_series = Workspace::Series
|
53
39
|
|
54
|
-
attr_reader :
|
40
|
+
attr_reader :root, :home, :main, :prefix, :series, :theme
|
55
41
|
attr_accessor :exception, :warning, :pipe, :verbose
|
56
42
|
|
57
|
-
def initialize(
|
58
|
-
@
|
59
|
-
@
|
43
|
+
def initialize(home = Dir.pwd, *, main: nil, prefix: nil, exception: false, pipe: false, verbose: nil, **kwargs)
|
44
|
+
@home = (home = Pathname.new(home)).realdirpath
|
45
|
+
@main = (main || home.basename).to_s
|
60
46
|
@root = @home.parent
|
61
|
-
@
|
47
|
+
@prefix = prefix
|
48
|
+
@series = Application.impl_series.new(prefix)
|
62
49
|
@project = {}
|
63
50
|
@extensions = []
|
64
51
|
@script = {
|
@@ -66,42 +53,56 @@ module Squared
|
|
66
53
|
ref: {},
|
67
54
|
build: nil,
|
68
55
|
dev: nil,
|
69
|
-
prod: nil
|
56
|
+
prod: nil,
|
57
|
+
env: false
|
70
58
|
}
|
71
|
-
@theme = kwargs.key?(:common) && !kwargs[:common] ? {} : __get__(:theme)[:workspace]
|
72
59
|
@exception = exception.is_a?(String) ? !env(exception, ignore: '0').nil? : exception
|
73
60
|
@pipe = pipe.is_a?(String) ? !env(pipe, ignore: '0').nil? : pipe
|
74
61
|
@verbose = verbose.nil? ? !@pipe : verbose
|
75
62
|
@warning = @verbose
|
76
|
-
|
63
|
+
if kwargs.fetch(:common, true)
|
64
|
+
@theme = __get__(:theme)[:workspace]
|
65
|
+
__set__(:no_color, true) if @pipe
|
66
|
+
else
|
67
|
+
@theme = {}
|
68
|
+
end
|
77
69
|
end
|
78
70
|
|
79
71
|
def build(**kwargs)
|
72
|
+
kwargs[:parallel] = kwargs.fetch(:parallel, []).map(&:to_s)
|
80
73
|
return unless enabled?
|
81
74
|
|
82
75
|
@project.each_value do |proj|
|
83
76
|
next unless proj.enabled?
|
84
77
|
|
85
78
|
proj.populate(**kwargs)
|
86
|
-
series.
|
79
|
+
series.__populate__(proj)
|
87
80
|
end
|
88
81
|
|
89
|
-
Application.
|
82
|
+
Application.impl_project.each { |obj| obj.populate(self, **kwargs) }
|
90
83
|
@extensions.each { |ext| __send__(ext, **kwargs) }
|
91
84
|
|
85
|
+
series.__build__(**kwargs)
|
92
86
|
__build__(**kwargs)
|
93
|
-
series.build(**kwargs)
|
94
87
|
|
95
88
|
yield self if block_given?
|
96
89
|
end
|
97
90
|
|
98
|
-
def with(group: nil, ref: nil)
|
91
|
+
def with(group: nil, ref: nil, &blk)
|
99
92
|
@group = nil
|
100
93
|
@ref = nil
|
101
94
|
if group
|
102
95
|
@group = group
|
96
|
+
if block_given?
|
97
|
+
instance_eval(&blk)
|
98
|
+
@group = nil
|
99
|
+
end
|
103
100
|
elsif ref
|
104
101
|
@ref = ref
|
102
|
+
if block_given?
|
103
|
+
instance_eval(&blk)
|
104
|
+
@ref = nil
|
105
|
+
end
|
105
106
|
end
|
106
107
|
self
|
107
108
|
end
|
@@ -126,6 +127,10 @@ module Squared
|
|
126
127
|
script_command :test, script, group, ref
|
127
128
|
end
|
128
129
|
|
130
|
+
def exclude(base, group: @group, ref: @ref)
|
131
|
+
script_command :exclude, as_a(base, :to_sym).freeze, group, ref
|
132
|
+
end
|
133
|
+
|
129
134
|
def add(name, path = nil, **kwargs)
|
130
135
|
ref = if kwargs.key?(:ref)
|
131
136
|
kwargs.delete(:ref)
|
@@ -135,10 +140,10 @@ module Squared
|
|
135
140
|
kwargs[:group] = @group if !kwargs.key?(:group) && !@group.is_a?(::Array)
|
136
141
|
path = root_path(path || name.to_s)
|
137
142
|
proj = ((if !ref.is_a?(::Class)
|
138
|
-
Application.find(path: path
|
143
|
+
Application.find(ref, path: path)
|
139
144
|
elsif ref < Project::Base
|
140
145
|
ref
|
141
|
-
end) || Project::Base).new(name, path, self, **kwargs)
|
146
|
+
end) || Project::Base).new(prefix ? "#{prefix}:#{name}" : name, path, self, **kwargs)
|
142
147
|
@project[name = name.to_sym] = proj
|
143
148
|
__get__(:project)[name] = proj unless kwargs[:private]
|
144
149
|
self
|
@@ -177,31 +182,35 @@ module Squared
|
|
177
182
|
def style(name, *args, target: nil, empty: false)
|
178
183
|
data = nil
|
179
184
|
if target
|
180
|
-
as_a(target).each_with_index do |
|
185
|
+
as_a(target).each_with_index do |key, i|
|
181
186
|
if i == 0
|
182
|
-
break unless (data = __get__(:theme)[
|
187
|
+
break unless (data = __get__(:theme)[key.to_sym])
|
183
188
|
else
|
184
|
-
data = data[
|
189
|
+
data = data[key.to_sym] ||= {}
|
185
190
|
end
|
186
191
|
end
|
187
|
-
return unless data
|
188
192
|
end
|
189
|
-
apply_style(data || theme, name, *args, empty: empty)
|
193
|
+
apply_style(data || theme, name, *args, empty: empty) unless target && !data
|
190
194
|
self
|
191
195
|
end
|
192
196
|
|
193
|
-
def script(group: nil, ref: nil)
|
197
|
+
def script(*args, group: nil, ref: nil)
|
194
198
|
if group
|
195
199
|
@script[:group][group.to_sym]
|
196
200
|
elsif ref
|
197
201
|
@script[:ref][ref.to_sym]
|
202
|
+
elsif (val = @script[:build])
|
203
|
+
r = @script[:ref][:_]
|
204
|
+
g = @script[:group][:_]
|
205
|
+
args.empty? || (!r && !g) || (r && args.include?(r)) || (g && args.include?(g)) ? [val, @script[:env]] : []
|
198
206
|
else
|
199
|
-
|
207
|
+
[]
|
200
208
|
end
|
201
209
|
end
|
202
210
|
|
203
211
|
def env(key, default = nil, equals: nil, ignore: nil)
|
204
|
-
|
212
|
+
@env ||= main.gsub(/[^\w]+/, '_').upcase
|
213
|
+
ret = ENV.fetch("#{key}_#{@env}", ENV[key]).to_s
|
205
214
|
return ret == equals.to_s unless equals.nil?
|
206
215
|
|
207
216
|
ret.empty? || (ignore && as_a(ignore).any? { |val| ret == val.to_s }) ? default : ret
|
@@ -216,7 +225,7 @@ module Squared
|
|
216
225
|
end
|
217
226
|
|
218
227
|
def find_base(obj)
|
219
|
-
Application.
|
228
|
+
Application.impl_project.find { |proj| obj.instance_of?(proj) }
|
220
229
|
end
|
221
230
|
|
222
231
|
def to_s
|
@@ -234,14 +243,14 @@ module Squared
|
|
234
243
|
def task_base?(key, val)
|
235
244
|
return val if task_defined?(key)
|
236
245
|
|
237
|
-
val if key == :refresh && series
|
246
|
+
val if key == :refresh && series.build.include?(val = "#{val.split(':').first}:build")
|
238
247
|
end
|
239
248
|
|
240
|
-
def
|
241
|
-
|
249
|
+
def task_extend?(obj, key)
|
250
|
+
series.extend?(obj, key)
|
242
251
|
end
|
243
252
|
|
244
|
-
def task_defined?(key)
|
253
|
+
def task_defined?(key, *)
|
245
254
|
::Rake::Task.task_defined?(key)
|
246
255
|
end
|
247
256
|
|
@@ -258,45 +267,48 @@ module Squared
|
|
258
267
|
private
|
259
268
|
|
260
269
|
def __build__(**kwargs)
|
261
|
-
if !task_defined?('default') && (default = kwargs[:default]) &&
|
262
|
-
task default
|
270
|
+
if !task_defined?('default') && (default = kwargs[:default]) && series.has?(default)
|
271
|
+
task 'default' => default
|
263
272
|
end
|
264
|
-
return unless series.has?(
|
273
|
+
return unless series.has?(:build)
|
265
274
|
|
266
|
-
|
267
|
-
refresh.clear
|
268
|
-
end
|
269
|
-
init = ['depend', dev? && series.has?('refresh') ? 'refresh' : 'build']
|
275
|
+
series.refresh.clear unless series.refresh.any? { |val| val.end_with?(':refresh') }
|
270
276
|
|
271
|
-
|
277
|
+
init = [:depend, dev? && series.has?(:refresh) ? :refresh : :build]
|
278
|
+
|
279
|
+
task 'default' => init[1] unless task_defined?('default')
|
272
280
|
|
273
281
|
return if task_defined?('init') || !series.has?(init[0])
|
274
282
|
|
275
283
|
desc 'init'
|
276
|
-
task init
|
284
|
+
task 'init' => init
|
277
285
|
end
|
278
286
|
|
279
287
|
def script_command(task, val, group, ref)
|
280
288
|
if group
|
281
289
|
label = :group
|
282
|
-
items = as_a(group)
|
290
|
+
items = as_a(group, :to_sym)
|
283
291
|
else
|
284
292
|
label = :ref
|
285
|
-
items = as_a(ref)
|
293
|
+
items = as_a(ref, :to_sym)
|
286
294
|
end
|
287
|
-
items.each { |name| (@script[label][name
|
295
|
+
items.each { |name| (@script[label][name] ||= {})[task] = val }
|
288
296
|
self
|
289
297
|
end
|
290
298
|
|
291
299
|
def script?(state, script: nil, pat: nil, ref: nil, group: nil, global: false)
|
292
|
-
|
293
|
-
|
294
|
-
if global && ((!ref && !group) || (!
|
300
|
+
r = @script[:ref][:_]
|
301
|
+
g = @script[:group][:_]
|
302
|
+
if global && ((!ref && !group) || (!r && !g) || (ref && contains?(r, ref)) || (group && contains?(g, group)))
|
295
303
|
pat = @script[state] if pat.nil?
|
296
304
|
script ||= @script[:build]
|
297
305
|
end
|
298
306
|
pat.is_a?(::Regexp) ? pat.match?(script) : pat == true
|
299
307
|
end
|
308
|
+
|
309
|
+
def contains?(data, val)
|
310
|
+
as_a(data).any? { |item| item.to_s == val.to_s }
|
311
|
+
end
|
300
312
|
end
|
301
313
|
end
|
302
314
|
end
|