Module: Asgard

Defined in:
lib/asgard.rb,
lib/asgard/base.rb,
lib/asgard/shell.rb,
lib/asgard/doctor.rb,
lib/asgard/version.rb,
lib/asgard/base/dispatch.rb,
lib/asgard/base/registry.rb,
lib/asgard/base/task_dsl.rb,
lib/asgard/doctor/report.rb,
lib/asgard/doctor/task_sections.rb,
lib/asgard/base/dependency_graph.rb,
sig/asgard.rbs

Defined Under Namespace

Modules: Shell Classes: Base, CircularDependencyError, Doctor, Error

Constant Summary collapse

VERSION =

Returns:

  • (String)
"0.3.2"

Class Method Summary collapse

Class Method Details

.find_task_fileObject

Search the current directory and its ancestors for a .loki task file. Returns the path string, or nil if not found.



16
17
18
# File 'lib/asgard.rb', line 16

def self.find_task_file
  loki_up
end

.run!(argv) ⇒ Object

Main entry point invoked by the asgard executable.



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/asgard.rb', line 21

def self.run!(argv)
  first = argv.first
  abort "asgard: unknown command '#{first}'" if first&.start_with?("_")
  if argv.include?("--version")
    puts Asgard::VERSION
    exit
  end
  if argv.include?("--doctor")
    Asgard::Doctor.new.run
    exit
  end
  task_file = find_task_file or abort "asgard: no .loki file found in #{Dir.pwd}"
  before = Asgard::Base.subclasses.dup
  load task_file
  newly_defined = Asgard::Base.subclasses - before
  (newly_defined + [Tasks]).uniq.each(&:validate_deps!)
  Tasks._reset_ran!
  Tasks.start(argv)
rescue CircularDependencyError => e
  abort "asgard: circular dependency — #{e.message}"
rescue Error => e
  abort "asgard: #{e.message}"
end