#!/usr/bin/env bash

## A `pass generate` wrapper that generates a password and then opens the
## password's file in the default text editor.
##
## Usage: pass-generate [<pass-option>...] <password-name> [<password-length>]
##
## Dependencies: GNU findutils, GNU sed, pass

set -euo pipefail
shopt -s inherit_errexit

die() { echo "${0##*/}: $1" >&2; exit 1; }

[[ " $* " =~ ' --help ' ]] && sed -n 's/^## \?//p' "$0" && exit
(( $# )) || die 'missing argument'

pass generate "$@"

# Run `pass edit`, but not in a pipeline (using xargs) because doing so will
# result in a GnuPG error if the private key hasn't already been decrypted.
pass_dir=${PASSWORD_STORE_DIR:-~/.password-store}
pw_file=$(find "$pass_dir"/* -mmin -0.05 -printf '%f\n')
pass edit "${pw_file%.gpg}"
