Module: Greenhouse::Scripts::Script::ClassMethods

Defined in:
lib/greenhouse/scripts/script.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.extended(base) ⇒ Object



10
11
# File 'lib/greenhouse/scripts/script.rb', line 10

def self.extended(base)
end

Instance Method Details

#add_arguments(*args) ⇒ Object



85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# File 'lib/greenhouse/scripts/script.rb', line 85

def add_arguments(*args)
  @arguments ||= Arguments.new
  args.each_with_index do |arg,a|
    argk, argv = *parse_arg(arg)
    
    if !argument_flag?(arg) && !valid_argument?(argk) && (a > 0 && argument_flag?(args[a-1]))
      @arguments.last.value = arg
      next
    end

    raise InvalidArgument, "Invalid Argument: #{arg}" if validate_arguments? && !valid_argument?(argk)
    @arguments << argument_object(argk)
    @arguments.last.value = argv unless argv.empty?
  end
  @arguments
end

#argument_flag?(arg) ⇒ Boolean

Returns:

  • (Boolean)


111
112
113
# File 'lib/greenhouse/scripts/script.rb', line 111

def argument_flag?(arg)
  arg.match(/\A(-)+[a-z0-9\-]=?.*\Z/i)
end

#argument_object(key) ⇒ Object



115
116
117
# File 'lib/greenhouse/scripts/script.rb', line 115

def argument_object(key)
  valid_arguments.clone.concat(project_arguments).select { |varg| varg.keys.include?(key) }.first || Argument.new(key)
end

#arguments(*args) ⇒ Object



72
73
74
# File 'lib/greenhouse/scripts/script.rb', line 72

def arguments(*args)
  add_arguments(*args)
end

#parse_arg(arg) ⇒ Object



102
103
104
105
# File 'lib/greenhouse/scripts/script.rb', line 102

def parse_arg(arg)
  arga = arg.split("=")
  [arga.slice!(0), arga.join("=")]
end

#project_argument(proj) ⇒ Object



50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/greenhouse/scripts/script.rb', line 50

def project_argument(proj)
  @valid_projects ||= Arguments.new
  if proj.is_a?(Argument)
    @valid_projects << proj
  elsif proj.is_a?(Hash)
    @valid_projects << Argument.new(proj.keys.first.to_s, proj.values.first)
  elsif proj.is_a?(Array)
    @valid_projects << Argument.new(proj[0].to_s, (proj.length > 1 ? proj[1] : []))
  else
    @valid_projects << Argument.new(proj.to_s)
  end
  @valid_projects.last
end

#project_arguments(*projs) ⇒ Object



64
65
66
67
68
69
70
# File 'lib/greenhouse/scripts/script.rb', line 64

def project_arguments(*projs)
  @valid_projects ||= Arguments.new
  return @valid_projects if projs.empty?
  
  projs.each { |proj| project_argument(proj) }
  @valid_projects
end

#runObject



13
14
15
16
17
# File 'lib/greenhouse/scripts/script.rb', line 13

def run
  @script ||= new
  raise "You must define a `run` method for your script." unless @script.respond_to?(:run)
  @script.run
end

#set_arguments(*args) ⇒ Object



80
81
82
83
# File 'lib/greenhouse/scripts/script.rb', line 80

def set_arguments(*args)
  @arguments = Arguments.new
  add_arguments(*args)
end

#user_argumentsObject



76
77
78
# File 'lib/greenhouse/scripts/script.rb', line 76

def user_arguments
  arguments
end

#valid_argument(arg) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/greenhouse/scripts/script.rb', line 28

def valid_argument(arg)
  @valid_args ||= Arguments.new
  if arg.is_a?(Argument)
    @valid_args << arg
  elsif arg.is_a?(Hash)
    @valid_args << Argument.new(arg.keys.first.to_s, arg.values.first)
  elsif arg.is_a?(Array)
    @valid_args << Argument.new(arg[0].to_s, (arg.length > 1 ? arg[1] : []))
  else
    @valid_args << Argument.new(arg.to_s)
  end
  @valid_args.last
end

#valid_argument?(key) ⇒ Boolean

Returns:

  • (Boolean)


107
108
109
# File 'lib/greenhouse/scripts/script.rb', line 107

def valid_argument?(key)
  valid_arguments.clone.concat(project_arguments).map(&:keys).flatten.include?(key)
end

#valid_arguments(*args) ⇒ Object



42
43
44
45
46
47
48
# File 'lib/greenhouse/scripts/script.rb', line 42

def valid_arguments(*args)
  @valid_args ||= Arguments.new
  return @valid_args if args.empty?
  
  args.each { |arg| valid_argument(arg) }
  @valid_args
end

#validate_arguments(val = nil) ⇒ Object



19
20
21
# File 'lib/greenhouse/scripts/script.rb', line 19

def validate_arguments(val=nil)
  @validate_arguments = val
end

#validate_arguments?Boolean

Returns:

  • (Boolean)


23
24
25
26
# File 'lib/greenhouse/scripts/script.rb', line 23

def validate_arguments?
  @validate_arguments = true if @validate_arguments.nil?
  @validate_arguments
end