Class: WebistranoCli::Task

Inherits:
Object
  • Object
show all
Defined in:
lib/webistrano_cli/task.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(project_name, stage_name, task_name) ⇒ Task

Returns a new instance of Task.



6
7
8
9
10
11
12
13
# File 'lib/webistrano_cli/task.rb', line 6

def initialize project_name, stage_name, task_name
  WebistranoCli.logger.info "=> Select project: #{project_name}"
  @project      = Project.all.eq(project_name)
  WebistranoCli.logger.info "=> Select stage: #{stage_name}"
  @stage        = @project.stages.eq(stage_name)
  @task_name    = task_name
  @log          = ""
end

Instance Attribute Details

#logObject

Returns the value of attribute log.



4
5
6
# File 'lib/webistrano_cli/task.rb', line 4

def log
  @log
end

Instance Method Details

#loop_latest_deploymentObject



25
26
27
28
29
30
31
# File 'lib/webistrano_cli/task.rb', line 25

def loop_latest_deployment
  begin
    sleep 5
    reload_deployment
    print_diff
  end while @deployment.completed_at.nil?
end


33
34
35
36
37
38
39
40
# File 'lib/webistrano_cli/task.rb', line 33

def print_diff
  if @deployment.try(:log)
    diff = @deployment.log
    diff.slice!(log)
    print diff
    log << diff
  end
end

#quiet_run(prompt_config = {}) ⇒ Object



57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/webistrano_cli/task.rb', line 57

def quiet_run(prompt_config = {})
  WebistranoCli.logger.info "=> Checking prompt config..."
  required_keys = @stage.get_required_config(@task_name)
  prompt_config.symbolize_keys!

  if (required_keys - prompt_config.keys).blank?

    params = {
      :task          => @task_name,
      :project_id    => @project.id,
      :stage_id      => @stage.id,
      :prompt_config => prompt_config
    }

    WebistranoCli.logger.info "=> Task: #{@task_name}"
    trigger_deployment(params)
    WebistranoCli.logger.info "=> Deploy started"
  else
    WebistranoCli.logger.info "=> Requied promt config to deploy: #{required_keys.join(', ')}"
    WebistranoCli.logger.info "=> Deploy failed "
  end
end

#reload_deploymentObject



21
22
23
# File 'lib/webistrano_cli/task.rb', line 21

def reload_deployment
  @deployment = Deployment.find(@deployment.id, {:project_id => @project.id, :stage_id => @stage.id})
end

#runObject



42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/webistrano_cli/task.rb', line 42

def run
  WebistranoCli.logger.info "=> Get prompt config..."
  params = {
    :task          => @task_name,
    :project_id    => @project.id,
    :stage_id      => @stage.id,
    :prompt_config => @stage.prompt_task_config(@task_name)
  }

  WebistranoCli.logger.info "=> Task: #{@task_name}"
  trigger_deployment(params)
  loop_latest_deployment
  WebistranoCli.logger.info "=> Status: #{@deployment.status}"
end

#trigger_deployment(params) ⇒ Object



15
16
17
18
19
# File 'lib/webistrano_cli/task.rb', line 15

def trigger_deployment(params)
  params.delete(:prompt_config) if params[:prompt_config].blank?
  @deployment = Deployment.new(params)
  @deployment.save
end