Class: AdminModule::Rake::StagesTask

Inherits:
Object
  • Object
show all
Includes:
Rake::DSL
Defined in:
lib/admin_module/rake/stages_task.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(task_name = 'stages_task', desc = "Modify a stage or stages") {|_self| ... } ⇒ StagesTask

Returns a new instance of StagesTask.

Yields:

  • (_self)

Yield Parameters:



28
29
30
31
32
33
34
35
36
37
38
# File 'lib/admin_module/rake/stages_task.rb', line 28

def initialize(task_name = 'stages_task', desc = "Modify a stage or stages")
  @valid_actions = ['import', 'export', 'read', 'list', 'rename', 'delete']
  @task_name, @desc = task_name, desc

  @stop_on_exception = true
  @allow_create = false

  yield self if block_given?

  define_task
end

Instance Attribute Details

#actionObject

Returns the value of attribute action.



24
25
26
# File 'lib/admin_module/rake/stages_task.rb', line 24

def action
  @action
end

#allow_createObject

Returns the value of attribute allow_create.



23
24
25
# File 'lib/admin_module/rake/stages_task.rb', line 23

def allow_create
  @allow_create
end

#envObject

Returns the value of attribute env.



19
20
21
# File 'lib/admin_module/rake/stages_task.rb', line 19

def env
  @env
end

#nameObject

Returns the value of attribute name.



20
21
22
# File 'lib/admin_module/rake/stages_task.rb', line 20

def name
  @name
end

#pathObject

Returns the value of attribute path.



22
23
24
# File 'lib/admin_module/rake/stages_task.rb', line 22

def path
  @path
end

#stop_on_exceptionObject

Returns the value of attribute stop_on_exception.



26
27
28
# File 'lib/admin_module/rake/stages_task.rb', line 26

def stop_on_exception
  @stop_on_exception
end

#toObject

Returns the value of attribute to.



21
22
23
# File 'lib/admin_module/rake/stages_task.rb', line 21

def to
  @to
end

#valid_actionsObject (readonly)

Returns the value of attribute valid_actions.



25
26
27
# File 'lib/admin_module/rake/stages_task.rb', line 25

def valid_actions
  @valid_actions
end

Class Method Details

.installObject



178
179
180
# File 'lib/admin_module/rake/stages_task.rb', line 178

def install
  new.install
end

Instance Method Details

#assert_env_is_configured(arg) ⇒ Object



144
145
146
147
148
149
150
# File 'lib/admin_module/rake/stages_task.rb', line 144

def assert_env_is_configured arg
  unless AdminModule.configuration.credentials.key? arg
    init_msg = "Have you initialized your config file?\n Try: admin_module config init <filedir>"
    env_msg = "Have you configured your environments?\n Try: admin_module config add env <envname> <url>"
    raise "Unknown environment: #{arg}\n#{init_msg}\n\n#{env_msg}"
  end
end

#assert_provided(value, msg) ⇒ Object



138
139
140
141
142
# File 'lib/admin_module/rake/stages_task.rb', line 138

def assert_provided value, msg
  if value.nil? || value.empty?
    raise msg
  end
end

#commitObject



66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'lib/admin_module/rake/stages_task.rb', line 66

def commit
  validate_params

  client = AdminModule::Client.new
  client.env = env

  if self.respond_to? action
    self.send(action, client)
    return
  else
    raise "Unknown action - #{action}"
  end

rescue Exception => e
  raise e if stop_on_exception == true
ensure
  client.logout unless client.nil?
end

#define_taskObject

:nodoc:



40
41
42
43
44
45
46
# File 'lib/admin_module/rake/stages_task.rb', line 40

def define_task #:nodoc:
  desc @desc
  task(@task_name, required_args_for_action) do |t,args|
    set_vars args
    commit  # Call method to perform when invoked.
  end
end

#delete(client) ⇒ Object



108
109
110
# File 'lib/admin_module/rake/stages_task.rb', line 108

def delete client
  $stdout << client.stages.delete(name)
end

#export(client) ⇒ Object



100
101
102
# File 'lib/admin_module/rake/stages_task.rb', line 100

def export client
  $stdout << client.stages.export(path)
end

#import(client) ⇒ Object



96
97
98
# File 'lib/admin_module/rake/stages_task.rb', line 96

def import client
  $stdout << client.stages.import(path, allow_create)
end

#installObject



183
184
185
186
187
188
189
190
191
192
# File 'lib/admin_module/rake/stages_task.rb', line 183

def install
  AdminModule.configuration.credentials.keys.each do |e|
    valid_actions.each do |action|
      AdminModule::Rake::StagesTask.new("am:#{e}:stage:#{action}", "#{action} #{e} stage(s)") do |t|
        t.env = e
        t.action = action
      end
    end
  end
end

#list(client) ⇒ Object



85
86
87
88
# File 'lib/admin_module/rake/stages_task.rb', line 85

def list client
  $stdout << client.stages.list.join("\n")
  $stdout << "\n"
end

#read(client) ⇒ Object



90
91
92
93
94
# File 'lib/admin_module/rake/stages_task.rb', line 90

def read client
  result = {}
  result[name] = client.stages.read(name)
  $stdout << result.to_yaml
end

#rename(client) ⇒ Object



104
105
106
# File 'lib/admin_module/rake/stages_task.rb', line 104

def rename client
  $stdout << client.stages.rename(name, to)
end

#required_args_for_actionObject



152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
# File 'lib/admin_module/rake/stages_task.rb', line 152

def required_args_for_action
  args = []

  case action
  when 'read','delete'
    args << :name

  when 'rename'
    args << :name
    args << :to

  when 'import'
    args << :path
    args << :allow_create

  when 'export'
    args << :path

  else
    # Noop
  end

  args
end

#set_vars(args) ⇒ Object



48
49
50
51
52
53
54
# File 'lib/admin_module/rake/stages_task.rb', line 48

def set_vars args
  args.each do |arg,val|
    instance_variable_set "@#{arg}", val
  end

  args
end

#validate_paramsObject



112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
# File 'lib/admin_module/rake/stages_task.rb', line 112

def validate_params
  assert_provided env, 'Missing "env"'
  assert_provided action, 'Missing "action"'

  case action
  when 'import'
    assert_provided path, 'Missing "path"'

  when 'export'
    assert_provided path, 'Missing "path"'

  when 'read'
    assert_provided name, 'Missing "name"'

  when 'rename'
    assert_provided name, 'Missing "name"'
    assert_provided to, 'Missing "to"'

  when 'delete'
    assert_provided name, 'Missing "name"'

  end

  assert_env_is_configured env
end