Browse Source

Start implementing adding contacts on the command-line

master
Jonathan "Duke" Leto 7 years ago
parent
commit
68da246699
  1. 23
      bin/hushlist
  2. 39
      lib/Hush/List.pm

23
bin/hushlist

@ -28,7 +28,7 @@ my $list = Hush::List->new($rpc, $options);
my $command = shift || help();
my $COMMANDS = {
"add" => \&add,
"contact" => \&contact,
"contact" => \&Hush::List::contact,
"help" => \&help,
"new" => \&new,
"remove" => \&remove,
@ -74,27 +74,6 @@ sub usage {
print "$0 help for more details :)\n";
}
sub contact {
my $cmd = shift || '';
my $subcommands = {
"add" => sub {
# add a hush contact, yay
my ($cmd,$name,$zaddr) = @ARGV;
barf Dumper [ $cmd, $name, $zaddr ];
},
"rm" => sub {
my ($cmd,$name,$zaddr) = @ARGV;
barf Dumper [ $cmd, $name, $zaddr ];
},
};
my $subcmd = $subcommands->{$cmd};
if ($subcmd) {
$subcmd->();
} else {
barf "Invalid hushlist contact subcommand!";
}
}
sub status {
my $name = shift;
if ($name) {

39
lib/Hush/List.pm

@ -8,6 +8,7 @@ use Hush::Util qw/barf/;
use File::Slurp;
use Hush::Logger qw/debug/;
use JSON;
use Data::Dumper;
# as per z_sendmany rpc docs
my $MAX_RECIPIENTS = 54;
@ -16,6 +17,44 @@ my $HUSHLIST_CONFIG_DIR = $ENV{HUSH_CONFIG_DIR} || catdir($HUSH_CONFIG_DIR, 'lis
our $VERSION = 20171031;
my $rpc = Hush::RPC->new;
sub contact {
my $cmd = shift || '';
my $subcommands = {
"add" => sub {
# add a hush contact, yay
my ($cmd,$name,$zaddr) = @ARGV;
#barf Dumper [ $cmd, $name, $zaddr ];
#TODO: give user ability to choose
my $chain = "hush";
my $contacts_file = catdir($HUSHLIST_CONFIG_DIR,"$chain-contacts.txt");
if (-e $contacts_file) {
my %contacts = read_file( $contacts_file ) =~ /^(z[a-z0-9]+) (.*)$/mgi ;
# TODO: check if zaddr OR nickname exists
if ($contacts{$zaddr}) {
} else {
# TODO: see if this contact exists already in this chain
open my $fh, ">>", $contacts_file or barf "Could not write file $contacts_file ! : $!";
#TODO: validation?
print $fh "$zaddr $name\n";
close $fh;
}
}
},
"rm" => sub {
my ($cmd,$name,$zaddr) = @ARGV;
barf Dumper [ $cmd, $name, $zaddr ];
},
};
my $subcmd = $subcommands->{$cmd};
if ($subcmd) {
$subcmd->();
} else {
barf "Invalid hushlist contact subcommand!";
}
}
sub _sanity_checks {
if (!-e $HUSH_CONFIG_DIR ) {
barf "Hush config directory $HUSH_CONFIG_DIR not found! You can set the HUSH_CONFIG_DIR environment variable if it is not ~/.hush";

Loading…
Cancel
Save