require 'cap_ext_webistrano/project' require 'cap_ext_webistrano/stage' require 'cap_ext_webistrano/deployment' module CapExtWebistrano class Task attr_accessor :task, :log def initialize(task, config) @task = task @config = config @log = "" end def set_access_data [Project, Stage, Deployment].each do |klazz| klazz.configure(@config) end end def loop_latest_deployment still_running = true prefix_options = @deployment.prefix_options while still_running sleep 5 @deployment.prefix_options.merge!(prefix_options) @deployment.reload print_diff(@deployment) still_running = false unless @deployment.completed_at.nil? end end def print_diff(deployment) if deployment.log diff = deployment.log diff.slice!(log) print diff log << diff end end def run set_access_data @project = Project.find_by_name(@config[:application]) @stage = @project.find_stage(@config[:stage]) params = { :task => task, :stage_id => @stage.id, :project_id => @project.id, :description => @config[:description] } params.merge!(:prompt_config => @config[:prompt_config]) if @config.exists?(:prompt_config) @deployment = Deployment.create(params) loop_latest_deployment exit(-1) unless @deployment.status == "success" end end end