#!/usr/bin/perl -w use v5.14; use Gruntmaster::Data; use IO::Prompter [ -style => 'bold', '-stdio', '-verbatim' ]; use POSIX qw/strftime/; use Date::Parse qw/str2time/; ################################################## my $dsn = $ENV{GRUNTMASTER_DSN} // 'dbi:Pg:'; my $db = Gruntmaster::Data->connect($dsn); sub cmd_help{ exec perldoc => $0 } sub cmd_list{ local $, = "\n"; say map { $_->id } $db->contests->all; } sub cmd_show{ my %columns = $db->contest(shift)->get_columns; $columns{$_} = strftime '%c', localtime $columns{$_} for qw/start stop/; print <contests->create({id => $id, name => $name, owner => $owner, start => $start, stop => $stop}) } sub cmd_rm{ $db->contest(shift)->delete } sub cmd_get{ my ($id, $col) = @_; say $db->contest($id)->get_column($col) } sub cmd_set{ my ($id, %values) = @_; $db->contest($id)->update(\%values) } ################################################## no strict 'refs'; my $cmd = 'cmd_' . shift; cmd_help unless exists $main::{$cmd}; $cmd->(@ARGV) if exists $main::{$cmd}; 1; __END__ =encoding utf-8 =head1 NAME gruntmaster-contest - shell interface to Gruntmaster 6000 contests =head1 SYNOPSIS gruntmaster-contest list gruntmaster-contest show id gruntmaster-contest add id gruntmaster-contest rm id gruntmaster-contest get id key gruntmaster-contest set id key value =head1 DESCRIPTION gruntmaster-contest is a tool for managing contests. =over =item B Prints the list of contests. =item B I Prints detailed information about the contest with id I. =item B I Adds a new contest with id I. =item B I Removes the contest with id I. =item B I I I Sets the I configuration option of contest I to I. =item B I I Get the value of the I configuration option of contest I. =back =head1 AUTHOR Marius Gavrilescu Emarius@ieval.roE =head1 COPYRIGHT AND LICENSE Copyright (C) 2014 by Marius Gavrilescu This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.18.1 or, at your option, any later version of Perl 5 you may have available. =cut