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) = @_; |