Class: Gitomator::Task::BaseReposTask
- Defined in:
- lib/gitomator/task/base_repos_task.rb
Direct Known Subclasses
Instance Attribute Summary collapse
-
#local_dir ⇒ Object
readonly
String or nil.
-
#repos ⇒ Object
readonly
Array<String>.
Attributes inherited from BaseTask
Instance Method Summary collapse
-
#after_processing_all_repos {|result2mark, repo2error| ... } ⇒ Object
Inject a block that will run after all repos have been processed.
-
#before_processing_any_repos(&block) ⇒ Object
Inject a block that will run before processing any repos.
-
#initialize(context, repos, local_dir = nil) ⇒ BaseReposTask
constructor
A new instance of BaseReposTask.
-
#process_repo(repo, index) ⇒ Object
You need to override this method!.
-
#process_repo_error(repo, index, error) ⇒ Object
Override this to provide custom error handling.
- #run ⇒ Object
Methods inherited from BaseTask
Constructor Details
#initialize(context, repos, local_dir = nil) ⇒ BaseReposTask
Returns a new instance of BaseReposTask.
15 16 17 18 19 20 21 22 23 |
# File 'lib/gitomator/task/base_repos_task.rb', line 15 def initialize(context, repos, local_dir=nil) super(context) unless local_dir.nil? raise "No such directory #{local_dir}" unless Dir.exists? local_dir end @local_dir = local_dir @repos = repos @blocks = { :before => [], :after => [] } end |
Instance Attribute Details
#local_dir ⇒ Object (readonly)
String or nil
7 8 9 |
# File 'lib/gitomator/task/base_repos_task.rb', line 7 def local_dir @local_dir end |
#repos ⇒ Object (readonly)
Array<String>
8 9 10 |
# File 'lib/gitomator/task/base_repos_task.rb', line 8 def repos @repos end |
Instance Method Details
#after_processing_all_repos {|result2mark, repo2error| ... } ⇒ Object
Inject a block that will run after all repos have been processed.
80 81 82 |
# File 'lib/gitomator/task/base_repos_task.rb', line 80 def after_processing_all_repos(&block) @blocks[:after].push block end |
#before_processing_any_repos(&block) ⇒ Object
Inject a block that will run before processing any repos. The blocks takes no arguments, and doesn’t (need to) return any specific value.
69 70 71 |
# File 'lib/gitomator/task/base_repos_task.rb', line 69 def before_processing_any_repos(&block) @blocks[:before].push block end |
#process_repo(repo, index) ⇒ Object
You need to override this method!
53 54 55 |
# File 'lib/gitomator/task/base_repos_task.rb', line 53 def process_repo(repo, index) raise "Unimplemented" end |
#process_repo_error(repo, index, error) ⇒ Object
Override this to provide custom error handling
60 61 62 |
# File 'lib/gitomator/task/base_repos_task.rb', line 60 def process_repo_error(repo, index, error) logger.error "#{repo} : #{error}\n#{error.backtrace.join("\n\t")}" end |
#run ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/gitomator/task/base_repos_task.rb', line 27 def run() @blocks[:before].each {|b| self.instance_exec(&b) } repo2result, repo2error = {}, {} repos.each_with_index do |repo, index| logger.debug "#{repo} (#{index + 1} out of #{repos.length})" begin repo2result[repo] = process_repo(repo, index) rescue => e process_repo_error(repo, index, e) repo2error[repo] = e end end @blocks[:after].each {|b| self.instance_exec(repo2result, repo2error, &b) } end |