diff options
| -rwxr-xr-x | bin/raps2 | 1 | ||||
| -rw-r--r-- | lib/App/Raps2.pm | 21 | ||||
| -rw-r--r-- | lib/App/Raps2/UI.pm | 11 | 
3 files changed, 32 insertions, 1 deletions
| @@ -22,6 +22,7 @@ given ($action) {  	when ('dump') { $raps2->cmd_dump(@args) }  	when ('get')  { $raps2->cmd_get(@args) }  	when ('info') { $raps2->cmd_info(@args) } +	when ('list') { $raps2->cmd_list(@args) }  	when ('version') { say "raps2 version ${VERSION}" }  } diff --git a/lib/App/Raps2.pm b/lib/App/Raps2.pm index f05f21e..6b4929c 100644 --- a/lib/App/Raps2.pm +++ b/lib/App/Raps2.pm @@ -40,7 +40,7 @@ use App::Raps2::UI;  use Carp q(confess);  use File::BaseDir qw(config_home data_home);  use File::Path qw(make_path); -use File::Slurp qw(slurp write_file); +use File::Slurp qw(read_dir slurp write_file);  our @EXPORT_OK = ();  our $VERSION = '0.1'; @@ -327,3 +327,22 @@ sub cmd_info {  		['Login', $key{'login'}],  	);  } + +=head2 ->cmd_list() + +Lists all saved passwords and their logins and urls + +=cut + +sub cmd_list { +	my ($self) = @_; + +	for my $file (read_dir($self->{xdg_data})) { +		my %key = file_to_hash($self->{xdg_data} . "/${file}"); +		$self->ui->list( +			['Account', $file], +			['Login', $key{login}], +			['URL', $key{url}], +		); +	} +} diff --git a/lib/App/Raps2/UI.pm b/lib/App/Raps2/UI.pm index 82b2acd..29e8ef1 100644 --- a/lib/App/Raps2/UI.pm +++ b/lib/App/Raps2/UI.pm @@ -19,6 +19,17 @@ sub new {  	return bless($ref, $obj);  } +sub list { +	my ($self, @list) = @_; +	my $format = "%-20s %-20s %s\n"; + +	if (not $self->{list}->{header}) { +		printf($format, map { $_->[0] } @list); +		$self->{list}->{header} = 1; +	} +	printf($format, map { $_->[1] // q{} } @list); +} +  sub read_line {  	my ($self, $str) = @_; | 
