Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
O
oh-my-zsh
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
JIRA
JIRA
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
github
oh-my-zsh
Commits
a64d9403
Unverified
Commit
a64d9403
authored
Mar 26, 2022
by
Marc Cornellà
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
refactor(1password): extract `opswd` function
parent
4dce175e
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
53 additions
and
44 deletions
+53
-44
1password.plugin.zsh
plugins/1password/1password.plugin.zsh
+7
-44
_opswd
plugins/1password/_opswd
+9
-0
opswd
plugins/1password/opswd
+37
-0
No files found.
plugins/1password/1password.plugin.zsh
View file @
a64d9403
if
((
${
+commands[op]
}
))
;
then
# Do nothing if op is not installed
eval
"
$(
op completion zsh
)
"
((
${
+commands[op]
}
))
||
return
compdef _op op
fi
# opswd puts the password of the named service into the clipboard. If there's a
# Load op completion
# one time password, it will be copied into the clipboard after 10 seconds. The
eval
"
$(
op completion zsh
)
"
# clipboard is cleared after another 20 seconds.
compdef _op op
function
opswd
()
{
if
[[
$#
-lt
1
]]
;
then
echo
"Usage: opswd <service>"
return
1
fi
local
service
=
$1
# Load opswd function
autoload
-Uz
opswd
# If not logged in, print error and return
op list
users
>
/dev/null
||
return
local
password
# Copy the password to the clipboard
if
!
password
=
$(
op get item
"
$service
"
--fields
password 2>/dev/null
)
;
then
echo
"error: could not obtain password for
$service
"
return
1
fi
echo
-n
"
$password
"
| clipcopy
echo
"✔ password for
$service
copied to clipboard"
# If there's a one time password, copy it to the clipboard after 5 seconds
local
totp
if
totp
=
$(
op get totp
"
$service
"
2>/dev/null
)
&&
[[
-n
"
$totp
"
]]
;
then
sleep
10
&&
echo
-n
"
$totp
"
| clipcopy
echo
"✔ TOTP for
$service
copied to clipboard"
fi
(
sleep
20
&&
clipcopy </dev/null 2>/dev/null
)
&!
}
function
_opswd
()
{
local
-a
services
services
=(
"
${
(@f)
$(
op list items
--categories
Login 2>/dev/null | op get item -
--fields
title 2>/dev/null
)}
"
)
[[
-z
"
$services
"
]]
||
compadd
-a
--
services
}
compdef _opswd opswd
plugins/1password/_opswd
0 → 100644
View file @
a64d9403
#compdef opswd
function _opswd() {
local -a services
services=("${(@f)$(op list items --categories Login 2>/dev/null | op get item - --fields title 2>/dev/null)}")
[[ -z "$services" ]] || compadd -a -- services
}
_opswd "$@"
plugins/1password/opswd
0 → 100644
View file @
a64d9403
#autoload
# opswd puts the password of the named service into the clipboard. If there's a
# one time password, it will be copied into the clipboard after 10 seconds. The
# clipboard is cleared after another 20 seconds.
function opswd() {
if [[ $# -lt 1 ]]; then
echo "Usage: opswd <service>"
return 1
fi
local service=$1
# If not logged in, print error and return
op list users > /dev/null || return
local password
# Copy the password to the clipboard
if ! password=$(op get item "$service" --fields password 2>/dev/null); then
echo "error: could not obtain password for $service"
return 1
fi
echo -n "$password" | clipcopy
echo "✔ password for $service copied to clipboard"
# If there's a one time password, copy it to the clipboard after 5 seconds
local totp
if totp=$(op get totp "$service" 2>/dev/null) && [[ -n "$totp" ]]; then
sleep 10 && echo -n "$totp" | clipcopy
echo "✔ TOTP for $service copied to clipboard"
fi
(sleep 20 && clipcopy </dev/null 2>/dev/null) &!
}
opswd "$@"
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment