From: Marius Gavrilescu Date: Fri, 6 Feb 2015 18:23:04 +0000 (+0200) Subject: Add an edit command to gruntmaster-problem X-Git-Tag: 5999.000_014~77 X-Git-Url: http://git.ieval.ro/?a=commitdiff_plain;h=ca77adce9ec73cdbb45cf3fe35fc04191b0f2b3d;p=gruntmaster-data.git Add an edit command to gruntmaster-problem --- diff --git a/gruntmaster-problem b/gruntmaster-problem index 819b7ef..7e979cd 100755 --- a/gruntmaster-problem +++ b/gruntmaster-problem @@ -3,8 +3,10 @@ use v5.14; use Gruntmaster::Data; +use File::Temp qw/tempfile/; + use IO::Prompter [ -style => 'bold', '-stdio', '-verbatim' ]; -use File::Slurp qw/read_file/; +use File::Slurp qw/read_file write_file/; use JSON qw/encode_json/; use Term::ANSIColor qw/RED RESET/; use Getopt::Long qw/:config require_order/; @@ -103,6 +105,16 @@ sub cmd_get{ say $db->problem($id)->get_column($col) } +sub cmd_edit{ + my ($id, $col) = @_; + my ($fh, $file) = tempfile 'gruntmaster-problem-editXXXX', TMPDIR => 1, UNLINK => 1; + write_file $fh, $db->problem($id)->get_column($col); + close $fh; + my $editor = $ENV{EDITOR} // 'editor'; + system $editor, $file; + $db->problem($id)->update({$col => read_file $file}); +} + sub cmd_list{ local $, = "\n"; say map {$_->id} $db->problems->all @@ -155,6 +167,7 @@ gruntmaster-problem - shell interface to Gruntmaster 6000 problems gruntmaster-problem show problem_id gruntmaster-problem set [--file] problem_id key value gruntmaster-problem get problem_id key + gruntmaster-problem edit problem_id key =head1 DESCRIPTION @@ -186,6 +199,10 @@ Sets the I configuration option of problem I to I. Get the value of the I configuration option of problem I +=item B I I + +Opens an editor with the value of the I configuration option. After the editor exits, the option is updated to the value of the file. + =item B --file I I I Sets the I configuration option of problem I to the contents of the file I.