Speedup pass on macOS and brew

pass-maillinglist at artursterz.de pass-maillinglist at artursterz.de
Tue Oct 23 15:01:31 CEST 2018



> Am 23.10.2018 um 13:35 schrieb Allan Odgaard <lists+pass at simplit.com>:
> 
> On 23 Oct 2018, at 18:11, pass-maillinglist at artursterz.de <mailto:pass-maillinglist at artursterz.de> wrote:
> 
> But you are right in one part, Amir. Just because brew or macports are installed doesn't mean that gnu-getopts was installed with either tool. Therefore, we should check if either is installed AND if gnu-getopt is in the path we assume. If nothing is true, then (and only then) use any reasonable fall back.
> 
> But I have to think about it and make a diff as soon as I am ready.
> 
> At least for homebrew, the pass formula depends on gnu-getopt, therefor only a user who has brew installed but who did a custom install of pass, could run into an issue of missing gnu-getopt.
> 
> I think such scenario is unlikely, especially as brew allows installing pass directly from git (using HEAD).
> 
> Also, if it is desirable with additional fault tolerance, I would argue it belongs in a different commit, as it’s unrelated to the optimization that is being proposed.
> 
I guess having a version that is reasonably fast and fault tolerant at the same time would be great. I pasted a fourth version below, which tries to handle the case, that brew is available, but gnu-getopt was not installed using brew. I also implemented the test for macports, but again since I am not using macports, I can not test this.

What do you think?

diff --git a/src/platform/darwin.sh b/src/platform/darwin.sh
index 342ecce..e402120 100644
--- a/src/platform/darwin.sh
+++ b/src/platform/darwin.sh
@@ -43,6 +43,19 @@ qrcode() {
        fi
 }

-GETOPT="$(brew --prefix gnu-getopt 2>/dev/null || { which port &>/dev/null && echo /opt/local; } || echo /usr/local)/bin/getopt"
+GETOPT_PREFIX=""
+if command -v brew >/dev/null; then
+    GETOPT_PREFIX="$(brew --prefix)/opt/gnu-getopt"
+    if ![ -x "$GETOPT_PREFIX/bin/getopt" ]; then
+        GETOPT_PREFIX=""
+    fi
+elif [[ $GETOPT_PREFIX ]] && command -v port >/dev/null; then
+    GETOPT_PREFIX="/opt/local"
+    if ![ -x "GETOPT_PREFIX/bin/getopt" ]; then
+        GETOPT_PREFIX=""
+    fi
+fi
+GETOPT="${GETOPT_PREFIX:-/usr/local}/bin/getopt"
+
 SHRED="srm -f -z"
 BASE64="openssl base64"
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.zx2c4.com/pipermail/password-store/attachments/20181023/e9f2a05c/attachment.html>


More information about the Password-Store mailing list