From owner-svn-ports-head@FreeBSD.ORG Mon Sep 24 14:04:32 2012 Return-Path: Delivered-To: svn-ports-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id D04DB1065678; Mon, 24 Sep 2012 14:04:32 +0000 (UTC) (envelope-from swills@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id B7A098FC15; Mon, 24 Sep 2012 14:04:32 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q8OE4WuG031915; Mon, 24 Sep 2012 14:04:32 GMT (envelope-from swills@svn.freebsd.org) Received: (from swills@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q8OE4Wo1031909; Mon, 24 Sep 2012 14:04:32 GMT (envelope-from swills@svn.freebsd.org) Message-Id: <201209241404.q8OE4Wo1031909@svn.freebsd.org> From: Steve Wills Date: Mon, 24 Sep 2012 14:04:32 +0000 (UTC) To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org X-SVN-Group: ports-head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r304778 - in head/sysutils/password-store: . files X-BeenThere: svn-ports-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the ports tree for head List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 Sep 2012 14:04:32 -0000 Author: swills Date: Mon Sep 24 14:04:31 2012 New Revision: 304778 URL: http://svn.freebsd.org/changeset/ports/304778 Log: - Update to 1.4 - Patches updated PR: ports/171905 Submitted by: milki (maintainer) Modified: head/sysutils/password-store/Makefile head/sysutils/password-store/distinfo (contents, props changed) head/sysutils/password-store/files/linuxism+git+xclip.patch (contents, props changed) head/sysutils/password-store/files/linuxism+git.patch (contents, props changed) head/sysutils/password-store/files/linuxism+xclip.patch (contents, props changed) head/sysutils/password-store/files/linuxism.patch (contents, props changed) Modified: head/sysutils/password-store/Makefile ============================================================================== --- head/sysutils/password-store/Makefile Mon Sep 24 12:56:05 2012 (r304777) +++ head/sysutils/password-store/Makefile Mon Sep 24 14:04:31 2012 (r304778) @@ -1,7 +1,7 @@ # $FreeBSD$ PORTNAME= password-store -PORTVERSION= 1.3.1 +PORTVERSION= 1.4 CATEGORIES= sysutils MASTER_SITES= http://git.zx2c4.com/password-store/snapshot/ EXTRACT_SUFX= .tar.xz @@ -17,7 +17,7 @@ RUN_DEPENDS= gnupg>=2:${PORTSDIR}/securi OPTIONS_DEFINE= GIT XCLIP -GIT_DESC= Enable git backend +GIT_DESC= Enable git storage XCLIP_DESC= Enable xclip feature .include @@ -52,6 +52,7 @@ do-install: @${MKDIR} ${DATADIR} ${INSTALL_DATA} ${WRKSRC}/contrib/pass.bash-completion ${DATADIR}/ ${INSTALL_DATA} ${WRKSRC}/contrib/pass.zsh-completion ${DATADIR}/ + ${INSTALL_DATA} ${WRKSRC}/contrib/pass.fish-completion ${DATADIR}/ ${INSTALL_DATA} ${WRKSRC}/man/pass.1 ${MANPREFIX}/man/man1/pass.1 MAN1= pass.1 @@ -60,7 +61,8 @@ MANCOMPRESSED= no PLIST_FILES= bin/pass \ libexec/pass \ share/password-store/pass.bash-completion \ - share/password-store/pass.zsh-completion + share/password-store/pass.zsh-completion \ + share/password-store/pass.fish-completion PLIST_DIRS= share/password-store .include Modified: head/sysutils/password-store/distinfo ============================================================================== --- head/sysutils/password-store/distinfo Mon Sep 24 12:56:05 2012 (r304777) +++ head/sysutils/password-store/distinfo Mon Sep 24 14:04:31 2012 (r304778) @@ -1,2 +1,2 @@ -SHA256 (password-store-1.3.1.tar.xz) = 351c0e2eb3315ca317026e73f7654a6351f2674000d9476b18c1525cbc5d732d -SIZE (password-store-1.3.1.tar.xz) = 14864 +SHA256 (password-store-1.4.tar.xz) = 2e94b0078abdf4673f3c22bde048776a3c12776b1bc98c22e8fb6e684b0b4a9e +SIZE (password-store-1.4.tar.xz) = 17968 Modified: head/sysutils/password-store/files/linuxism+git+xclip.patch ============================================================================== --- head/sysutils/password-store/files/linuxism+git+xclip.patch Mon Sep 24 12:56:05 2012 (r304777) +++ head/sysutils/password-store/files/linuxism+git+xclip.patch Mon Sep 24 14:04:31 2012 (r304778) @@ -1,73 +1,162 @@ diff --git a/README b/README -index 52e23af..f24107f 100644 +index 47ed64b..6ebfd68 100644 --- README +++ README -@@ -14,8 +14,6 @@ Please see the man page for documentation and examples. - - Depends on: - - gpg2 +@@ -17,10 +17,6 @@ Depends on: + http://www.gnu.org/software/bash/ + - GnuPG2 + http://www.gnupg.org/ -- git +- http://www.git-scm.com/ -- xclip +- http://sourceforge.net/projects/xclip/ - pwgen + http://sourceforge.net/projects/pwgen/ - tree - - GNU getopt +diff --git a/contrib/pass.bash-completion b/contrib/pass.bash-completion +index ccffbfa..b9f86e4 100644 +--- contrib/pass.bash-completion ++++ contrib/pass.bash-completion +@@ -48,7 +48,7 @@ _pass() + { + COMPREPLY=() + local cur="${COMP_WORDS[COMP_CWORD]}" +- local commands="init ls show insert generate edit rm git help version" ++ local commands="init ls show insert generate edit rm help version" + if [[ $COMP_CWORD -gt 1 ]]; then + case "${COMP_WORDS[1]}" in + init) +@@ -59,7 +59,6 @@ _pass() + _pass_complete_entries + ;; + show|-*) +- COMPREPLY+=($(compgen -W "-c --clip" -- ${cur})) + _pass_complete_entries 1 + ;; + insert) +@@ -67,16 +66,13 @@ _pass() + _pass_complete_entries + ;; + generate) +- COMPREPLY+=($(compgen -W "-n --no-symbols -c --clip -f --force" -- ${cur})) ++ COMPREPLY+=($(compgen -W "-n --no-symbols -f --force" -- ${cur})) + _pass_complete_entries + ;; + rm|remove|delete) + COMPREPLY+=($(compgen -W "-r --recursive -f --force" -- ${cur})) + _pass_complete_entries + ;; +- git) +- COMPREPLY+=($(compgen -W "init push pull config log reflog" -- ${cur})) +- ;; + esac + else + COMPREPLY+=($(compgen -W "${commands}" -- ${cur})) +diff --git a/contrib/pass.fish-completion b/contrib/pass.fish-completion +index 7652d56..7d470b8 100644 +--- contrib/pass.fish-completion ++++ contrib/pass.fish-completion +@@ -76,7 +76,6 @@ complete -c $PROG -f -A -n '__fish_pass_uses_command insert' -a "(__fish_pass_pr + + complete -c $PROG -f -A -n '__fish_pass_needs_command' -a generate -d 'Command: generate new password' + complete -c $PROG -f -A -n '__fish_pass_uses_command generate' -s n -l no-symbols -d 'Do not use special symbols' +-complete -c $PROG -f -A -n '__fish_pass_uses_command generate' -s c -l clip -d 'Put the password in clipboard' + complete -c $PROG -f -A -n '__fish_pass_uses_command generate' -s f -l force -d 'Do not prompt before overwritting' + complete -c $PROG -f -A -n '__fish_pass_uses_command generate' -a "(__fish_pass_print_entry_dirs)" + +@@ -89,16 +88,7 @@ complete -c $PROG -f -A -n '__fish_pass_needs_command' -a edit -d 'Command: edit + complete -c $PROG -f -A -n '__fish_pass_uses_command edit' -a "(__fish_pass_print_entries)" + + complete -c $PROG -f -A -n '__fish_pass_needs_command' -a show -d 'Command: show existing password' +-complete -c $PROG -f -A -n '__fish_pass_uses_command show' -s c -l clip -d 'Put password in clipboard' + complete -c $PROG -f -A -n '__fish_pass_uses_command show' -a "(__fish_pass_print_entries)" + # When no command is given, `show` is defaulted. +-complete -c $PROG -f -A -n '__fish_pass_needs_command' -s c -l clip -d 'Put password in clipboard' + complete -c $PROG -f -A -n '__fish_pass_needs_command' -a "(__fish_pass_print_entries)" + complete -c $PROG -f -A -n '__fish_pass_uses_command -c' -a "(__fish_pass_print_entries)" +-complete -c $PROG -f -A -n '__fish_pass_uses_command --clip' -a "(__fish_pass_print_entries)" +- +-complete -c $PROG -f -A -n '__fish_pass_needs_command' -a git -d 'Command: execute a git command' +-complete -c $PROG -f -A -n '__fish_pass_uses_command git' -a 'init' -d 'Initialize git repository' +-complete -c $PROG -f -A -n '__fish_pass_uses_command git' -a 'push' -d 'Push changes to remote repo' +-complete -c $PROG -f -A -n '__fish_pass_uses_command git' -a 'pull' -d 'Pull changes from remote repo' +-complete -c $PROG -f -A -n '__fish_pass_uses_command git' -a 'log' -d 'View changelog' diff --git a/contrib/pass.zsh-completion b/contrib/pass.zsh-completion -index 5cf8808..f589b5e 100644 +index c6fe678..4783a60 100644 --- contrib/pass.zsh-completion +++ contrib/pass.zsh-completion -@@ -27,9 +27,6 @@ _pass () { - "generate[Generate a new password using pwgen]" \ - "edit[Edit a password with \$EDITOR]" \ - "rm[Remove the password]" \ -- "push[push the latest changes using git-push(1)]" \ -- "pull[pull the latest changes using git-pull(1)]" \ -- "git[Call git]" \ - "help[Help]" - _pass_cmd_show - fi -@@ -45,7 +42,6 @@ _pass_cmd_ls () { +@@ -39,8 +39,6 @@ _pass () { + _arguments : \ + "-n[don't include symbols in password]" \ + "--no-symbols[don't include symbols in password]" \ +- "-c[copy password to the clipboard]" \ +- "--clip[copy password to the clipboard]" + _pass_complete_entries_with_subdirs + ;; + rm) +@@ -51,18 +49,6 @@ _pass () { + "--recursive[recursively delete]" + _pass_complete_entries_with_subdirs + ;; +- git) +- local -a subcommands +- subcommands=( +- "init:Initialize git repository" +- "push:Push to remote repository" +- "pull:Pull from remote repository" +- "config:Show git config" +- "log:Show git log" +- "reflog:Show git reflog" +- ) +- _describe -t commands 'pass git' subcommands +- ;; + show|*) + _pass_cmd_show + ;; +@@ -77,7 +63,6 @@ _pass () { + "generate:Generate a new password using pwgen" + "edit:Edit a password with \$EDITOR" + "rm:Remove the password" +- "git:Call git on the password store" + "version:Output version information" + "help:Output help message" + ) +@@ -90,15 +75,12 @@ _pass () { + } _pass_cmd_show () { - _arguments : \ -- "-c[put it on the clipboard]" \ - '*::show:_get_stored_pwd' - #'::pass id:_files -W ~/.password-store -g "*.gpg(|.*)(-.)"' +- _arguments : \ +- "-c[put it on the clipboard]" \ +- "--clip[put it on the clipboard]" + _pass_complete_entries } -@@ -65,7 +61,6 @@ _pass_cmd_insert () { - _pass_cmd_generate () { - _arguments : \ - "-n[no symbols]" \ -- "-c[put password on the clipboard]" \ - '::show:_get_stored_pwd' + _pass_complete_entries_helper () { + local IFS=$'\n' + local prefix="${PASSWORD_STORE_DIR:-$HOME/.password-store}" +- _values -C 'passwords' $(find "$prefix" \( -name .git -o -name .gpg-id \) -prune -o $@ -print | sed -e "s#${prefix}.##" -e 's#\.gpg##' | sort) ++ _values -C 'passwords' $(find "$prefix" -name .gpg-id -prune -o $@ -print | sed -e "s#${prefix}.##" -e 's#\.gpg##' | sort) } -@@ -75,6 +70,6 @@ _pass_cmd_rm () { - } - - _get_stored_pwd () { -- compadd `find ~/.password-store \( -name .git -o -name .gpg-id \) -prune -o -type f -print | sed 's#.*\.password-store*.##'| sed 's#\.gpg##' | sort` -+ compadd `find ~/.password-store \( -name .gpg-id \) -prune -o -type f -print | sed 's#.*\.password-store*.##'| sed 's#\.gpg##' | sort` - - } + _pass_complete_entries_with_subdirs () { diff --git a/man/pass.1 b/man/pass.1 -index a124c32..8eeb49b 100644 +index 3ccfa67..2f16727 100644 --- man/pass.1 +++ man/pass.1 -@@ -34,13 +34,6 @@ or +@@ -33,13 +33,6 @@ or depending on the type of specifier in ARGS. Otherwise COMMAND must be one of the valid commands listed below. -Several of the commands below rely on or provide additional functionality if -the password store directory is also a git repository. If the password store -directory is a git repository, all password store modification commands will --cause a corresponding git commit. See the \fIEXAMPLES\fP section for an --extended description using \fBinit\fP and +-cause a corresponding git commit. See the \fIEXTENDED GIT EXAMPLE\fP section +-for a detailed description using \fBinit\fP and -.BR git (1). - The \fBinit\fP command must be run before other commands in order to initialize - the password store with the correct gpg key id. - -@@ -64,12 +57,8 @@ by using the + the password store with the correct gpg key id. Passwords are encrypting using + the gpg key set with \fBinit\fP. +@@ -68,12 +61,8 @@ by using the .BR tree (1) program. This command is alternatively named \fBlist\fP. .TP @@ -80,14 +169,14 @@ index a124c32..8eeb49b 100644 +\fBshow\fP \fIpass-name\fP +Decrypt and print a password named \fIpass-name\fP. .TP - \fBinsert\fP [ \fI--no-echo\fP, \fI-n\fP | \fI--multiline\fP, \fI-m\fP ] [ \fI--force\fP, \fI-f\fP ]\fIpass-name\fP + \fBinsert\fP [ \fI--no-echo\fP, \fI-n\fP | \fI--multiline\fP, \fI-m\fP ] [ \fI--force\fP, \fI-f\fP ] \fIpass-name\fP Insert a new password into the password store called \fIpass-name\fP. This will -@@ -88,33 +77,16 @@ ensure that temporary files are created in \fI/dev/shm\fP in order to avoid writ +@@ -92,15 +81,12 @@ ensure that temporary files are created in \fI/dev/shm\fP in order to avoid writ difficult-to-erase disk sectors. If \fI/dev/shm\fP is not accessible, fallback to - the ordinary \fBTMPDIR\fP location, and print a warning. + the ordinary \fITMPDIR\fP location, and print a warning. .TP --\fBgenerate\fP [ \fI--no-symbols\fP, \fI-n\fP ] [ \fI--clip\fP, \fI-c\fP ] \fIpass-name pass-length\fP -+\fBgenerate\fP [ \fI--no-symbols\fP, \fI-n\fP ] \fIpass-name pass-length\fP +-\fBgenerate\fP [ \fI--no-symbols\fP, \fI-n\fP ] [ \fI--clip\fP, \fI-c\fP ] [ \fI--force\fP, \fI-f\fP ] \fIpass-name pass-length\fP ++\fBgenerate\fP [ \fI--no-symbols\fP, \fI-n\fP ] [ \fI--force\fP, \fI-f\fP ] \fIpass-name pass-length\fP Generate a new password using .BR pwgen (1) of length \fIpass-length\fP and insert into \fIpass-name\fP. If \fI--no-symbols\fP or \fI-n\fP @@ -95,29 +184,26 @@ index a124c32..8eeb49b 100644 -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) --and then restore the clipboard after 45 seconds. +-and then restore the clipboard after 45 seconds. Prompt before overwriting an existing password, ++Prompt before overwriting an existing password, + unless \fI--force\fP or \fI-f\fP is specified. + .TP + \fBrm\fP [ \fI--recursive\fP, \fI-r\fP ] [ \fI--force\fP, \fI-f\fP ] \fIpass-name\fP +@@ -109,13 +95,6 @@ alternatively named \fBremove\fP or \fBdelete\fP. If \fI--recursive\fP or \fI-r\ + is specified, delete pass-name recursively if it is a directory. If \fI--force\fP + or \fI-f\fP is specified, do not interactively prompt before removal. .TP - \fBrm\fP \fIpass-name\fP - Remove the password named \fIpass-name\fP from the password store. This command is - alternatively named \fBremove\fP. - .TP --\fBpush\fP --If the password store is a git repository, push the latest changes using --.BR git-push (1). --.TP --\fBpull\fP --If the password store is a git repository, pull the latest changes using --.BR git-pull (1). --.TP -\fBgit\fP \fIgit-command-args\fP... -If the password store is a git repository, pass \fIgit-command-args\fP as arguments to -.BR git (1) --using the password store as the git repository. +-using the password store as the git repository. If \fIgit-command-args\fP is \fBinit\fP, +-in addition to initializing the git repository, add the current contents of the password +-store to the repository in an initial commit. -.TP \fBhelp\fP Show usage message. .TP -@@ -165,11 +137,6 @@ Show existing password +@@ -166,11 +145,6 @@ Show existing password .br sup3rh4x3rizmynam3 .TP @@ -129,7 +215,7 @@ index a124c32..8eeb49b 100644 Add password to store .B zx2c4@laptop ~ $ pass insert Business/cheese-whiz-factory .br -@@ -208,11 +175,6 @@ The generated password to Email/jasondonenfeld.com is: +@@ -209,10 +183,8 @@ The generated password to Email/jasondonenfeld.com is: .br YqFsMkBeO6di .TP @@ -137,41 +223,53 @@ index a124c32..8eeb49b 100644 -.B zx2c4@laptop ~ $ pass -c generate Email/jasondonenfeld.com 19 -.br -Copied Email/jasondonenfeld.com to clipboard. Will clear in 45 seconds. --.TP ++Generate new password ++.B zx2c4@laptop ~ $ pass generate Email/jasondonenfeld.com 19 + .TP Remove password from store .B zx2c4@laptop ~ $ pass remove Business/cheese-whiz-factory - .br -@@ -220,10 +182,8 @@ rm: remove regular file \[u2018]/home/zx2c4/.password-store/Business/cheese-whiz +@@ -221,99 +193,6 @@ rm: remove regular file \[u2018]/home/zx2c4/.password-store/Business/cheese-whiz .br removed \[u2018]/home/zx2c4/.password-store/Business/cheese-whiz-factory.gpg\[u2019] -.SH EXTENDED GIT EXAMPLE --Here, we initialize new password store, create a git repository, and then manipulate and sync passwords. Make note of the arguments to the first call of \fBpass push\fP; consult +-Here, we initialize new password store, create a git repository, and then manipulate and sync passwords. Make note of the arguments to the first call of \fBpass git push\fP; consult -.BR git-push (1) -for more information. -+.SH EXTENDED EXAMPLE -+Here, we initialize new password store, and then manipulate and sync passwords. - - .B zx2c4@laptop ~ $ pass init Jason@zx2c4.com - .br -@@ -231,12 +191,6 @@ mkdir: created directory \[u2018]/home/zx2c4/.password-store\[u2019] - .br - Password store initialized for Jason@zx2c4.com. - +- +-.B zx2c4@laptop ~ $ pass init Jason@zx2c4.com +-.br +-mkdir: created directory \[u2018]/home/zx2c4/.password-store\[u2019] +-.br +-Password store initialized for Jason@zx2c4.com. +- -.B zx2c4@laptop ~ $ pass git init -.br --Initialized empty Git repository in /home/zx2c4/.password-store/.git/ +-Initialized empty Git repository in /home/zx2c4/.password-store/.git/ +-.br +-[master (root-commit) 998c8fd] Added current contents of password store. +-.br +- 1 file changed, 1 insertion(+) +-.br +- create mode 100644 .gpg-id - -.B zx2c4@laptop ~ $ pass git remote add origin kexec.com:pass-store - - .B zx2c4@laptop ~ $ pass generate Amazon/amazonemail@email.com 21 - .br - mkdir: created directory \[u2018]/home/zx2c4/.password-store/Amazon\[u2019] -@@ -251,24 +205,6 @@ The generated password to Amazon/amazonemail@email.com is: - .br - <5m,_BrZY`antNDxKN<0A - --.B zx2c4@laptop ~ $ pass push -u --all +-.B zx2c4@laptop ~ $ pass generate Amazon/amazonemail@email.com 21 +-.br +-mkdir: created directory \[u2018]/home/zx2c4/.password-store/Amazon\[u2019] +-.br +-[master 30fdc1e] Added generated password for Amazon/amazonemail@email.com to store. +-.br +-1 file changed, 0 insertions(+), 0 deletions(-) +-.br +-create mode 100644 Amazon/amazonemail@email.com.gpg +-.br +-The generated password to Amazon/amazonemail@email.com is: +-.br +-<5m,_BrZY`antNDxKN<0A +- +-.B zx2c4@laptop ~ $ pass git push -u --all -.br -Counting objects: 4, done. -.br @@ -189,14 +287,31 @@ index a124c32..8eeb49b 100644 -.br -Branch master set up to track remote branch master from origin. - - .B zx2c4@laptop ~ $ pass insert Amazon/otheraccount@email.com - .br - Enter password for Amazon/otheraccount@email.com: som3r3a11yb1gp4ssw0rd!!88** -@@ -293,20 +229,6 @@ rm 'Amazon/amazonemail@email.com.gpg' - .br - delete mode 100644 Amazon/amazonemail@email.com.gpg - --.B zx2c4@laptop ~ $ pass push +-.B zx2c4@laptop ~ $ pass insert Amazon/otheraccount@email.com +-.br +-Enter password for Amazon/otheraccount@email.com: som3r3a11yb1gp4ssw0rd!!88** +-.br +-[master b9b6746] Added given password for Amazon/otheraccount@email.com to store. +-.br +-1 file changed, 0 insertions(+), 0 deletions(-) +-.br +-create mode 100644 Amazon/otheraccount@email.com.gpg +- +-.B zx2c4@laptop ~ $ pass rm Amazon/amazonemail@email.com +-.br +-rm: remove regular file \[u2018]/home/zx2c4/.password-store/Amazon/amazonemail@email.com.gpg\[u2019]? y +-.br +-removed \[u2018]/home/zx2c4/.password-store/Amazon/amazonemail@email.com.gpg\[u2019] +-.br +-rm 'Amazon/amazonemail@email.com.gpg' +-.br +-[master 288b379] Removed Amazon/amazonemail@email.com from store. +-.br +-1 file changed, 0 insertions(+), 0 deletions(-) +-.br +-delete mode 100644 Amazon/amazonemail@email.com.gpg +- +-.B zx2c4@laptop ~ $ pass git push -.br -Counting objects: 9, done. -.br @@ -213,7 +328,18 @@ index a124c32..8eeb49b 100644 .SH FILES .TP -@@ -320,8 +242,6 @@ be set using the \fBinit\fP command. +@@ -333,19 +212,12 @@ Overrides the default password storage directory. + .I PASSWORD_STORE_KEY + Overrides the default gpg key identification set by \fBinit\fP. + .TP +-.I PASSWORD_STORE_GIT +-Overrides the default root of the git repository, which is helpful if +-\fIPASSWORD_STORE_DIR\fP is temporarily set to a sub-directory of the default +-password store. +-.TP + .I EDITOR + The location of the text editor used by \fBedit\fP. + .SH SEE ALSO .BR gpg (1), .BR pwgen (1), @@ -223,31 +349,30 @@ index a124c32..8eeb49b 100644 .SH AUTHOR .B pass diff --git a/src/password-store.sh b/src/password-store.sh -index 1553e5b..103dfd1 100755 +index 503bac4..ecc4665 100755 --- src/password-store.sh +++ src/password-store.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/local/bin/bash - # (C) Copyright 2012 Jason A. Donenfeld . All Rights Reserved. - # This is released under the GPLv2+. Please see COPYING for more information. -@@ -7,11 +7,9 @@ umask 077 + # Copyright (C) 2012 Jason A. Donenfeld . All Rights Reserved. + # This file is licensed under the GPLv2+. Please see COPYING for more information. +@@ -7,12 +7,8 @@ umask 077 PREFIX="${PASSWORD_STORE_DIR:-$HOME/.password-store}" ID="$PREFIX/.gpg-id" --GIT="$PREFIX/.git" +-GIT_DIR="${PASSWORD_STORE_GIT:-$PREFIX}/.git" GPG_OPTS="--quiet --yes --batch" -- --export GIT_DIR="$GIT" --export GIT_WORK_TREE="$PREFIX" -+GETOPT=/usr/local/bin/getopt -+GPG=gpg2 +-export GIT_DIR +-export GIT_WORK_TREE="${PASSWORD_STORE_GIT:-$PREFIX}" +- version() { cat <<_EOF -@@ -34,27 +32,18 @@ Usage: - Initialize new password storage and use gpg-id for encryption. + |-----------------------| +@@ -35,24 +31,19 @@ Usage: + Optionally reencrypt existing passwords using new gpg-id. $program [ls] [subfolder] List passwords. - $program [show] [--clip,-c] pass-name @@ -261,31 +386,41 @@ index 1553e5b..103dfd1 100755 before overwriting existing password unless forced. $program edit pass-name Insert a new password or edit an existing password using ${EDITOR:-vi}. -- $program generate [--no-symbols,-n] [--clip,-c] pass-name pass-length -+ $program generate [--no-symbols,-n] pass-name pass-length +- $program generate [--no-symbols,-n] [--clip,-c] [--force,-f] pass-name pass-length ++ $program generate [--no-symbols,-n] [--force,-f] pass-name pass-length Generate a new password of pass-length with optionally no symbols. - Optionally put it on the clipboard and clear board after 45 seconds. - $program rm pass-name - Remove existing password. -- $program push -- If the password store is a git repository, push the latest changes. -- $program pull -- If the password store is a git repository, pull the latest changes. + Prompt before overwriting existing password unless forced. + $program rm [--recursive,-r] [--force,-f] pass-name + Remove existing password or directory, optionally forcefully. - $program git git-command-args... - If the password store is a git repository, execute a git command - specified by git-command-args. $program help Show this text. $program version -@@ -63,32 +52,10 @@ _EOF +@@ -63,16 +54,10 @@ _EOF } - isCommand() { + is_command() { case "$1" in -- init|ls|list|show|insert|edit|generate|remove|rm|delete|push|pull|git|help|--help|version|--version) return 0 ;; +- init|ls|list|show|insert|edit|generate|remove|rm|delete|git|help|--help|version|--version) return 0 ;; + init|ls|list|show|insert|edit|generate|remove|rm|delete|help|--help|version|--version) return 0 ;; *) return 1 ;; esac } +-git_add_file() { +- [[ -d $GIT_DIR ]] || return +- git add "$1" || return +- [[ -n $(git status --porcelain "$1") ]] || return +- git commit -m "$2" +-} + yesno() { + read -p "$1 [y/N] " response + [[ $response == "y" || $response == "Y" ]] || exit 1 +@@ -80,49 +65,24 @@ yesno() { + # + # BEGIN Platform definable + # -clip() { - # This base64 business is a disgusting hack to deal with newline inconsistancies - # in shell. There must be a better way to deal with this, but because I'm a dolt, @@ -299,172 +434,165 @@ index 1553e5b..103dfd1 100755 - if [[ $now != $(echo -n "$1" | base64) ]]; then - before="$now" - fi + - # It might be nice to programatically check to see if klipper exists, - # as well as checking for other common clipboard managers. But for now, -- # this works fine. Clipboard managers frequently write their history -- # out in plaintext, so we axe it here. -- qdbus org.kde.klipper /klipper org.kde.klipper.klipper.clearClipboardHistory >/dev/null 2>&1 +- # this works fine -- if qdbus isn't there or if klipper isn't running, +- # this essentially becomes a no-op. +- # +- # Clipboard managers frequently write their history out in plaintext, +- # so we axe it here: +- qdbus org.kde.klipper /klipper org.kde.klipper.klipper.clearClipboardHistory &>/dev/null +- - echo "$before" | base64 -d | xclip -selection clipboard - ) & disown - echo "Copied $2 to clipboard. Will clear in 45 seconds." -} - program="$(basename "$0")" - command="$1" - if isCommand "$command"; then -@@ -132,18 +99,10 @@ fi + tmpdir() { +- if [[ -d /dev/shm && -w /dev/shm && -x /dev/shm ]]; then +- tmp_dir="$(TMPDIR=/dev/shm mktemp -t "$template" -d)" ++ ramdisk="/var/tmp/password-store.ramdisk" ++ if [[ -d $ramdisk && -w $ramdisk && -x $ramdisk ]]; then ++ tmp_dir="$(TMPDIR=$ramdisk mktemp -t "$template" -d)" + else +- yesno "$(echo "Your system does not have /dev/shm, which means that it may" +- echo "be difficult to entirely erase the temporary non-encrypted" +- echo "password file after editing. Are you sure you would like to" +- echo -n "continue?")" ++ yesno "$(echo "A ramdisk does not exist at $ramdisk, which means that it may" ++ echo "be difficult to entirely erase the temporary non-encrypted" ++ echo "password file after editing. Are you sure you would like to" ++ echo -n "continue?")" ++ + tmp_dir="$(mktemp -t "$template" -d)" + fi +- + } +-GPG="gpg" +-GETOPT="getopt" + +-# source /path/to/platform-defined-functions ++GPG="gpg2" ++GETOPT="/usr/local/bin/getopt" ++ + # + # END Platform definable + # +@@ -156,14 +116,12 @@ case "$command" in + mkdir -v -p "$PREFIX" + echo "$gpg_id" > "$ID" + echo "Password store initialized for $gpg_id." +- git_add_file "$ID" "Set GPG id to $gpg_id." + + if [[ $reencrypt -eq 1 ]]; then + find "$PREFIX" -iname '*.gpg' | while read passfile; do + $GPG -d $GPG_OPTS "$passfile" | $GPG -e -r "$gpg_id" -o "$passfile.new" $GPG_OPTS && + mv -v "$passfile.new" "$passfile" + done +- git_add_file "$PREFIX" "Reencrypted entire store using new GPG id $gpg_id." + fi + exit 0 + ;; +@@ -192,18 +150,8 @@ fi case "$command" in show|ls|list) - clip=0 - -- opts="$(getopt -o c -l clip -n $program -- "$@")" - err=$? +- opts="$($GETOPT -o c -l clip -n "$program" -- "$@")" +- err=$? - eval set -- "$opts" - while true; do case $1 in - -c|--clip) clip=1; shift ;; - --) shift; break ;; - esac done - +- if [[ $err -ne 0 ]]; then - echo "Usage: $program $command [--clip,-c] [pass-name]" + echo "Usage: $program $command [pass-name]" exit 1 fi -@@ -161,11 +120,7 @@ case "$command" in +@@ -221,11 +169,7 @@ case "$command" in echo "$path is not in the password store." exit 1 fi -- if [ $clip -eq 0 ]; then -- exec gpg -q -d --yes --batch "$passfile" +- if [[ $clip -eq 0 ]]; then +- exec $GPG -d $GPG_OPTS "$passfile" - else -- clip "$(gpg -q -d --yes --batch "$passfile" | head -n 1)" "$path" +- clip "$($GPG -d $GPG_OPTS "$passfile" | head -n 1)" "$path" - fi -+ exec $GPG -q -d --yes --batch "$passfile" ++ exec $GPG -d $GPG_OPTS "$passfile" fi ;; insert) -@@ -173,7 +128,7 @@ case "$command" in - noecho=0 - force=0 - -- opts="$(getopt -o mnf -l multiline,no-echo,force -n $program -- "$@")" -+ opts="$($GETOPT -o mnf -l multiline,no-echo,force -n $program -- "$@")" - err=$? - eval set -- "$opts" - while true; do case $1 in -@@ -201,7 +156,7 @@ case "$command" in - if [[ $ml -eq 1 ]]; then - echo "Enter contents of $path and press Ctrl+D when finished:" - echo -- cat | gpg -e -r "$ID" -o "$passfile" $GPG_OPTS -+ cat | $GPG -e -r "$ID" -o "$passfile" $GPG_OPTS - elif [[ $noecho -eq 1 ]]; then - while true; do - read -p "Enter password for $path: " -s password -@@ -209,7 +164,7 @@ case "$command" in - read -p "Retype password for $path: " -s password_again - echo - if [[ $password == $password_again ]]; then -- gpg -e -r "$ID" -o "$passfile" $GPG_OPTS <<<"$password" -+ $GPG -e -r "$ID" -o "$passfile" $GPG_OPTS <<<"$password" - break - else - echo "Error: the entered passwords do not match." -@@ -217,11 +172,7 @@ case "$command" in - done - else +@@ -275,7 +219,6 @@ case "$command" in read -p "Enter password for $path: " -e password -- gpg -e -r "$ID" -o "$passfile" $GPG_OPTS <<<"$password" -- fi -- if [[ -d $GIT ]]; then -- git add "$passfile" -- git commit -m "Added given password for $path to store." -+ $GPG -e -r "$ID" -o "$passfile" $GPG_OPTS <<<"$password" + $GPG -e -r "$ID" -o "$passfile" $GPG_OPTS <<<"$password" fi +- git_add_file "$passfile" "Added given password for $path to store." ;; edit) -@@ -252,35 +203,28 @@ case "$command" in - - action="Added" - if [[ -f $passfile ]]; then -- gpg -d -o "$tmp_file" $GPG_OPTS "$passfile" || exit 1 -+ $GPG -d -o "$tmp_file" $GPG_OPTS "$passfile" || exit 1 - action="Edited" - fi - ${EDITOR:-vi} "$tmp_file" -- while ! gpg -e -r "$ID" -o "$passfile" $GPG_OPTS "$tmp_file"; do -+ while ! $GPG -e -r "$ID" -o "$passfile" $GPG_OPTS "$tmp_file"; do + if [[ $# -ne 1 ]]; then +@@ -303,25 +246,22 @@ case "$command" in echo "GPG encryption failed. Retrying." sleep 1 done -- -- if [[ -d $GIT ]]; then -- git add "$passfile" -- git commit -m "$action password for $path using ${EDITOR:-vi}." -- fi +- git_add_file "$passfile" "$action password for $path using ${EDITOR:-vi}." ;; generate) - clip=0 + force=0 symbols="-y" -- opts="$(getopt -o nc -l no-symbols,clip -n $program -- "$@")" -+ opts="$($GETOPT -o nc -l no-symbols -n $program -- "$@")" +- opts="$($GETOPT -o ncf -l no-symbols,clip,force -n "$program" -- "$@")" ++ opts="$($GETOPT -o ncf -l no-symbols,force -n "$program" -- "$@")" err=$? eval set -- "$opts" while true; do case $1 in -n|--no-symbols) symbols=""; shift ;; - -c|--clip) clip=1; shift ;; + -f|--force) force=1; shift ;; --) shift; break ;; esac done if [[ $err -ne 0 || $# -ne 2 ]]; then -- echo "Usage: $program $command [--no-symbols,-n] [--clip,-c] pass-name pass-length" -+ echo "Usage: $program $command [--no-symbols,-n] pass-name pass-length" +- echo "Usage: $program $command [--no-symbols,-n] [--clip,-c] [--force,-f] pass-name pass-length" ++ echo "Usage: $program $command [--no-symbols,-n] [--force,-f] pass-name pass-length" exit 1 fi path="$1" -@@ -292,18 +236,9 @@ case "$command" in - mkdir -p -v "$PREFIX/$(dirname "$path")" +@@ -338,14 +278,9 @@ case "$command" in pass="$(pwgen -s $symbols $length 1)" - passfile="$PREFIX/$path.gpg" -- gpg -e -r "$ID" -o "$passfile" $GPG_OPTS <<<"$pass" -- if [[ -d $GIT ]]; then -- git add "$passfile" -- git commit -m "Added generated password for $path to store." -- fi -- -- if [ $clip -eq 0 ]; then + [[ -n $pass ]] || exit 1 + $GPG -e -r "$ID" -o "$passfile" $GPG_OPTS <<<"$pass" +- git_add_file "$passfile" "Added generated password for $path to store." + +- if [[ $clip -eq 0 ]]; then - echo "The generated password to $path is:" - echo "$pass" - else - clip "$pass" "$path" - fi -+ $GPG -e -r "$ID" -o "$passfile" $GPG_OPTS <<<"$pass" + echo "The generated password to $path is:" + echo "$pass" ;; delete|rm|remove) - if [[ $# -ne 1 ]]; then -@@ -317,26 +252,6 @@ case "$command" in - exit 1 - fi - rm -i -v "$passfile" -- if [[ -d $GIT ]] && ! [[ -f $passfile ]]; then -- git rm -f "$passfile" + recursive="" +@@ -377,21 +312,6 @@ case "$command" in + [[ $force -eq 1 ]] || yesno "Are you sure you would like to delete $path?" + + rm $recursive -f -v "$passfile" +- if [[ -d $GIT_DIR && ! -e $passfile ]]; then +- git rm -qr "$passfile" - git commit -m "Removed $path from store." - fi - ;; -- push|pull) -- if [[ -d $GIT ]]; then -- exec git $command "$@" -- else -- echo "Error: the password store is not a git repository." -- exit 1 -- fi -- ;; - git) -- if [[ $1 == "init" ]] || [[ -d $GIT ]]; then +- if [[ $1 == "init" ]]; then +- git "$@" || exit 1 +- git_add_file "$PREFIX" "Added current contents of password store." +- elif [[ -d $GIT_DIR ]]; then - exec git "$@" - else - echo "Error: the password store is not a git repository." Modified: head/sysutils/password-store/files/linuxism+git.patch ============================================================================== --- head/sysutils/password-store/files/linuxism+git.patch Mon Sep 24 12:56:05 2012 (r304777) +++ head/sysutils/password-store/files/linuxism+git.patch Mon Sep 24 14:04:31 2012 (r304778) @@ -1,106 +1,167 @@ diff --git a/README b/README -index 52e23af..273aa27 100644 +index 47ed64b..65a041e 100644 --- README +++ README -@@ -14,7 +14,6 @@ Please see the man page for documentation and examples. - - Depends on: - - gpg2 +@@ -17,8 +17,6 @@ Depends on: + http://www.gnu.org/software/bash/ + - GnuPG2 + http://www.gnupg.org/ -- git +- http://www.git-scm.com/ - xclip + http://sourceforge.net/projects/xclip/ - pwgen - - tree +diff --git a/contrib/pass.bash-completion b/contrib/pass.bash-completion +index ccffbfa..aa7e7d8 100644 +--- contrib/pass.bash-completion ++++ contrib/pass.bash-completion +@@ -48,7 +48,7 @@ _pass() + { + COMPREPLY=() + local cur="${COMP_WORDS[COMP_CWORD]}" +- local commands="init ls show insert generate edit rm git help version" ++ local commands="init ls show insert generate edit rm help version" + if [[ $COMP_CWORD -gt 1 ]]; then + case "${COMP_WORDS[1]}" in + init) +@@ -74,9 +74,6 @@ _pass() + COMPREPLY+=($(compgen -W "-r --recursive -f --force" -- ${cur})) + _pass_complete_entries + ;; +- git) +- COMPREPLY+=($(compgen -W "init push pull config log reflog" -- ${cur})) +- ;; + esac + else + COMPREPLY+=($(compgen -W "${commands}" -- ${cur})) +diff --git a/contrib/pass.fish-completion b/contrib/pass.fish-completion +index 7652d56..086e7ee 100644 +--- contrib/pass.fish-completion ++++ contrib/pass.fish-completion +@@ -96,9 +96,3 @@ complete -c $PROG -f -A -n '__fish_pass_needs_command' -s c -l clip -d 'Put pass + complete -c $PROG -f -A -n '__fish_pass_needs_command' -a "(__fish_pass_print_entries)" + complete -c $PROG -f -A -n '__fish_pass_uses_command -c' -a "(__fish_pass_print_entries)" + complete -c $PROG -f -A -n '__fish_pass_uses_command --clip' -a "(__fish_pass_print_entries)" +- +-complete -c $PROG -f -A -n '__fish_pass_needs_command' -a git -d 'Command: execute a git command' +-complete -c $PROG -f -A -n '__fish_pass_uses_command git' -a 'init' -d 'Initialize git repository' +-complete -c $PROG -f -A -n '__fish_pass_uses_command git' -a 'push' -d 'Push changes to remote repo' +-complete -c $PROG -f -A -n '__fish_pass_uses_command git' -a 'pull' -d 'Pull changes from remote repo' +-complete -c $PROG -f -A -n '__fish_pass_uses_command git' -a 'log' -d 'View changelog' diff --git a/contrib/pass.zsh-completion b/contrib/pass.zsh-completion -index 5cf8808..cab22e0 100644 +index c6fe678..9fe974d 100644 --- contrib/pass.zsh-completion +++ contrib/pass.zsh-completion -@@ -27,9 +27,6 @@ _pass () { - "generate[Generate a new password using pwgen]" \ - "edit[Edit a password with \$EDITOR]" \ - "rm[Remove the password]" \ -- "push[push the latest changes using git-push(1)]" \ -- "pull[pull the latest changes using git-pull(1)]" \ -- "git[Call git]" \ - "help[Help]" - _pass_cmd_show - fi -@@ -75,6 +72,6 @@ _pass_cmd_rm () { +@@ -51,18 +51,6 @@ _pass () { + "--recursive[recursively delete]" + _pass_complete_entries_with_subdirs + ;; +- git) +- local -a subcommands +- subcommands=( +- "init:Initialize git repository" +- "push:Push to remote repository" +- "pull:Pull from remote repository" +- "config:Show git config" +- "log:Show git log" +- "reflog:Show git reflog" +- ) +- _describe -t commands 'pass git' subcommands +- ;; + show|*) + _pass_cmd_show + ;; +@@ -77,7 +65,6 @@ _pass () { + "generate:Generate a new password using pwgen" + "edit:Edit a password with \$EDITOR" + "rm:Remove the password" +- "git:Call git on the password store" + "version:Output version information" + "help:Output help message" + ) +@@ -98,7 +85,7 @@ _pass_cmd_show () { + _pass_complete_entries_helper () { + local IFS=$'\n' + local prefix="${PASSWORD_STORE_DIR:-$HOME/.password-store}" +- _values -C 'passwords' $(find "$prefix" \( -name .git -o -name .gpg-id \) -prune -o $@ -print | sed -e "s#${prefix}.##" -e 's#\.gpg##' | sort) ++ _values -C 'passwords' $(find "$prefix" -name .gpg-id -prune -o $@ -print | sed -e "s#${prefix}.##" -e 's#\.gpg##' | sort) } - _get_stored_pwd () { -- compadd `find ~/.password-store \( -name .git -o -name .gpg-id \) -prune -o -type f -print | sed 's#.*\.password-store*.##'| sed 's#\.gpg##' | sort` -+ compadd `find ~/.password-store \( -name .gpg-id \) -prune -o -type f -print | sed 's#.*\.password-store*.##'| sed 's#\.gpg##' | sort` - - } + _pass_complete_entries_with_subdirs () { diff --git a/man/pass.1 b/man/pass.1 -index a124c32..c2ff884 100644 +index 3ccfa67..2ea765b 100644 --- man/pass.1 +++ man/pass.1 -@@ -34,13 +34,6 @@ or +@@ -33,13 +33,6 @@ or depending on the type of specifier in ARGS. Otherwise COMMAND must be one of the valid commands listed below. -Several of the commands below rely on or provide additional functionality if -the password store directory is also a git repository. If the password store -directory is a git repository, all password store modification commands will --cause a corresponding git commit. See the \fIEXAMPLES\fP section for an --extended description using \fBinit\fP and +-cause a corresponding git commit. See the \fIEXTENDED GIT EXAMPLE\fP section +-for a detailed description using \fBinit\fP and -.BR git (1). - The \fBinit\fP command must be run before other commands in order to initialize - the password store with the correct gpg key id. - -@@ -102,19 +95,6 @@ and then restore the clipboard after 45 seconds. - Remove the password named \fIpass-name\fP from the password store. This command is - alternatively named \fBremove\fP. + the password store with the correct gpg key id. Passwords are encrypting using + the gpg key set with \fBinit\fP. +@@ -109,13 +102,6 @@ alternatively named \fBremove\fP or \fBdelete\fP. If \fI--recursive\fP or \fI-r\ + is specified, delete pass-name recursively if it is a directory. If \fI--force\fP + or \fI-f\fP is specified, do not interactively prompt before removal. .TP --\fBpush\fP --If the password store is a git repository, push the latest changes using --.BR git-push (1). --.TP --\fBpull\fP --If the password store is a git repository, pull the latest changes using --.BR git-pull (1). --.TP -\fBgit\fP \fIgit-command-args\fP... -If the password store is a git repository, pass \fIgit-command-args\fP as arguments to -.BR git (1) --using the password store as the git repository. +-using the password store as the git repository. If \fIgit-command-args\fP is \fBinit\fP, +-in addition to initializing the git repository, add the current contents of the password +-store to the repository in an initial commit. -.TP \fBhelp\fP Show usage message. .TP -@@ -220,10 +200,8 @@ rm: remove regular file \[u2018]/home/zx2c4/.password-store/Business/cheese-whiz +@@ -221,99 +207,6 @@ rm: remove regular file \[u2018]/home/zx2c4/.password-store/Business/cheese-whiz .br removed \[u2018]/home/zx2c4/.password-store/Business/cheese-whiz-factory.gpg\[u2019] -.SH EXTENDED GIT EXAMPLE --Here, we initialize new password store, create a git repository, and then manipulate and sync passwords. Make note of the arguments to the first call of \fBpass push\fP; consult +-Here, we initialize new password store, create a git repository, and then manipulate and sync passwords. Make note of the arguments to the first call of \fBpass git push\fP; consult -.BR git-push (1) -for more information. -+.SH EXTENDED EXAMPLE -+Here, we initialize new password store, and then manipulate and sync passwords. - - .B zx2c4@laptop ~ $ pass init Jason@zx2c4.com *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***