mirror of
				https://github.com/ohmyzsh/ohmyzsh.git
				synced 2024-05-11 05:55:17 +00:00 
			
		
		
		
	feat(1password): add username copy to opswd (#10812)
				
					
				
			This commit is contained in:
		@@ -14,16 +14,18 @@ clipboard.
 | 
			
		||||
## `opswd`
 | 
			
		||||
 | 
			
		||||
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.
 | 
			
		||||
Finally, after 20 seconds, the clipboard is cleared.
 | 
			
		||||
If the service also contains a TOTP, it is copied to the clipboard after confirmation
 | 
			
		||||
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
 | 
			
		||||
which service you want to get.
 | 
			
		||||
For example, `opswd github.com` will put your GitHub username into your clipboard. Then,
 | 
			
		||||
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
 | 
			
		||||
a TOTP is available, it will be copied to the clipboard after 10 seconds.
 | 
			
		||||
This function has completion support, so you can use tab completion to select which
 | 
			
		||||
service you want to get.
 | 
			
		||||
 | 
			
		||||
> 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:
 | 
			
		||||
 
 | 
			
		||||
@@ -14,6 +14,17 @@ function opswd() {
 | 
			
		||||
  # If not logged in, print error and 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
 | 
			
		||||
  # Copy the password to the clipboard
 | 
			
		||||
  if ! password=$(op item get "$service" --fields password 2>/dev/null); then
 | 
			
		||||
@@ -22,12 +33,13 @@ function opswd() {
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  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
 | 
			
		||||
  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"
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user