Class: Babushka::DepDefiner

Direct Known Subclasses

DepContext

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from LogHelpers

debug, deprecated!, log, log_block, log_error, log_ok, log_stderr, log_warn, removed!

Methods included from ShellHelpers

cmd_dir, current_username, log_shell, login_shell, raw_shell, shell, shell!, shell?, shell_cmd, sudo, which

Methods included from PathHelpers

cd, in_build_dir, in_download_dir

Methods included from RunHelpers

_by_babushka, added_by_babushka, append_to_file, babushka_config?, bundle_rake, change_line, change_with_sed, check_file, edited_by_babushka, erb_path_for, grep, hostname, insert_into_file, log_and_open, mysql, rake, render_erb, yaml

Methods included from Prompt::Helpers

confirm

Methods included from VersionOf::Helpers

VersionOf

Methods included from Vars::Helpers

define_var, merge, print_var_deprecation_for, set, var

Methods included from AcceptsBlockFor

#block_for, #default_block_for, #default_blocks, #has_block?, included, #specific_block_for, #store_block_for

Methods included from AcceptsValueFor

included, #store_value_for, #value_for

Methods included from AcceptsListFor

included, #list_for, #store_list_for

Constructor Details

#initialize(dep, &block) ⇒ DepDefiner

Returns a new instance of DepDefiner.



30
31
32
33
34
35
36
# File 'lib/babushka/dep_definer.rb', line 30

def initialize dep, &block
  @dependency = dep
  @payload = {}
  @block = block
  @loaded, @failed = false, false
  @current_platform = nil
end

Instance Attribute Details

#blockObject (readonly)

Returns the value of attribute block.



21
22
23
# File 'lib/babushka/dep_definer.rb', line 21

def block
  @block
end

#dependencyObject (readonly)

Returns the value of attribute dependency.



21
22
23
# File 'lib/babushka/dep_definer.rb', line 21

def dependency
  @dependency
end

#payloadObject (readonly)

Returns the value of attribute payload.



21
22
23
# File 'lib/babushka/dep_definer.rb', line 21

def payload
  @payload
end

Instance Method Details

#basenameObject



24
# File 'lib/babushka/dep_definer.rb', line 24

def basename; dependency.basename end

#define!Object



41
42
43
44
45
46
47
48
49
50
# File 'lib/babushka/dep_definer.rb', line 41

def define!
  unless loaded? || failed?
    define_elements!
    @loaded, @failed = true, false
  end
  self
rescue StandardError => e
  @loaded, @failed = false, true
  raise e
end

#failed?Boolean

Returns:

  • (Boolean)


39
# File 'lib/babushka/dep_definer.rb', line 39

def failed?; @failed end

#get_source_location_for(blk) ⇒ Object



87
88
89
90
91
92
93
# File 'lib/babushka/dep_definer.rb', line 87

def get_source_location_for blk
  if blk.respond_to?(:source_location) # Not present on cruby-1.8.
    blk.source_location
  else
    blk.inspect.scan(/\#\<Proc\:0x[0-9a-f]+\@([^:]+):(\d+)>/).flatten
  end
end

#invoke(task_name) ⇒ Object



52
53
54
55
# File 'lib/babushka/dep_definer.rb', line 52

def invoke task_name
  define! unless loaded?
  instance_eval(&send(task_name)) unless failed?
end

#load_pathObject



25
# File 'lib/babushka/dep_definer.rb', line 25

def load_path; dependency.load_path end

#loaded?Boolean

Returns:

  • (Boolean)


38
# File 'lib/babushka/dep_definer.rb', line 38

def loaded?; @loaded end

#met(message) ⇒ Object



63
64
65
# File 'lib/babushka/dep_definer.rb', line 63

def met message
  removed! :instead => "a truthy return value from met?{} (maybe using #log_ok)"
end

#nameObject



23
# File 'lib/babushka/dep_definer.rb', line 23

def name; dependency.name end

#result(message, opts = {}) ⇒ Object



57
58
59
60
61
# File 'lib/babushka/dep_definer.rb', line 57

def result message, opts = {}
  opts[:result].tap {
    dependency.result_message = message
  }
end

#source_locationObject



79
80
81
# File 'lib/babushka/dep_definer.rb', line 79

def source_location
  get_source_location_for(block)
end

#source_location_for(block_name) ⇒ Object



83
84
85
# File 'lib/babushka/dep_definer.rb', line 83

def source_location_for block_name
  get_source_location_for send(block_name) if has_block? block_name
end

#unmeetable(message) ⇒ Object



71
72
73
# File 'lib/babushka/dep_definer.rb', line 71

def unmeetable message
  removed! :instead => "#unmeetable!"
end

#unmeetable!(message) ⇒ Object



75
76
77
# File 'lib/babushka/dep_definer.rb', line 75

def unmeetable! message
  raise Babushka::UnmeetableDep, message
end

#unmet(message) ⇒ Object



67
68
69
# File 'lib/babushka/dep_definer.rb', line 67

def unmet message
  removed! :instead => "a falsey return value from met?{} (maybe using #log)"
end