class Grouik::Process
Intended to wrap “Grouik::Loader“
Easify reusability through “Grouik::Cli“ or as standalone (for example in a Rake task)
Sample of use:
“` task 'src/ceres.rb' do
require 'grouik' Grouik.process do |process| process.verbose = false process.paths = ['lib'] process.basedir = 'src' process.output = 'src/ceres.rb' process.template = 'src/ceres.tpl' end.on_failure { exit Errno::ECANCELED::Errno }
end “`
Attributes
Public Class Methods
# File src/lib/grouik/process.rb, line 41 def initialize @output = nil @template = nil @bootstrap = nil @verbose = false @loader = Grouik::Loader.new yield self if block_given? @loader.register end
Public Instance Methods
Display encountered errors
@return [self]
# File src/lib/grouik/process.rb, line 104 def display_errors helpers.get(:process).display_errors(self) self end
Display status
@return [self]
# File src/lib/grouik/process.rb, line 113 def display_status helpers.get(:process).display_status(self) self end
Errors encountered during process
@return [Hash]
# File src/lib/grouik/process.rb, line 90 def errors loader.errors end
Denote errors encountered
@return [Boolean]
# File src/lib/grouik/process.rb, line 97 def errors? errors.empty? ? false : true end
Denote process is a failure
@return [Boolean]
# File src/lib/grouik/process.rb, line 129 def failure? !success? end
@param [Hash] options
# File src/lib/grouik/process.rb, line 83 def format(options = {}) @loader.format(options) end
Get loader
@return [Grouik::Loader]
# File src/lib/grouik/process.rb, line 174 def loader @loader.clone.freeze end
Provides access to public accessors
# File src/lib/grouik/process.rb, line 154 def method_missing(method, *args, &block) if respond_to_missing?(method) @loader.public_send(method, *args, &block) else super end end
Block executed on failure
@yield [self] Block executed when errors have been encountered @return [self]
# File src/lib/grouik/process.rb, line 137 def on_failure yield(self) if failure? self end
Block executed on success
@yield [self] Block executed when process is a success @return [self]
# File src/lib/grouik/process.rb, line 147 def on_success yield(self) if success? self end
@param [Pathname|String] output @return [Object]
# File src/lib/grouik/process.rb, line 58 def output=(output) @output = output.is_a?(String) ? Pathname.new(output) : output end
@return [self] @todo Do not suppress exceptions
# File src/lib/grouik/process.rb, line 64 def process @output.write('') if @output.respond_to?(:file?) and !@output.exist? if bootstrap begin require bootstrap if bootstrap rescue NameError rescue LoadError end end output = @loader.format(template: @template) display_errors # avoid to break previouly written file in case of failure @output.write(output) if success? self end
# File src/lib/grouik/process.rb, line 162 def respond_to_missing?(method, include_private = false) result = loader_accessors.include?(method.to_sym) unless result return super if include_private end result end
Denote process is a success
@return [Boolean]
# File src/lib/grouik/process.rb, line 122 def success? loader.loaded? and !errors? end
# File src/lib/grouik/process.rb, line 52 def verbose? !!@verbose end
Protected Instance Methods
Get loader public accessors
@return [Array]
# File src/lib/grouik/process.rb, line 192 def loader_accessors loader_attributes + loader_attributes.map { |m| ('%s=' % m).to_sym } end
Get loader public attributes
@return [Array]
# File src/lib/grouik/process.rb, line 183 def loader_attributes loader.public_methods .grep(/^\w+=$/) .map { |m| m.to_s.gsub(/=$/, '').to_sym } end