class Tasking::Namespace

Attributes

name[R]
options[R]

Public Class Methods

add_namespace( ns ) click to toggle source
# File lib/tasking/namespace.rb, line 14
def self.add_namespace( ns )
  namespaces[ns.name] = ns
end
all() click to toggle source
# File lib/tasking/namespace.rb, line 10
def self.all
  namespaces.values
end
find_namespace( name ) click to toggle source
# File lib/tasking/namespace.rb, line 18
def self.find_namespace( name )
  namespaces[name]
end
find_or_create( name, options = {} ) click to toggle source
# File lib/tasking/namespace.rb, line 33
def self.find_or_create( name, options = {} )
  find_namespace( name ) || new( name, options )
end
find_task( full_name ) click to toggle source
# File lib/tasking/namespace.rb, line 27
def self.find_task( full_name )
  namespace_name, _, task_name = full_name.rpartition( '::' )

  self.find_task_in_namespace( namespace_name, task_name )
end
find_task_in_namespace( ns_name, task_name ) click to toggle source
# File lib/tasking/namespace.rb, line 22
def self.find_task_in_namespace( ns_name, task_name )
  ns = find_namespace( ns_name )
  ns&.find_task( task_name )
end
new( name, options = {} ) click to toggle source
# File lib/tasking/namespace.rb, line 37
def initialize( name, options = {} )
  @tasks = {}
  @name = name
  @options = Options.build( options )
  
  self.class.add_namespace( self )
end

Private Class Methods

namespaces() click to toggle source
# File lib/tasking/namespace.rb, line 5
def self.namespaces
  @namespaces ||= {}
end

Public Instance Methods

execute( options = {}, &block ) click to toggle source
# File lib/tasking/namespace.rb, line 55
def execute( options = {}, &block )
  @options.merge!( options )
  block&.call
end
find_task( name ) click to toggle source
# File lib/tasking/namespace.rb, line 72
def find_task( name )
  @tasks[name]
end
merge_options( options ) click to toggle source
# File lib/tasking/namespace.rb, line 60
def merge_options( options )
  @options.merge!( options )
end
parent_namespace() click to toggle source
# File lib/tasking/namespace.rb, line 49
def parent_namespace
  parent_name, _, _ = @name.rpartition( '::' )

  parent_name.empty? ? nil : self.class.find_namespace( parent_name )
end
register_task( task ) click to toggle source
# File lib/tasking/namespace.rb, line 64
def register_task( task )
  @tasks[task.name] = task
end
tasks() click to toggle source
# File lib/tasking/namespace.rb, line 45
def tasks
  @tasks.values
end
unregister_task( task ) click to toggle source
# File lib/tasking/namespace.rb, line 68
def unregister_task( task )
  @tasks.delete( task.name )
end