mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-26 07:31:20 +00:00
Merge pull request #126616 from sternenseemann/pass-1.7.4
pass: 1.7.3 -> 1.7.4
This commit is contained in:
commit
6e7e956751
|
@ -1,113 +0,0 @@
|
|||
From b0b784b1a57c0b06936e6f5d6560712b4b810cd3 Mon Sep 17 00:00:00 2001
|
||||
From: Brett Cornwall <brett@i--b.com>
|
||||
Date: Wed, 27 Feb 2019 00:08:33 -0700
|
||||
Subject: clip: Add support for wl-clipboard
|
||||
|
||||
Edited to properly apply with
|
||||
`set-correct-program-name-for-sleep.patch`.
|
||||
|
||||
---
|
||||
README | 4 +++-
|
||||
man/pass.1 | 5 +++++
|
||||
src/password-store.sh | 26 +++++++++++++++++++++-----
|
||||
3 files changed, 29 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/README b/README
|
||||
index 6b59965..1a46242 100644
|
||||
--- a/README
|
||||
+++ b/README
|
||||
@@ -19,8 +19,10 @@ Depends on:
|
||||
http://www.gnupg.org/
|
||||
- git
|
||||
http://www.git-scm.com/
|
||||
-- xclip
|
||||
+- xclip (for X11 environments)
|
||||
http://sourceforge.net/projects/xclip/
|
||||
+- wl-clipboard (for wlroots Wayland-based environments)
|
||||
+ https://github.com/bugaevc/wl-clipboard
|
||||
- tree >= 1.7.0
|
||||
http://mama.indstate.edu/users/ice/tree/
|
||||
- GNU getopt
|
||||
diff --git a/man/pass.1 b/man/pass.1
|
||||
index 01a3fbe..a555dcb 100644
|
||||
--- a/man/pass.1
|
||||
+++ b/man/pass.1
|
||||
@@ -99,6 +99,8 @@ Decrypt and print a password named \fIpass-name\fP. If \fI--clip\fP or \fI-c\fP
|
||||
is specified, do not print the password but instead copy the first (or otherwise specified)
|
||||
line to the clipboard using
|
||||
.BR xclip (1)
|
||||
+or
|
||||
+.BR wl-clipboard(1)
|
||||
and then restore the clipboard after 45 (or \fIPASSWORD_STORE_CLIP_TIME\fP) seconds. If \fI--qrcode\fP
|
||||
or \fI-q\fP is specified, do not print the password but instead display a QR code using
|
||||
.BR qrencode (1)
|
||||
@@ -132,6 +134,8 @@ in generating passwords can be changed with the \fIPASSWORD_STORE_CHARACTER_SET\
|
||||
If \fI--clip\fP or \fI-c\fP is specified, do not print the password but instead copy
|
||||
it to the clipboard using
|
||||
.BR xclip (1)
|
||||
+or
|
||||
+.BR wl-clipboard(1)
|
||||
and then restore the clipboard after 45 (or \fIPASSWORD_STORE_CLIP_TIME\fP) seconds. If \fI--qrcode\fP
|
||||
or \fI-q\fP is specified, do not print the password but instead display a QR code using
|
||||
.BR qrencode (1)
|
||||
@@ -466,6 +470,7 @@ The location of the text editor used by \fBedit\fP.
|
||||
.BR tr (1),
|
||||
.BR git (1),
|
||||
.BR xclip (1),
|
||||
+.BR wl-clipboard (1),
|
||||
.BR qrencode (1).
|
||||
|
||||
.SH AUTHOR
|
||||
diff --git a/src/password-store.sh b/src/password-store.sh
|
||||
index d89d455..284eabf 100755
|
||||
--- a/src/password-store.sh
|
||||
+++ b/src/password-store.sh
|
||||
@@ -152,16 +152,32 @@ check_sneaky_paths() {
|
||||
#
|
||||
|
||||
clip() {
|
||||
+ if [[ -n $WAYLAND_DISPLAY ]]; then
|
||||
+ local copy_cmd=( wl-copy )
|
||||
+ local paste_cmd=( wl-paste -n )
|
||||
+ if [[ $X_SELECTION == primary ]]; then
|
||||
+ copy_cmd+=( --primary )
|
||||
+ paste_cmd+=( --primary )
|
||||
+ fi
|
||||
+ local display_name="$WAYLAND_DISPLAY"
|
||||
+ elif [[ -n $DISPLAY ]]; then
|
||||
+ local copy_cmd=( xclip -selection "$X_SELECTION" )
|
||||
+ local paste_cmd=( xclip -o -selection "$X_SELECTION" )
|
||||
+ local display_name="$DISPLAY"
|
||||
+ else
|
||||
+ die "Error: No X11 or Wayland display detected"
|
||||
+ fi
|
||||
+ local sleep_argv0="password store sleep on display $display_name"
|
||||
+
|
||||
# This base64 business is because bash cannot store binary data in a shell
|
||||
# variable. Specifically, it cannot store nulls nor (non-trivally) store
|
||||
# trailing new lines.
|
||||
- local sleep_argv0="password store sleep on display $DISPLAY"
|
||||
pkill -P $(pgrep -f "^$sleep_argv0") 2>/dev/null && sleep 0.5
|
||||
- local before="$(xclip -o -selection "$X_SELECTION" 2>/dev/null | $BASE64)"
|
||||
- echo -n "$1" | xclip -selection "$X_SELECTION" || die "Error: Could not copy data to the clipboard"
|
||||
+ local before="$("${paste_cmd[@]}" 2>/dev/null | $BASE64)"
|
||||
+ echo -n "$1" | "${copy_cmd[@]}" || die "Error: Could not copy data to the clipboard"
|
||||
(
|
||||
( exec -a "$sleep_argv0" bash <(echo trap 'kill %1' TERM\; sleep "$CLIP_TIME & wait") )
|
||||
- local now="$(xclip -o -selection "$X_SELECTION" | $BASE64)"
|
||||
+ local now="$("${paste_cmd[@]}" | $BASE64)"
|
||||
[[ $now != $(echo -n "$1" | $BASE64) ]] && before="$now"
|
||||
|
||||
# It might be nice to programatically check to see if klipper exists,
|
||||
@@ -173,7 +189,7 @@ clip() {
|
||||
# so we axe it here:
|
||||
qdbus org.kde.klipper /klipper org.kde.klipper.klipper.clearClipboardHistory &>/dev/null
|
||||
|
||||
- echo "$before" | $BASE64 -d | xclip -selection "$X_SELECTION"
|
||||
+ echo "$before" | $BASE64 -d | "${copy_cmd[@]}"
|
||||
) >/dev/null 2>&1 & disown
|
||||
echo "Copied $2 to clipboard. Will clear in $CLIP_TIME seconds."
|
||||
}
|
||||
--
|
||||
cgit v1.2.1-28-gf32c
|
||||
|
|
@ -3,8 +3,9 @@
|
|||
, which, procps , qrencode , makeWrapper, pass, symlinkJoin
|
||||
|
||||
, xclip ? null, xdotool ? null, dmenu ? null
|
||||
, x11Support ? !stdenv.isDarwin , dmenuSupport ? x11Support
|
||||
, x11Support ? !stdenv.isDarwin , dmenuSupport ? (x11Support || waylandSupport)
|
||||
, waylandSupport ? false, wl-clipboard ? null
|
||||
, ydotool ? null, dmenu-wayland ? null
|
||||
|
||||
# For backwards-compatibility
|
||||
, tombPluginSupport ? false
|
||||
|
@ -13,13 +14,15 @@
|
|||
with lib;
|
||||
|
||||
assert x11Support -> xclip != null;
|
||||
|
||||
assert dmenuSupport -> dmenu != null
|
||||
&& xdotool != null
|
||||
&& x11Support;
|
||||
|
||||
assert waylandSupport -> wl-clipboard != null;
|
||||
|
||||
assert dmenuSupport -> x11Support || waylandSupport;
|
||||
assert dmenuSupport && x11Support
|
||||
-> dmenu != null && xdotool != null;
|
||||
assert dmenuSupport && waylandSupport
|
||||
-> dmenu-wayland != null && ydotool != null;
|
||||
|
||||
|
||||
let
|
||||
passExtensions = import ./extensions { inherit pkgs; };
|
||||
|
||||
|
@ -52,21 +55,18 @@ let
|
|||
in
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
version = "1.7.3";
|
||||
version = "1.7.4";
|
||||
pname = "password-store";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://git.zx2c4.com/password-store/snapshot/${pname}-${version}.tar.xz";
|
||||
sha256 = "1x53k5dn3cdmvy8m4fqdld4hji5n676ksl0ql4armkmsds26av1b";
|
||||
sha256 = "1h4k6w7g8pr169p5w9n6mkdhxl3pw51zphx7www6pvgjb7vgmafg";
|
||||
};
|
||||
|
||||
patches = [
|
||||
./set-correct-program-name-for-sleep.patch
|
||||
./extension-dir.patch
|
||||
] ++ lib.optional stdenv.isDarwin ./no-darwin-getopt.patch
|
||||
# TODO (@Ma27) this patch adds support for wl-clipboard and can be removed during the next
|
||||
# version bump.
|
||||
++ lib.optional waylandSupport ./clip-wayland-support.patch;
|
||||
] ++ lib.optional stdenv.isDarwin ./no-darwin-getopt.patch;
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
|
||||
|
@ -74,8 +74,7 @@ stdenv.mkDerivation rec {
|
|||
|
||||
postInstall = ''
|
||||
# Install Emacs Mode. NOTE: We can't install the necessary
|
||||
# dependencies (s.el and f.el) here. The user has to do this
|
||||
# himself.
|
||||
# dependencies (s.el) here. The user has to do this themselves.
|
||||
mkdir -p "$out/share/emacs/site-lisp"
|
||||
cp "contrib/emacs/password-store.el" "$out/share/emacs/site-lisp/"
|
||||
'' + optionalString dmenuSupport ''
|
||||
|
@ -96,8 +95,10 @@ stdenv.mkDerivation rec {
|
|||
procps
|
||||
] ++ optional stdenv.isDarwin openssl
|
||||
++ optional x11Support xclip
|
||||
++ optionals dmenuSupport [ xdotool dmenu ]
|
||||
++ optional waylandSupport wl-clipboard);
|
||||
++ optional waylandSupport wl-clipboard
|
||||
++ optionals (waylandSupport && dmenuSupport) [ ydotool dmenu-wayland ]
|
||||
++ optionals (x11Support && dmenuSupport) [ xdotool dmenu ]
|
||||
);
|
||||
|
||||
postFixup = ''
|
||||
# Fix program name in --help
|
||||
|
|
|
@ -1,9 +1,11 @@
|
|||
diff -Naur password-store-1.6.5-orig/src/platform/darwin.sh password-store-1.6.5/src/platform/darwin.sh
|
||||
--- password-store-1.6.5-orig/src/platform/darwin.sh 2015-01-28 16:43:02.000000000 +0000
|
||||
+++ password-store-1.6.5/src/platform/darwin.sh 2015-02-15 16:09:02.000000000 +0000
|
||||
@@ -31,5 +31,4 @@
|
||||
mount -t hfs -o noatime -o nobrowse "$DARWIN_RAMDISK_DEV" "$SECURE_TMPDIR" || die "Error: could not mount filesystem on ramdisk."
|
||||
diff --git a/src/platform/darwin.sh b/src/platform/darwin.sh
|
||||
index f6cc471..e2e8bba 100644
|
||||
--- a/src/platform/darwin.sh
|
||||
+++ b/src/platform/darwin.sh
|
||||
@@ -39,6 +39,5 @@ qrcode() {
|
||||
fi
|
||||
}
|
||||
|
||||
-GETOPT="$(brew --prefix gnu-getopt 2>/dev/null || { which port &>/dev/null && echo /opt/local; } || echo /usr/local)/bin/getopt"
|
||||
-GETOPT="$({ test -x /usr/local/opt/gnu-getopt/bin/getopt && echo /usr/local/opt/gnu-getopt; } || brew --prefix gnu-getopt 2>/dev/null || { which port &>/dev/null && echo /opt/local; } || echo /usr/local)/bin/getopt"
|
||||
SHRED="srm -f -z"
|
||||
BASE64="openssl base64"
|
||||
|
|
|
@ -5,29 +5,10 @@ Subject: [PATCH] Patch the clip() function to work even when using
|
|||
single-binary coreutils
|
||||
|
||||
---
|
||||
src/password-store.sh | 4 ++--
|
||||
src/platform/cygwin.sh | 4 ++--
|
||||
src/platform/darwin.sh | 4 ++--
|
||||
3 files changed, 6 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/src/password-store.sh b/src/password-store.sh
|
||||
index 7264ffc..68551a4 100755
|
||||
--- a/src/password-store.sh
|
||||
+++ b/src/password-store.sh
|
||||
@@ -155,11 +155,11 @@ clip() {
|
||||
# variable. Specifically, it cannot store nulls nor (non-trivally) store
|
||||
# trailing new lines.
|
||||
local sleep_argv0="password store sleep on display $DISPLAY"
|
||||
- pkill -f "^$sleep_argv0" 2>/dev/null && sleep 0.5
|
||||
+ pkill -P $(pgrep -f "^$sleep_argv0") 2>/dev/null && sleep 0.5
|
||||
local before="$(xclip -o -selection "$X_SELECTION" 2>/dev/null | $BASE64)"
|
||||
echo -n "$1" | xclip -selection "$X_SELECTION" || die "Error: Could not copy data to the clipboard"
|
||||
(
|
||||
- ( exec -a "$sleep_argv0" bash <<<"trap 'kill %1' TERM; sleep '$CLIP_TIME' & wait" )
|
||||
+ ( exec -a "$sleep_argv0" bash <(echo trap 'kill %1' TERM\; sleep "$CLIP_TIME & wait") )
|
||||
local now="$(xclip -o -selection "$X_SELECTION" | $BASE64)"
|
||||
[[ $now != $(echo -n "$1" | $BASE64) ]] && before="$now"
|
||||
|
||||
diff --git a/src/platform/cygwin.sh b/src/platform/cygwin.sh
|
||||
index 5a8d5ea..423e0ce 100644
|
||||
--- a/src/platform/cygwin.sh
|
||||
|
|
Loading…
Reference in a new issue