Module: Anvil::TaskManager
- Defined in:
- lib/anvil/task_manager.rb
Overview
Manage loading and finding anvil tasks
Class Method Summary collapse
-
.all_files ⇒ Array
All known anvil task files.
-
.all_tasks ⇒ Array
All known Task desdendants.
-
.current_project_path ⇒ String
Top level dir if this is a git managed project.
-
.files_from_anvil ⇒ Array
All the core anvil tasks.
-
.files_from_current_project ⇒ Array
All possible anvil tasks in this project.
-
.files_from_env ⇒ Array
Anvil tasks in the specified dir.
-
.files_from_gems ⇒ Array
Anvil tasks installed in gems.
-
.files_from_path(path) ⇒ Array
All anvil tasks in the given path.
-
.load_tasks ⇒ Object
Loads all known anvil tasks.
- .tasks_by_name ⇒ Object
Class Method Details
.all_files ⇒ Array
Returns all known anvil task files.
60 61 62 63 64 65 |
# File 'lib/anvil/task_manager.rb', line 60 def self.all_files [files_from_env, files_from_anvil, files_from_current_project, files_from_gems].compact.reduce(&:+).uniq end |
.all_tasks ⇒ Array
Returns all known Anvil::Task desdendants.
68 69 70 71 |
# File 'lib/anvil/task_manager.rb', line 68 def self.all_tasks load_tasks unless @tasks_loaded ::Anvil::Task.descendants end |
.current_project_path ⇒ String
Returns top level dir if this is a git managed project.
31 32 33 34 35 |
# File 'lib/anvil/task_manager.rb', line 31 def self.current_project_path Rugged::Repository.discover(ENV['PWD']).gsub('.git/', '') rescue Rugged::RepositoryError '' end |
.files_from_anvil ⇒ Array
Returns all the core anvil tasks.
20 21 22 |
# File 'lib/anvil/task_manager.rb', line 20 def self.files_from_anvil files_from_path(File.('../..', __FILE__)) end |
.files_from_current_project ⇒ Array
Returns all possible anvil tasks in this project.
25 26 27 28 |
# File 'lib/anvil/task_manager.rb', line 25 def self.files_from_current_project path = current_project_path + '/lib/anvil/' files_from_path(path) end |
.files_from_env ⇒ Array
Returns anvil tasks in the specified dir.
49 50 51 52 53 54 55 56 57 |
# File 'lib/anvil/task_manager.rb', line 49 def self.files_from_env if ENV['ANVIL_TASKS_DIR'] env_dir_list = ENV['ANVIL_TASKS_DIR'].split(':').join(',') Dir["{#{env_dir_list}}/*_task.rb"] else [] end end |
.files_from_gems ⇒ Array
Returns anvil tasks installed in gems.
44 45 46 |
# File 'lib/anvil/task_manager.rb', line 44 def self.files_from_gems Gem.find_latest_files 'anvil/tasks/**/*_task.rb' end |
.files_from_path(path) ⇒ Array
Returns all anvil tasks in the given path.
39 40 41 |
# File 'lib/anvil/task_manager.rb', line 39 def self.files_from_path(path) Dir[path + '/tasks/**/*_task.rb'] end |
.load_tasks ⇒ Object
Loads all known anvil tasks
14 15 16 17 |
# File 'lib/anvil/task_manager.rb', line 14 def self.load_tasks all_files.each { |file| load(file) } @tasks_loaded = true end |
.tasks_by_name ⇒ Object
73 74 75 |
# File 'lib/anvil/task_manager.rb', line 73 def self.tasks_by_name all_tasks.sort_by { |t| t.name } end |