Class: Squared::Workspace::Application
- Inherits:
-
Object
- Object
- Squared::Workspace::Application
- Includes:
- Rake::DSL, Common::Format, Git, Repo, Utils
- Defined in:
- lib/squared/workspace/application.rb
Constant Summary collapse
- @@task_desc =
Rake::TaskManager.
Constants included from Common
Class Attribute Summary collapse
-
.attr_banner ⇒ Object
Returns the value of attribute attr_banner.
-
.impl_project ⇒ Object
Returns the value of attribute impl_project.
-
.impl_series ⇒ Object
Returns the value of attribute impl_series.
-
.kind_project ⇒ Object
readonly
Returns the value of attribute kind_project.
Instance Attribute Summary collapse
-
#closed ⇒ Object
readonly
Returns the value of attribute closed.
-
#exception ⇒ Object
readonly
Returns the value of attribute exception.
-
#home ⇒ Object
readonly
Returns the value of attribute home.
-
#main ⇒ Object
readonly
Returns the value of attribute main.
-
#pipe ⇒ Object
readonly
Returns the value of attribute pipe.
-
#prefix ⇒ Object
readonly
Returns the value of attribute prefix.
-
#root ⇒ Object
readonly
Returns the value of attribute root.
-
#series ⇒ Object
readonly
Returns the value of attribute series.
-
#theme ⇒ Object
readonly
Returns the value of attribute theme.
-
#verbose ⇒ Object
readonly
Returns the value of attribute verbose.
-
#warning ⇒ Object
readonly
Returns the value of attribute warning.
Attributes included from Repo
Class Method Summary collapse
- .baseref ⇒ Object
- .find(ref = nil, path: nil) ⇒ Object
- .implement(*objs, base: false) ⇒ Object
- .to_s ⇒ Object
Instance Method Summary collapse
- #add(path, project = nil, **kwargs, &blk) ⇒ Object
- #apply(&blk) ⇒ Object
- #banner(*args, command: true, styles: nil, border: nil, group: @group, ref: @ref) ⇒ Object
- #banner_get(*ref, group: nil) ⇒ Object
- #baseref ⇒ Object
- #build(parallel: [], **kwargs) {|_self| ... } ⇒ Object
- #clean(script, group: @group, ref: @ref, on: nil) ⇒ Object
- #compose(name, &blk) ⇒ Object
- #depend(script, group: @group, ref: @ref, on: nil) ⇒ Object
- #describe(data) ⇒ Object
- #dev?(**kwargs) ⇒ Boolean
- #doc(script, group: @group, ref: @ref, on: nil) ⇒ Object
- #enabled? ⇒ Boolean
- #events_get(*args, group: nil, ref: nil) ⇒ Object
- #exclude(base, group: @group, ref: @ref) ⇒ Object
- #find(path = nil, name: nil, group: nil, ref: nil, &blk) ⇒ Object
- #find_base(obj) ⇒ Object
- #format_desc(val, opts = nil, arg: 'opts*', before: nil, after: nil, out: false) ⇒ Object
- #get(name, &blk) ⇒ Object
- #graph(script, group: @group, ref: @ref, on: nil) ⇒ Object
- #group(path, val, override: {}, **kwargs, &blk) ⇒ Object
- #home? ⇒ Boolean
- #homepath(*args) ⇒ Object
-
#initialize(home = Dir.pwd, main: nil, prefix: nil, verbose: , common: , pipe: , exception: ) ⇒ Application
constructor
A new instance of Application.
- #initialize_session ⇒ Object
- #inspect ⇒ Object
- #invokeargs ⇒ Object
- #jruby? ⇒ Boolean
- #jruby_win? ⇒ Boolean
- #log(script, group: @group, ref: @ref) ⇒ Object
- #prod?(**kwargs) ⇒ Boolean
- #pwd ⇒ Object
- #rootpath(*args) ⇒ Object
- #run(script, group: @group, ref: @ref, on: nil) ⇒ Object
- #script_find(*args) ⇒ Object
- #script_get(*args, group: nil, ref: nil) ⇒ Object
- #style(obj, *args, target: nil, empty: false) ⇒ Object
- #task_base?(key) ⇒ Boolean
- #task_defined?(*key) ⇒ Boolean
- #task_desc(*args, **kwargs) ⇒ Object
- #task_extend?(obj, key) ⇒ Boolean
- #task_include?(obj, key, ref = nil) ⇒ Boolean
- #task_localname(val) ⇒ Object
- #task_name(val) ⇒ Object
- #task_namespace(val, first: false) ⇒ Object
- #task_resolve(obj, key) ⇒ Object
- #task_sync(key) ⇒ Object
- #test(script, group: @group, ref: @ref, on: nil) ⇒ Object
- #to_s ⇒ Object
- #windows? ⇒ Boolean
- #with(*val, group: nil, **kwargs, &blk) ⇒ Object
Methods included from Repo
Methods included from Git
Methods included from Common::Format
Constructor Details
#initialize(home = Dir.pwd, main: nil, prefix: nil, verbose: , common: , pipe: , exception: ) ⇒ Application
Returns a new instance of Application.
71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 |
# File 'lib/squared/workspace/application.rb', line 71 def initialize(home = Dir.pwd, *, main: nil, prefix: nil, verbose: ARG[:VERBOSE], common: ARG[:COMMON], pipe: ARG[:PIPE], exception: ARG[:FAIL], **) @home = Pathname.new(home).realdirpath basename = @home.basename.to_s if main @main = main.to_s.freeze @home = @home.join(@main) unless @main == basename || (windows? && @main.downcase == basename.downcase) else @main = basename.freeze end @root = @home.parent @prefix = prefix @series = Application.impl_series.new(self) @project = {} @kind = {} @extensions = [] @pipe = env_pipe(pipe, (ARG[:OUT] && env(ARG[:OUT])) || 1, root: @home) @exception = env_bool(exception) @verbose = env_bool(verbose, verbose.nil? || verbose.is_a?(String) ? @pipe != 0 : verbose) @warning = @verbose != false @closed = false if common @theme = __get__(:theme)[:workspace] ARG[:COLOR] = false if @pipe == 0 || @pipe.is_a?(Pathname) else @theme = {} end @script = { group: {}, ref: {}, group!: {}, ref!: {} }.freeze @events = { group: {}, ref: {} }.freeze @banner = { group: {}, ref: {} }.freeze initialize_session end |
Class Attribute Details
.attr_banner ⇒ Object
Returns the value of attribute attr_banner.
63 64 65 |
# File 'lib/squared/workspace/application.rb', line 63 def @attr_banner end |
.impl_project ⇒ Object
Returns the value of attribute impl_project.
63 64 65 |
# File 'lib/squared/workspace/application.rb', line 63 def impl_project @impl_project end |
.impl_series ⇒ Object
Returns the value of attribute impl_series.
63 64 65 |
# File 'lib/squared/workspace/application.rb', line 63 def impl_series @impl_series end |
.kind_project ⇒ Object (readonly)
Returns the value of attribute kind_project.
62 63 64 |
# File 'lib/squared/workspace/application.rb', line 62 def kind_project @kind_project end |
Instance Attribute Details
#closed ⇒ Object (readonly)
Returns the value of attribute closed.
69 70 71 |
# File 'lib/squared/workspace/application.rb', line 69 def closed @closed end |
#exception ⇒ Object (readonly)
Returns the value of attribute exception.
69 70 71 |
# File 'lib/squared/workspace/application.rb', line 69 def exception @exception end |
#home ⇒ Object (readonly)
Returns the value of attribute home.
69 70 71 |
# File 'lib/squared/workspace/application.rb', line 69 def home @home end |
#main ⇒ Object (readonly)
Returns the value of attribute main.
69 70 71 |
# File 'lib/squared/workspace/application.rb', line 69 def main @main end |
#pipe ⇒ Object (readonly)
Returns the value of attribute pipe.
69 70 71 |
# File 'lib/squared/workspace/application.rb', line 69 def pipe @pipe end |
#prefix ⇒ Object (readonly)
Returns the value of attribute prefix.
69 70 71 |
# File 'lib/squared/workspace/application.rb', line 69 def prefix @prefix end |
#root ⇒ Object (readonly)
Returns the value of attribute root.
69 70 71 |
# File 'lib/squared/workspace/application.rb', line 69 def root @root end |
#series ⇒ Object (readonly)
Returns the value of attribute series.
69 70 71 |
# File 'lib/squared/workspace/application.rb', line 69 def series @series end |
#theme ⇒ Object (readonly)
Returns the value of attribute theme.
69 70 71 |
# File 'lib/squared/workspace/application.rb', line 69 def theme @theme end |
#verbose ⇒ Object (readonly)
Returns the value of attribute verbose.
69 70 71 |
# File 'lib/squared/workspace/application.rb', line 69 def verbose @verbose end |
#warning ⇒ Object (readonly)
Returns the value of attribute warning.
69 70 71 |
# File 'lib/squared/workspace/application.rb', line 69 def warning @warning end |
Class Method Details
.baseref ⇒ Object
54 55 56 |
# File 'lib/squared/workspace/application.rb', line 54 def baseref impl_project.ref end |
.find(ref = nil, path: nil) ⇒ Object
46 47 48 49 50 51 52 |
# File 'lib/squared/workspace/application.rb', line 46 def find(ref = nil, path: nil) if ref && (ret = kind_project.find { |proj| proj.ref == ref }) ret elsif path kind_project.find { |proj| proj.config?(path) } end end |
.implement(*objs, base: false) ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/squared/workspace/application.rb', line 21 def implement(*objs, base: false) return if base && objs.size > 1 objs.each do |obj| next unless base || obj < impl_project if base @impl_project = obj impl_series.base_set(obj) else kind_project.unshift(obj) obj.tasks&.each { |task| impl_series.add(task, obj) } end if (args = obj.batchargs) impl_series.batch(*args) end if (args = obj.aliasargs) impl_series.alias(*args) end if (args = obj.) @attr_banner += args end end end |
.to_s ⇒ Object
58 59 60 |
# File 'lib/squared/workspace/application.rb', line 58 def to_s super.match(/[^:]+\z/)[0] end |
Instance Method Details
#add(path, project = nil, **kwargs, &blk) ⇒ Object
249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 |
# File 'lib/squared/workspace/application.rb', line 249 def add(path, project = nil, **kwargs, &blk) if @withargs data = @withargs.dup data.merge!(kwargs) kwargs = data end ref = if kwargs.key?(:ref) kwargs = kwargs.dup unless @withargs kwargs.delete(:ref) elsif @ref.is_a?(Symbol) @ref end if @group.is_a?(String) && !kwargs.key?(:group) kwargs = kwargs.dup unless @withargs kwargs[:group] = @group end path = rootpath(path) project = (project || path.basename).to_s name = task_name(project) index = 0 while @project[name] index += 1 name = task_name "#{project}-#{index}" end proj = ((if !ref.is_a?(Class) Application.find(ref, path: path) elsif ref < Project::Base ref end) || @kind[name]&.last || Project::Base).new(self, path, name, **kwargs) @project[name] = proj __get__(:project)[name] = proj unless kwargs[:private] proj.instance_eval(&blk) if block_given? self end |
#apply(&blk) ⇒ Object
304 305 306 307 |
# File 'lib/squared/workspace/application.rb', line 304 def apply(&blk) instance_eval(&blk) self end |
#banner(*args, command: true, styles: nil, border: nil, group: @group, ref: @ref) ⇒ Object
211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 |
# File 'lib/squared/workspace/application.rb', line 211 def (*args, command: true, styles: nil, border: nil, group: @group, ref: @ref) data = { command: command, order: [], styles: check_style(styles, empty: false), border: check_style(border) } args.each do |meth| if meth.is_a?(Array) found = false meth = meth.select do |val| case val when Symbol found = true Application..include?(val) when String true else false end end if !found next elsif meth.size == 1 meth = meth.first end elsif !Application..include?(meth = meth.to_sym) next end data[:order] << meth end data = {} if !command && data[:order].empty? if group label = :group items = as_a(group) else label = :ref items = ref ? as_a(ref) : [:_] end items.each { |val| @banner[label][val.to_sym] = data } self end |
#banner_get(*ref, group: nil) ⇒ Object
507 508 509 510 511 512 513 |
# File 'lib/squared/workspace/application.rb', line 507 def (*ref, group: nil) ret = nil return ret if group && (ret = @banner[:group][group.to_sym]) ref.reverse_each { |val| return ret if (ret = @banner[:ref][val]) } @banner[:ref][:''] end |
#baseref ⇒ Object
571 572 573 |
# File 'lib/squared/workspace/application.rb', line 571 def baseref Application.baseref end |
#build(parallel: [], **kwargs) {|_self| ... } ⇒ Object
123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 |
# File 'lib/squared/workspace/application.rb', line 123 def build(parallel: [], **kwargs) return self unless enabled? && !@closed if kwargs[:pattern].is_a?(Array) kwargs[:parallel] = parallel.map(&:to_s) else kwargs[:pattern] = [] kwargs[:parallel] = parallel.reject { |val| val.is_a?(Regexp) && (kwargs[:pattern] << val) } .map(&:to_s) end @project.each_value do |proj| if proj.enabled? proj.populate(series.keys.dup, **kwargs) elsif proj.enabled?(base: false) proj.generate([], **kwargs) else next end series.populate(proj) end Application.kind_project.each { |obj| obj.populate(self, **kwargs) } @extensions.uniq.each { |ext| __send__(ext, **kwargs) } series.build(**kwargs) __build__(**kwargs) yield self if block_given? @closed = true self end |
#clean(script, group: @group, ref: @ref, on: nil) ⇒ Object
191 192 193 |
# File 'lib/squared/workspace/application.rb', line 191 def clean(script, group: @group, ref: @ref, on: nil) script_command :clean, script, group, ref, on end |
#compose(name, &blk) ⇒ Object
299 300 301 302 |
# File 'lib/squared/workspace/application.rb', line 299 def compose(name, &blk) namespace(task_name(name), &blk) if block_given? self end |
#depend(script, group: @group, ref: @ref, on: nil) ⇒ Object
183 184 185 |
# File 'lib/squared/workspace/application.rb', line 183 def depend(script, group: @group, ref: @ref, on: nil) script_command :depend, script, group, ref, on end |
#describe(data) ⇒ Object
324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 |
# File 'lib/squared/workspace/application.rb', line 324 def describe(data) @describe ||= { alias: {}, replace: [], pattern: {} } data.each do |key, val| key = key.to_s if /\A(\\A|\^)/ =~ key || /(\\z|\$)\z/ =~ key @describe[:replace] << [Regexp.new(key), val] else @describe[val.is_a?(Regexp) ? :pattern : :alias][key.to_s] = val end end self end |
#dev?(**kwargs) ⇒ Boolean
535 536 537 |
# File 'lib/squared/workspace/application.rb', line 535 def dev?(**kwargs) script?(:dev, **kwargs) end |
#doc(script, group: @group, ref: @ref, on: nil) ⇒ Object
195 196 197 |
# File 'lib/squared/workspace/application.rb', line 195 def doc(script, group: @group, ref: @ref, on: nil) script_command :doc, script, group, ref, on end |
#enabled? ⇒ Boolean
515 516 517 |
# File 'lib/squared/workspace/application.rb', line 515 def enabled? !@extensions.empty? || @project.values.any? { |proj| proj.enabled?(base: false) } end |
#events_get(*args, group: nil, ref: nil) ⇒ Object
503 504 505 |
# File 'lib/squared/workspace/application.rb', line 503 def events_get(*args, group: nil, ref: nil) data_get(*args, group: group, ref: ref, target: @events) end |
#exclude(base, group: @group, ref: @ref) ⇒ Object
207 208 209 |
# File 'lib/squared/workspace/application.rb', line 207 def exclude(base, group: @group, ref: @ref) script_command :exclude, as_a(base, :to_sym).freeze, group, ref end |
#find(path = nil, name: nil, group: nil, ref: nil, &blk) ⇒ Object
341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 |
# File 'lib/squared/workspace/application.rb', line 341 def find(path = nil, name: nil, group: nil, ref: nil, &blk) ret = group ? @project.select { |_, item| item.group == group }.map(&:last) : [] if path.is_a?(Symbol) ref ||= path path = nil end if ret.empty? ret = @project.select { |_, item| item.ref?(ref) }.map(&:last) if ref if ret.empty? && (path || name) path &&= rootpath(path) name &&= name.to_s proj = @project.find { |_, item| (path && item.path == path) || (name && item.name == name) }&.last ret << proj if proj end end return (group || ref ? ret : ret[0]) unless block_given? ret.each(&blk) self end |
#find_base(obj) ⇒ Object
370 371 372 |
# File 'lib/squared/workspace/application.rb', line 370 def find_base(obj) Application.kind_project.find { |proj| obj.instance_of?(proj) } end |
#format_desc(val, opts = nil, arg: 'opts*', before: nil, after: nil, out: false) ⇒ Object
470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 |
# File 'lib/squared/workspace/application.rb', line 470 def format_desc(val, opts = nil, arg: 'opts*', before: nil, after: nil, out: false) return unless @@task_desc || out val = val.to_s.split(':') if val.is_a?(String) if before || after || opts pos = [] pos << (before.is_a?(Array) ? before.join(',') : before) if before if opts pos << if opts.is_a?(Array) arg ? "#{arg}=#{opts.join(',')}" : opts.join('|') else opts end end pos << (after.is_a?(Array) ? after.join(',') : after) if after val << "#{val.pop}[#{pos.join(',')}]" end out ? (*val) : task_desc(*val) end |
#get(name, &blk) ⇒ Object
362 363 364 365 366 367 368 |
# File 'lib/squared/workspace/application.rb', line 362 def get(name, &blk) ret = @project[name.to_s] return ret unless block_given? ret&.instance_eval(&blk) self end |
#graph(script, group: @group, ref: @ref, on: nil) ⇒ Object
187 188 189 |
# File 'lib/squared/workspace/application.rb', line 187 def graph(script, group: @group, ref: @ref, on: nil) script_command :graph, as_a(script, :to_s).freeze, group, ref, on end |
#group(path, val, override: {}, **kwargs, &blk) ⇒ Object
284 285 286 287 288 289 290 291 292 293 294 295 296 297 |
# File 'lib/squared/workspace/application.rb', line 284 def group(path, val, override: {}, **kwargs, &blk) rootpath(path).children.map do |dir| next unless dir.directory? basename = dir.basename.to_s [dir, basename, override[basename.to_sym]] end .each do |dir, basename, opts| args = kwargs.dup args.merge!(opts) if opts add(dir, basename, group: val, **args, &blk) end self end |
#home? ⇒ Boolean
543 544 545 |
# File 'lib/squared/workspace/application.rb', line 543 def home? !(proj = find(home)).nil? && proj.enabled? end |
#homepath(*args) ⇒ Object
563 564 565 |
# File 'lib/squared/workspace/application.rb', line 563 def homepath(*args) home.join(*args) end |
#initialize_session ⇒ Object
115 116 117 118 119 120 121 |
# File 'lib/squared/workspace/application.rb', line 115 def initialize_session @envname = @main.gsub(/[^\w]+/, '_').upcase.freeze return unless @pipe.is_a?(Pathname) bord = '#' * Project.line_width puts bord, format('Session started on %s by %s', Time.now.to_s, @main), bord end |
#inspect ⇒ Object
583 584 585 |
# File 'lib/squared/workspace/application.rb', line 583 def inspect "#<#{self.class}: #{main} => #{self}>" end |
#invokeargs ⇒ Object
575 576 577 |
# File 'lib/squared/workspace/application.rb', line 575 def invokeargs { exception: exception, warning: warning } end |
#jruby? ⇒ Boolean
551 552 553 |
# File 'lib/squared/workspace/application.rb', line 551 def jruby? RUBY_ENGINE == 'jruby' end |
#jruby_win? ⇒ Boolean
555 556 557 |
# File 'lib/squared/workspace/application.rb', line 555 def jruby_win? jruby? && windows? end |
#log(script, group: @group, ref: @ref) ⇒ Object
203 204 205 |
# File 'lib/squared/workspace/application.rb', line 203 def log(script, group: @group, ref: @ref) script_command :log, script, group, ref end |
#prod?(**kwargs) ⇒ Boolean
539 540 541 |
# File 'lib/squared/workspace/application.rb', line 539 def prod?(**kwargs) script?(:prod, **kwargs) end |
#pwd ⇒ Object
567 568 569 |
# File 'lib/squared/workspace/application.rb', line 567 def pwd Pathname.new(Rake.application.original_dir) end |
#rootpath(*args) ⇒ Object
559 560 561 |
# File 'lib/squared/workspace/application.rb', line 559 def rootpath(*args) root.join(*args) end |
#run(script, group: @group, ref: @ref, on: nil) ⇒ Object
179 180 181 |
# File 'lib/squared/workspace/application.rb', line 179 def run(script, group: @group, ref: @ref, on: nil) script_command :run, script, group, ref, on end |
#script_find(*args) ⇒ Object
490 491 492 493 494 495 496 497 |
# File 'lib/squared/workspace/application.rb', line 490 def script_find(*args) args.reverse_each do |val| next unless val && (ret = val.is_a?(Symbol) ? @script[:ref!][val] : @script[:group!][val.to_sym]) return ret end @script[:ref!][:''] || SCRIPT_OBJ end |
#script_get(*args, group: nil, ref: nil) ⇒ Object
499 500 501 |
# File 'lib/squared/workspace/application.rb', line 499 def script_get(*args, group: nil, ref: nil) data_get(*args, group: group, ref: ref, target: @script) end |
#style(obj, *args, target: nil, empty: false) ⇒ Object
309 310 311 312 313 314 315 316 317 318 319 320 321 322 |
# File 'lib/squared/workspace/application.rb', line 309 def style(obj, *args, target: nil, empty: false) data = nil if target as_a(target).each_with_index do |key, i| if i == 0 break unless (data = __get__(:theme)[key.to_sym]) else data = data[key.to_sym] ||= {} end end end apply_style(data || theme, obj, args, empty: empty) unless target && !data self end |
#task_base?(key) ⇒ Boolean
519 520 521 |
# File 'lib/squared/workspace/application.rb', line 519 def task_base?(key) series.base?(key) end |
#task_defined?(*key) ⇒ Boolean
531 532 533 |
# File 'lib/squared/workspace/application.rb', line 531 def task_defined?(*key) Rake::Task.task_defined?(key.size == 1 ? key.first : task_join(*key)) end |
#task_desc(*args, **kwargs) ⇒ Object
382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 |
# File 'lib/squared/workspace/application.rb', line 382 def task_desc(*args, **kwargs) return unless @@task_desc name = kwargs.delete(:name) if @describe val = name || task_join(*args) found = false replace = lambda do |data, out| if (index = data.size) > 0 data.to_a.reverse_each { |group| out.sub!("%#{index -= 1}", group) } end out end @describe[:replace].each do |pat, key| next unless (data = pat.match(val)) val = replace.(data, key.dup) found = true end if (out = @describe[:alias][val]) val = out found = true else @describe[:pattern].each do |key, pat| next unless (data = pat.match(val)) val = replace.(data, key.dup) found = true break end end args = Shell.split_escape(val, char: ':').map! { |s| s.gsub('\\:', ':') } if found end desc (*args, **kwargs) end |
#task_extend?(obj, key) ⇒ Boolean
523 524 525 |
# File 'lib/squared/workspace/application.rb', line 523 def task_extend?(obj, key) series.extend?(obj, key) end |
#task_include?(obj, key, ref = nil) ⇒ Boolean
527 528 529 |
# File 'lib/squared/workspace/application.rb', line 527 def task_include?(obj, key, ref = nil) task_base?(key) ? obj.has?(key, ref || baseref) : task_extend?(obj, key) end |
#task_localname(val) ⇒ Object
378 379 380 |
# File 'lib/squared/workspace/application.rb', line 378 def task_localname(val) prefix && val.is_a?(String) ? val.sub(/\A#{Regexp.escape(prefix)}:/, '') : val.to_s end |
#task_name(val) ⇒ Object
374 375 376 |
# File 'lib/squared/workspace/application.rb', line 374 def task_name(val) prefix ? task_join(prefix, val) : val.to_s end |
#task_namespace(val, first: false) ⇒ Object
418 419 420 421 422 |
# File 'lib/squared/workspace/application.rb', line 418 def task_namespace(val, first: false) return nil unless (ret = val.to_s.split(':')).size > 1 first ? ret.first : task_join(*ret[0..-2]) end |
#task_resolve(obj, key) ⇒ Object
424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 |
# File 'lib/squared/workspace/application.rb', line 424 def task_resolve(obj, key) tasks = [] if (base = task_base?(key)) tasks << key if obj.has?(key, baseref) elsif (batch = series.batch_get(key)) obj.allref.each do |ref| next unless obj.has?(key, ref) && (data = batch[ref]) data.each do |val| if (items = task_resolve(obj, val)).empty? tasks.clear break end tasks += items end return tasks unless tasks.empty? end elsif task_extend?(obj, key) tasks << key end ret = [] if tasks.empty? return [] if (base && !obj.ref?(baseref)) || !(data = series.alias_get(key)) obj.allref.each do |ref| next unless obj.has?(key, ref) && (alt = data[ref]) ret = task_resolve(obj, alt) break unless ret.empty? end else tasks.each do |val| target = task_join(obj.name, series.name_get(val)) return [] unless task_defined?(target) ret << target end end ret end |
#task_sync(key) ⇒ Object
465 466 467 468 |
# File 'lib/squared/workspace/application.rb', line 465 def task_sync(key) key = task_name(key) task_defined?(ret = task_join(key, 'sync')) ? ret : key end |
#test(script, group: @group, ref: @ref, on: nil) ⇒ Object
199 200 201 |
# File 'lib/squared/workspace/application.rb', line 199 def test(script, group: @group, ref: @ref, on: nil) script_command :test, script, group, ref, on end |
#to_s ⇒ Object
579 580 581 |
# File 'lib/squared/workspace/application.rb', line 579 def to_s (home? ? home : root).to_s end |
#windows? ⇒ Boolean
547 548 549 |
# File 'lib/squared/workspace/application.rb', line 547 def windows? Rake::Win32.windows? end |
#with(*val, group: nil, **kwargs, &blk) ⇒ Object
155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 |
# File 'lib/squared/workspace/application.rb', line 155 def with(*val, group: nil, **kwargs, &blk) @group = nil @ref = nil @withargs = kwargs.empty? ? nil : kwargs val = as_a(group || kwargs[:ref], flat: true, compact: true) if val.empty? kind = val.first val = kind if val.size == 1 case kind when String @group = val when Symbol @ref = val else raise_error('group{Symbol} | ref{String}', hint: 'missing') if block_given? end if block_given? instance_eval(&blk) @group = nil @ref = nil @withargs = nil end self end |