diff --git a/perl6/fucking-coffee.p6 b/perl6/fucking-coffee.p6 new file mode 100644 index 0000000..ae51459 --- /dev/null +++ b/perl6/fucking-coffee.p6 @@ -0,0 +1,30 @@ +#!/usr/bin/env perl6 + +use v6; + +use Net::Telnet; #just a fake module + +my %conf = + coffee_machine_ip => '10.10.42.42', + password => '1234', + password_prompt => 'Password:', + delay_before_brew => 17, + delay => 24, +; + +exit if DateTime.now.day-of-week >= 6; + +my @sessions = grep { /^ <{ $*USER.Str }> <.ws>/ }, run( 'who', :out ).out.lines; + +exit if @sessions.elems == 0; + +sleep %conf; + +my $telnet = Net::Telnet.new( :host( %conf ) ); +$telnet.waitfor( %conf ); +$telnet.cmd( %conf ); +$conn.cmd( 'sys brew' ); +sleep %conf; +$conn.cmd( 'sys pour' ); + +$conn.close; diff --git a/perl6/hangover.p6 b/perl6/hangover.p6 new file mode 100644 index 0000000..2b8e6a0 --- /dev/null +++ b/perl6/hangover.p6 @@ -0,0 +1,40 @@ +#!/usr/bin/env perl6 + +use v6; + +use SMS::Send; #just a fake module + +my %conf = + phone_numbers => { + my_number => '+15005550006', + boss_number => '+xxx', + }, + reasons => [ + 'Locked out', + 'Pipes broke', + 'Food poisoning', + 'Not feeling well', + ], +; + +exit if DateTime.now.day-of-week >= 6; + +my @sessions = grep { /^ <{ $*USER.Str }> <.ws>/ }, run( 'who', :out ).out.lines; + +exit if @sessions.elems > 0; + +my $sender = SMS::Send.new( + :twilio, + :account-id( %*ENV ), + :auth-token( $*ENV ), + :from( %conf ), +); + +my $sms-text = 'Gonna work from home.' ~ %conf.pick; + +my $sent = $sender.send-sms( + :text( $sms-text ), + :to( %conf ), +); + +say $sent ?? 'Sent message.' !! 'Message failed.'; diff --git a/perl6/kumar_asshole.p6 b/perl6/kumar_asshole.p6 new file mode 100644 index 0000000..0af9b0a --- /dev/null +++ b/perl6/kumar_asshole.p6 @@ -0,0 +1,38 @@ +#!/usr/bin/env perl6 + +use v6; + +use Gmail; #just a fake module + +my %conf = + kumar-email => 'kumar.a@example.com', + database_regex => rx /<-space>+ '_staging'/, + keywords_regex => rx:i /< sorry help wrong >/, + backup_path => '/home/backups/databases/', +; + +my $gmail = Gmail.new( + :account( %*ENV ), + :password( %*ENV ); +); + +for $gmail.find(:inbox, :unread, :from( %conf )).lines -> $email { + if $email.body.raw-source ~~ %conf and ( my $db-name = $email.body.raw-source ~~ %conf ) { + my $yesterday = Date.today.pred; + my $backup-file = %conf ~ $dbname ~ '-' ~ $yesterday.year ~ $yesterday.month ~ $yesterday.day ~ '.gz'; + + die 'ERROR: Backup file not found' if $backup-file.IO !~~ :e; + + shell 'gunzip -c ' ~ $backup-file ~ ' | psql ' ~ $db_name; + + $email.read; + $email.label( 'Database fixes' ); + $gmail.deliver( + $gmail.compose( + :to( %conf ), + :subject( 'RE: ' ~ $email.subject ), + :body( "No problem. I've fixed it. \n\n Please be careful next time." ), + ), + ); + } +} diff --git a/perl6/smack-my-bitch-up.p6 b/perl6/smack-my-bitch-up.p6 new file mode 100644 index 0000000..dbafc3a --- /dev/null +++ b/perl6/smack-my-bitch-up.p6 @@ -0,0 +1,39 @@ +#!/usr/bin/env perl6 + +use v6; + +use SMS::Send; #just a fake module + +my %conf = + phone_numbers => { + my_number => '+15005550006', + her_number => '+xxx', + }, + reasons => [ + 'Working hard', + 'Gotta ship this feature', + 'Someone fucked the system again', + ], +; + +exit if DateTime.now.day-of-week >= 6; + +my @sessions = grep { /^ <{ $*USER.Str }> <.ws>/ }, run( 'who', :out ).out.lines; + +exit if @sessions.elems == 0; + +my $sender = SMS::Send.new( + :twilio, + :account-id( %*ENV ), + :auth-token( $*ENV ), + :from( %conf ), +); + +my $sms-text = 'Late at work.' ~ %conf.pick; + +my $sent = $sender.send-sms( + :text( $sms-text ), + :to( %conf ), +); + +say $sent ?? 'Sent message.' !! 'Message failed.';