#!/usr/bin/env perl use strict; use warnings; use MYDan::Deploy::Ctrl; use MYDan::Util::Sudo; use MYDan::Util::OptConf; use File::Basename; use MIME::Base64; use MYDan::Subscribe; MYDan::Util::Sudo->sudo(); $| ++; $MYDan::Util::OptConf::THIS = 'deploy'; =head1 SYNOPSIS $0 [--interval seconds(default 2)] $0 [--interval seconds(default 2)] [--subscribe] =cut my %o = MYDan::Util::OptConf->load()->set( interval => 2 )->get( qw( interval=i subscribe ) )->dump(); $o{interval} = 60 if $o{subscribe} && $o{interval} < 60; do { system 'clear' unless $o{subscribe}; for my $name ( map{ basename $_ }glob "$o{conf}/*" ) { next unless -f "$o{ctrl}/$name"; my ( $ctrl, @stuck, $exc, %data ) = MYDan::Deploy::Ctrl->new( $name => $o{ctrl} ); @stuck = $ctrl->stuck(); $exc = $ctrl->excluded(); next unless @stuck || @$exc; map{ $data{stuck}{$_->[1]}{$_->[2]} = $_->[0].":".decode_base64( $_->[3] ) }@stuck if @stuck; $data{excluded} = $exc if @$exc; if( $o{subscribe} ) { my $x = keys %data ? join( ',', keys %data ) : 'unkown'; MYDan::Subscribe->new()->input( $x, $name, 'mydan_deploy_stuck' ); } print "-" x 75, "\nname: $name\n"; YAML::XS::DumpFile \*STDOUT, \%data; } }while( sleep $o{interval} );