class Pakyow::Task::Loader

Attributes

__arguments[R]
__description[R]
__flags[R]
__global[R]
__namespace[R]
__options[R]
__tasks[R]

Public Class Methods

new(path) click to toggle source
# File lib/pakyow/task.rb, line 244
def initialize(path)
  @__namespace = []
  @__description = nil
  @__arguments = {}
  @__options = {}
  @__flags = {}
  @__tasks = []
  @__global = false

  eval(File.read(path), binding, path)
end

Public Instance Methods

argument(name, description, required: false) click to toggle source
# File lib/pakyow/task.rb, line 267
def argument(name, description, required: false)
  @__arguments[name.to_sym] = {
    description: description,
    required: required
  }
end
desc(description)
Alias for: describe
describe(description) click to toggle source
# File lib/pakyow/task.rb, line 262
def describe(description)
  @__description = description
end
Also aliased as: desc
flag(name, description, short: nil) click to toggle source
# File lib/pakyow/task.rb, line 282
def flag(name, description, short: nil)
  @__flags[name.to_sym] = {
    description: description,
    short: short
  }
end
global_task(*args, &block) click to toggle source
# File lib/pakyow/task.rb, line 311
def global_task(*args, &block)
  @__global = true
  task(*args, &block)
end
namespace(name, &block) click to toggle source
# File lib/pakyow/task.rb, line 256
def namespace(name, &block)
  @__namespace << name.to_sym
  instance_exec(&block)
  @__namespace.pop
end
option(name, description, required: false, short: :default) click to toggle source
# File lib/pakyow/task.rb, line 274
def option(name, description, required: false, short: :default)
  @__options[name.to_sym] = {
    description: description,
    required: required,
    short: short
  }
end
task(*args, &block) click to toggle source
# File lib/pakyow/task.rb, line 289
def task(*args, &block)
  @__tasks << Task.new(
    namespace: @__namespace,
    description: @__description,
    arguments: @__arguments,
    options: CLI::GLOBAL_OPTIONS.select { |key, _|
      key == :env || args[1].to_a.include?(key)
    }.reject { |key, _|
      key == :env && args[0] == :prototype
    }.merge(@__options),
    flags: @__flags,
    task_args: args,
    global: @__global,
    &block
  )

  @__description = nil
  @__arguments = {}
  @__options = {}
  @__global = false
end