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 )