feat(1password): add username copy to opswd (#10812)

This commit is contained in:
Gheritarish 2022-11-07 19:53:36 +01:00 committed by GitHub
parent 0145d744a9
commit 6df14641ac
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 24 additions and 10 deletions

View File

@ -14,16 +14,18 @@ clipboard.
## `opswd` ## `opswd`
The `opswd` command is a wrapper around the `op` command. It takes a service The `opswd` command is a wrapper around the `op` command. It takes a service
name as an argument and copies the password for that service to the clipboard. name as an argument and copies the username, then the password for that service
to the clipboard, after confirmation on the user part.
If the service also contains a TOTP, it is copied to the clipboard after 10 seconds. If the service also contains a TOTP, it is copied to the clipboard after confirmation
Finally, after 20 seconds, the clipboard is cleared. on the user part. Finally, after 20 seconds, the clipboard is cleared.
The function has completion support, so you can use tab completion to select For example, `opswd github.com` will put your GitHub username into your clipboard. Then,
which service you want to get. it will ask for confirmation to continue, and copy the password to your clipboard. Finally,
if a TOTP is available, it will be copied to the clipboard after your confirmation.
For example, `opswd github.com` will put your GitHub password into your clipboard, and if This function has completion support, so you can use tab completion to select which
a TOTP is available, it will be copied to the clipboard after 10 seconds. service you want to get.
> NOTE: you need to be signed in for `opswd` to work. If you are using biometric unlock, > NOTE: you need to be signed in for `opswd` to work. If you are using biometric unlock,
> 1Password CLI will automatically prompt you to sign in. See: > 1Password CLI will automatically prompt you to sign in. See:

View File

@ -14,6 +14,17 @@ function opswd() {
# If not logged in, print error and return # If not logged in, print error and return
op user list > /dev/null || return op user list > /dev/null || return
local username
# Copy the username to the clipboard
if ! username=$(op item get "$service" --fields username 2>/dev/null); then
echo "error: could not obtain username for $service"
return 1
fi
echo -n "$username" | clipcopy
echo "✔ username for service $service copied to the clipboard. Press Enter to continue"
read
local password local password
# Copy the password to the clipboard # Copy the password to the clipboard
if ! password=$(op item get "$service" --fields password 2>/dev/null); then if ! password=$(op item get "$service" --fields password 2>/dev/null); then
@ -22,12 +33,13 @@ function opswd() {
fi fi
echo -n "$password" | clipcopy echo -n "$password" | clipcopy
echo "✔ password for $service copied to clipboard" echo "✔ password for $service copied to clipboard. Press Enter to continue"
read
# If there's a one time password, copy it to the clipboard after 10 seconds # If there's a one time password, copy it to the clipboard
local totp local totp
if totp=$(op item get --otp "$service" 2>/dev/null) && [[ -n "$totp" ]]; then if totp=$(op item get --otp "$service" 2>/dev/null) && [[ -n "$totp" ]]; then
sleep 10 && echo -n "$totp" | clipcopy echo -n "$totp" | clipcopy
echo "✔ TOTP for $service copied to clipboard" echo "✔ TOTP for $service copied to clipboard"
fi fi