summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorelijah <elijah@riseup.net>2012-11-04 01:22:23 -0800
committerelijah <elijah@riseup.net>2012-11-04 01:22:23 -0800
commitdc3eeb6d98a48ab1834dc2d76514664a204b3619 (patch)
tree3132ea48a3b7ba555ba2b83e2fb208aca6386f9c
parent05f4f6944e8b44ea92eaf55c7368261478ee41ea (diff)
better reporting of puppet progress (supply_drop hack)
-rw-r--r--lib/leap_cli/commands/deploy.rb5
-rw-r--r--lib/leap_cli/util.rb9
-rw-r--r--vendor/supply_drop/lib/supply_drop/writer/streaming.rb48
3 files changed, 54 insertions, 8 deletions
diff --git a/lib/leap_cli/commands/deploy.rb b/lib/leap_cli/commands/deploy.rb
index f820e5a..13fcb1d 100644
--- a/lib/leap_cli/commands/deploy.rb
+++ b/lib/leap_cli/commands/deploy.rb
@@ -39,11 +39,10 @@ module LeapCli
#
ssh.set :puppet_source, [Path.platform, 'puppet'].join('/')
ssh.set :puppet_destination, '/srv/leap'
- ssh.set :puppet_command, '/usr/bin/puppet apply'
+ ssh.set :puppet_command, '/usr/bin/puppet apply --color=false'
ssh.set :puppet_lib, "puppet/modules"
ssh.set :puppet_parameters, '--confdir puppet puppet/manifests/site.pp'
- #cap.set :puppet_stream_output, false
- #puppet_cmd = "cd #{puppet_destination} && #{sudo_cmd} #{puppet_command} --modulepath=#{puppet_lib} #{puppet_parameters}"
+ ssh.set :puppet_stream_output, true
ssh.apply_puppet
end
end
diff --git a/lib/leap_cli/util.rb b/lib/leap_cli/util.rb
index 909dc0a..ba88891 100644
--- a/lib/leap_cli/util.rb
+++ b/lib/leap_cli/util.rb
@@ -1,4 +1,5 @@
require 'digest/md5'
+require 'paint'
module LeapCli
@@ -112,19 +113,19 @@ module LeapCli
end
def progress_created(path)
- progress 'created %s' % relative_path(path)
+ progress Paint['created', :green, :bold] + ' ' + relative_path(path)
end
def progress_updated(path)
- progress 'updated %s' % relative_path(path)
+ progress Paint['updated', :cyan, :bold] + ' ' + relative_path(path)
end
def progress_nochange(path)
- progress2 'no change %s' % relative_path(path)
+ progress2 Paint['no change', :white, :bold] + ' ' + relative_path(path)
end
def progress_removed(path)
- progress 'removed %s' % relative_path(path)
+ progress Paint['removed', :red, :bold] + ' ' + relative_path(path)
end
#
diff --git a/vendor/supply_drop/lib/supply_drop/writer/streaming.rb b/vendor/supply_drop/lib/supply_drop/writer/streaming.rb
index e180ec8..334a41e 100644
--- a/vendor/supply_drop/lib/supply_drop/writer/streaming.rb
+++ b/vendor/supply_drop/lib/supply_drop/writer/streaming.rb
@@ -1,12 +1,58 @@
+begin
+ require 'paint'
+rescue
+end
+
module SupplyDrop
module Writer
class Streaming
def initialize(logger)
+ @mode = Capistrano::Logger::DEBUG
@logger = logger
end
def collect_output(host, data)
- @logger.debug data, host
+ if data =~ /^(notice|err|warning):/
+ @mode = $1
+
+ # force the printing of 'finished catalog run' if there have not been any errors
+ if @mode == 'notice' && !@error_encountered && data =~ /Finished catalog run/
+ @mode = 'forced_notice'
+ elsif @mode == 'err'
+ @error_encountered = true
+ end
+ end
+
+ # log each line, colorizing the hostname
+ data.lines.each do |line|
+ if line =~ /\w/
+ @logger.log log_level, line.sub(/\n$/,''), colorize(host)
+ end
+ end
+ end
+
+ def log_level
+ case @mode
+ when 'err' then Capistrano::Logger::IMPORTANT
+ when 'warning' then Capistrano::Logger::INFO
+ when 'notice' then Capistrano::Logger::DEBUG
+ else Capistrano::Logger::IMPORTANT
+ end
+ end
+
+ def colorize(str)
+ if defined? Paint
+ color = case @mode
+ when 'err' then :red
+ when 'warning' then :yellow
+ when 'notice' then :cyan
+ when 'forced_notice' then :cyan
+ else :clear
+ end
+ Paint[str, color, :bold]
+ else
+ str
+ end
end
def all_output_collected