App-PasswordManager
view release on metacpan or search on metacpan
script/password_manager view on Meta::CPAN
--delete <login> Delete a password for a specific login
--edit <login> <new_password> Edit an existing password
--copy <login> Copy password to clipboard
--help Show this help message
Examples:
$0 --add "my_login" "my_password"
$0 --list
$0 --delete "my_login"
$0 --edit "my_login" "new_password"
$0 --copy "my_login"
END_HELP
exit;
}
my ($add_login, $add_password, $list, $delete, $edit_login, $edit_password, $copy, $help);
GetOptions(
'add=s{2}' => \my @add_args,
'list' => \$list,
'delete=s' => \$delete,
'edit=s{2}' => \my @edit_args,
'copy=s' => \$copy,
'help' => \$help,
) or die "Invalid options passed. Use --help for usage information.\n";
if ($help) {
show_help();
} elsif (@add_args == 2) {
my ($login, $password) = @add_args;
eval {
$manager->add_password($login, $password);
print "Password for '$login' added successfully.\n";
};
if ($@) {
print "Error: $@\n";
}
} elsif ($list) {
my $passwords = $manager->list_passwords();
if (@$passwords) {
my $index = 1;
for my $login (@$passwords) {
print "$index. $login\n";
$index++;
}
} else {
print "No passwords found.\n";
}
} elsif ($delete) {
eval {
$manager->remove_password($delete);
print "Password for '$delete' removed successfully.\n";
};
if ($@) {
print "Error: $@\n";
}
} elsif (@edit_args == 2) {
my ($login, $new_password) = @edit_args;
eval {
$manager->edit_password($login, $new_password);
print "Password for '$login' updated successfully.\n";
};
if ($@) {
print "Error: $@\n";
}
} elsif ($copy) {
eval {
$manager->copy_to_clipboard($copy);
print "Password for '$copy' copied to clipboard.\n";
};
if ($@) {
print "Error: $@\n";
}
} else {
print "No valid options provided. Use --help for usage information.\n";
exit 1;
}
( run in 1.387 second using v1.01-cache-2.11-cpan-39bf76dae61 )