files/gpgedit

48 lines
900 B
Perl
Executable File

#!/usr/bin/perl
# Author: Josh Holtrop
# Purpose: edit a file encrypted by gpg
# Set environment variable GPGEDIT_RECIPIENT to specify the recipient
use strict;
use warnings;
sub usage
{
print STDERR "Usage: $0 <file>\n";
exit(42);
}
usage() unless ($#ARGV >= 0);
my $fname = shift(@ARGV);
my $dfname = $fname;
$dfname =~ s/\.gpg$//i;
my $result = system('gpg', '--decrypt', '--output', $dfname, $fname);
if ($result != 0)
{
print STDERR "Error decrypting: exiting.\n";
exit(1);
}
my $editor = $ENV{'EDITOR'};
$editor = 'vim' if ($editor =~ /^\s*$/);
system($editor, $dfname);
my $recipient = '';
if (exists($ENV{'GPGEDIT_RECIPIENT'}))
{
$recipient = $ENV{'GPGEDIT_RECIPIENT'};
}
my @cmd = ('gpg', '--encrypt');
if ($recipient !~ /^\s*$/)
{
push(@cmd, '--recipient', $recipient);
}
push(@cmd, $dfname);
system('mv', $fname, "$fname~");
system(@cmd);
unlink($dfname);