summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--COPYING16
-rw-r--r--INSTALL5
-rw-r--r--Makefile10
-rw-r--r--README5
-rw-r--r--bash-completion/pass-bash-completion.sh (renamed from bash-completion.sh)0
-rw-r--r--man/pass.1135
l---------pass1
-rwxr-xr-xsrc/password-store.sh (renamed from password-store.sh)6
8 files changed, 173 insertions, 5 deletions
diff --git a/COPYING b/COPYING
new file mode 100644
index 0000000..b7b8bf0
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,16 @@
+Password Store is Copyright (C) 2012 Jason A. Donenfeld <Jason@zx2c4.com>.
+
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+
diff --git a/INSTALL b/INSTALL
new file mode 100644
index 0000000..854b6c0
--- /dev/null
+++ b/INSTALL
@@ -0,0 +1,5 @@
+Simply typing
+
+ make install
+
+should install pass to the standard locations.
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..7c78ed3
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,10 @@
+all:
+ @echo "Password store is a shell script, so there is nothing to do. Try \"make install\" instead."
+
+install:
+ @install -v src/password-store.sh /usr/bin/pass
+ @install -v man/pass.1 /usr/share/man/man1/pass.1
+ @install -v bash-completion/pass-bash-completion.sh /usr/share/bash-completion/pass
+
+uninstall:
+ @rm -vf /usr/bin/pass /usr/share/man/man1/pass.1 /usr/share/bash-completion/pass
diff --git a/README b/README
index 7dc8a40..8fb5d91 100644
--- a/README
+++ b/README
@@ -25,7 +25,7 @@ Usage:
pass generate [--no-symbols,-n] [--clip,-c] 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.
- pass remove pass-name
+ pass rm pass-name
Remove existing password.
pass push
If the password store is a git repository, push the latest changes.
@@ -37,6 +37,9 @@ Usage:
pass help
Show this text.
+See the man page for more options -- man 1 pass.
+
+
Examples:
- Initialize password store:
diff --git a/bash-completion.sh b/bash-completion/pass-bash-completion.sh
index f3d285a..f3d285a 100644
--- a/bash-completion.sh
+++ b/bash-completion/pass-bash-completion.sh
diff --git a/man/pass.1 b/man/pass.1
new file mode 100644
index 0000000..cfec222
--- /dev/null
+++ b/man/pass.1
@@ -0,0 +1,135 @@
+.TH PASS 1 "2012 Sept 2" ZX2C4 "Password Store"
+
+.SH NAME
+pass - stores, retrieves, generates, and synchronizes passwords securely
+
+.SH SYNOPSIS
+.B pass
+[
+.I COMMAND
+] [
+.I OPTIONS
+]... [
+.I ARGS
+]...
+
+.SH DESCRIPTION
+
+.B pass
+is a very simple password store that keeps passwords inside
+.BR gpg (1)
+encrypted files inside a simple directory tree residing at
+.IR $HOME/.password-store .
+The
+.B pass
+utility provides a series of commands for manipulating the password store,
+allowing the user to add, remove, edit, synchronize, generate, and manipulate
+passwords.
+
+If no COMMAND is specified, COMMAND defaults to either
+.B show
+or
+.BR ls ,
+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.
+
+The \fBinit\fP command must be run before other commands in order to initialize
+the password store with the correct gpg key id.
+
+.SH COMMANDS
+
+.TP
+\fBinit\fP \fIgpg-id\fP
+Initialize new password storage and use
+.I gpg-id
+for encryption. This command must be run first before a password store can be
+used.
+.TP
+\fBls\fP \fIsubfolder\fP
+List names of passwords inside the tree at
+.I subfolder
+by using the
+.BR tree (1)
+program. This command is alternatively named \fBlist\fP.
+.TP
+\fBshow\fP [ \fI--clip\fP, \fI-c\fP ] \fIpass-name\fP
+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 it to the clipboard
+using
+.BR xclip (1)
+and then restore the clipboard after 45 seconds.
+.TP
+\fBinsert\fP [ \fI--multiline\fP, \fI-m\fP ] \fIpass-name\fP
+Insert a new password into the password store called \fIpass-name\fP. This will
+read the new password from standard in. If \fI--multiline\fP or \fI-m\fP is
+specified, lines will be read until EOF or Ctrl+D is reached. Otherwise, only
+a single line from standard in is read.
+.TP
+\fBgenerate\fP [ \fI--no-symbols\fP, \fI-n\fP ] [ \fI--clip\fP, \fI-c\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
+is specified, do not use any non-alphanumeric characters in the generated password.
+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.
+.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.
+.TP
+\fBhelp\fP
+Show usage message.
+
+.SH FILES
+
+.TP
+\fB~/.password-store\fP
+The password storage directory.
+.TP
+\fB~/.password-store/.gpg-id\fP
+Contains the gpg key identification used for encryption and decryption. This should
+be set using the \fBinit\fP command.
+
+.SH SEE ALSO
+.BR gpg (1),
+.BR pwgen (1),
+.BR git (1),
+.BR xclip (1).
+
+.SH AUTHOR
+Jason A. Donenfeld <Jason@zx2c4.com>
+
+.SH COPYING
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
diff --git a/pass b/pass
deleted file mode 120000
index 0a01348..0000000
--- a/pass
+++ /dev/null
@@ -1 +0,0 @@
-password-store.sh \ No newline at end of file
diff --git a/password-store.sh b/src/password-store.sh
index 3ec5b37..2c6bd12 100755
--- a/password-store.sh
+++ b/src/password-store.sh
@@ -28,7 +28,7 @@ Usage:
$program generate [--no-symbols,-n] [--clip,-c] 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 remove pass-name
+ $program rm pass-name
Remove existing password.
$program push
If the password store is a git repository, push the latest changes.
@@ -43,7 +43,7 @@ _EOF
}
isCommand() {
case "$1" in
- init|ls|show|insert|generate|remove|rm|delete|push|pull|git|help) return 0 ;;
+ init|ls|list|show|insert|generate|remove|rm|delete|push|pull|git|help) return 0 ;;
*) return 1 ;;
esac
}
@@ -107,7 +107,7 @@ else
fi
case "$command" in
- show|ls)
+ show|ls|list)
clip=0
if [[ $1 == "--clip" || $1 == "-c" ]]; then
clip=1