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 =
"0.3.3"
Class Method Summary collapse
-
.find_task_file ⇒ Object
Search the current directory and its ancestors for a .loki task file.
-
.run!(argv) ⇒ Object
Main entry point invoked by the asgard executable.
Class Method Details
.find_task_file ⇒ Object
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 44 45 |
# 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.}" rescue Error => e abort "asgard: #{e.}" rescue Interrupt exit(130) end |