mirror of
https://github.com/ohmyzsh/ohmyzsh.git
synced 2024-12-18 10:22:00 +00:00
feat(1password): add username copy to opswd
(#10812)
This commit is contained in:
parent
0145d744a9
commit
6df14641ac
2 changed files with 24 additions and 10 deletions
|
@ -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:
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue