aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiquel Lionel <lionelmiquel@sfr.fr>2021-01-05 21:30:26 +0100
committerMiquel Lionel <lionel@les-miquelots.net>2021-01-05 21:50:01 +0100
commitc97080fc5e3f9b76ae3fdfbea6ffd353642abdf1 (patch)
treec11aa2bac1ddc04c045a2742b62e6a2464cb079c
parent9572e7ba8c72b70b5476c6ebb49d2b4cd890e6e5 (diff)
downloadpass.bat-c97080fc5e3f9b76ae3fdfbea6ffd353642abdf1.tar.gz
pass.bat-c97080fc5e3f9b76ae3fdfbea6ffd353642abdf1.zip
$GPG_OPTS added, 'pass view' -> 'pass show' and +
- also support for environnement variable PASSWORD_STORE_GPG_OPTS. Updated the help to reflect that. - 'pass view' is now 'pass show' - 'pass mv' is now more verbose, similar to the unix bash script. - the temporary file created when editing a password has a more random filename now.
-rw-r--r--pass.bat41
1 files changed, 21 insertions, 20 deletions
diff --git a/pass.bat b/pass.bat
index d73e0b5..1f731ee 100644
--- a/pass.bat
+++ b/pass.bat
@@ -1,14 +1,14 @@
@echo off
where gpg.exe >nul 2>nul
-
IF NOT ERRORLEVEL 0 (
echo GPG isn't installed. Exiting...
exit 1
)
for /F "tokens=1,* delims=:" %%a in ('chcp') do set ORIGCP=%%b
-set tmpfile="%TMP%\temppass.txt"
+set tmpfile="%TMP%\pass-%RANDOM%%RANDOM%.txt"
+set GPG_OPTS="%PASSWORD_STORE_GPG_OPTS% --quiet --yes --compress-algo=none --no-encrypt-to --batch --use-agent"
IF NOT DEFINED PASSWORD_STORE_CLIP_TIME (
set PASSWORD_STORE_CLIP_TIME=45
@@ -29,21 +29,22 @@ IF [%~1] EQU [] (
echo.Copyright ^(c^) 2012-2018, Jason A. Donenfeld ^<Jason@zx2c4.com^>
echo.Copyright ^(c^) 2019-2020, Miquel Lionel
echo.
- echo.Here's the available parameters for pass. Text between [] is MANDATORY:
+ echo.Here's the available parameters for pass. Params between [] are MANDATORY:
echo.
echo. ls - without arguments, it list the entire password store as a tree.
- echo. view [passname] - decrypt the password with name [passname], output the result to the console
+ echo. show [passname] - decrypt the password with name [passname], output the result to the console
echo. insert [passname] - insert a password with name [passname], prompt for input. Stop and save with a newline and by pressing Ctrl+Z on your keyboard.
echo. rm [passname] - delete the password matching [passname]. Prompts for confirmation.
echo. rmf [passname] - force the deletion of password matching [passname].
echo. rmrf [passname] - recursively and forcefully delete a directory in the password store.
echo. clip [passname] [linenumber] - copy into the clipboard the text at line [linenumber] for password matching [passname].
- echo.
- echo.ENVIRONNEMENT VARIABLES:
- echo. PASSWORD_STORE_KEY The key^(s^) ID in 0xlong form. Can alternatively be in a .gpg-id file in the password store directory, searches in it by default.
- echo. PASSWORD_STORE_DIR The directory which contains the password, with .gpg extension.
+ echo.
+ echo.ENVIRONNEMENT VARIABLES:
+ echo. PASSWORD_STORE_KEY The key^(s^) ID in 0xlong form. Can alternatively be in a .gpg-id file in the password store directory, searches in it by default.
+ echo. PASSWORD_STORE_DIR The directory which contains the password, with .gpg %GPG_OPTS% extension.
echo. PASSWORD_STORE_CLIP_TIME The time remaining for which a password copied to the clipboard.
+ echo. PASSWORD_STORE_GPG_OPTS Additional options to be passed to all invocations of GPG.
)
@@ -65,17 +66,17 @@ IF ["%1"] EQU ["ls"] (
goto :eof
)
-IF ["%1"] EQU ["view"] (
+IF ["%1"] EQU ["show"] (
:: remove 2>nul for debug info
chcp 65001 >nul
- gpg --default-key %PASSWORD_STORE_KEY% -d "%PASSWORD_STORE_DIR%\%~2.gpg" 2>nul
+ gpg %GPG_OPTS% --default-key %PASSWORD_STORE_KEY% -d "%PASSWORD_STORE_DIR%\%~2.gpg"
chcp %ORIGCP% >nul
goto :eof
)
IF ["%1"] EQU ["insert"] (
shift
- gpg -r %PASSWORD_STORE_KEY% -e -a -o "%PASSWORD_STORE_DIR%\%~2.gpg"
+ gpg %GPG_OPTS% -r %PASSWORD_STORE_KEY% -e -a -o "%PASSWORD_STORE_DIR%\%~2.gpg"
goto :eof
)
@@ -117,7 +118,8 @@ IF ["%1"] EQU ["rmrf"] (
IF ["%1"] EQU ["mv"] (
shift
IF NOT ["%~2"] EQU [] (
- move "%PASSWORD_STORE_DIR%\%~2.gpg" "%PASSWORD_STORE_DIR%\%~3.gpg"
+ move "%PASSWORD_STORE_DIR%\%~2.gpg" "%PASSWORD_STORE_DIR%\%~3.gpg" >nul
+ echo."%PASSWORD_STORE_DIR%\%~2.gpg" -^> "%PASSWORD_STORE_DIR%\%~3.gpg"
)
goto :eof
@@ -127,15 +129,14 @@ IF ["%1"] EQU ["clip"] (
shift
set LINENUMBER=%~3
if defined LINENUMBER (
- echo hoo
- for /F "tokens=1,2* delims=:" %%a in ('chcp 65001 ^>nul ^&^& pass view "%~2" ^| findstr/n ^^^^ ^| findstr /i /b "%~3:" ^&^& chcp %ORIGCP% ^>nul') do (
+ for /F "tokens=1,2* delims=:" %%a in ('chcp 65001 ^>nul ^&^& pass show "%~2" ^| findstr/n ^^^^ ^| findstr /i /b "%~3:" ^&^& chcp %ORIGCP% ^>nul') do (
echo.%%b|clip
- start /MIN /B "" "cmd /c ping ::1 -n %PASSWORD_STORE_CLIP_TIME% >nul && cmd /c echo.|C:\Windows\System32\clip.exe"
+ start /MIN /B "" "cmd /c ping ::1 -n %PASSWORD_STORE_CLIP_TIME% >nul && cmd /c echo.|C:\Windows\System32\clip.exe"
)
) else (
- for /F "tokens=1,2* delims=:" %%a in ('chcp 65001 ^>nul ^&^& pass view "%~2" ^| findstr/n ^^^^ ^| findstr /i /b "1:" ^&^& chcp %ORIGCP% ^>nul') do (
+ for /F "tokens=1,2* delims=:" %%a in ('chcp 65001 ^>nul ^&^& pass show "%~2" ^| findstr/n ^^^^ ^| findstr /i /b "1:" ^&^& chcp %ORIGCP% ^>nul') do (
echo.%%b|clip
- start /MIN /B "" "cmd /c ping ::1 -n %PASSWORD_STORE_CLIP_TIME% >nul && cmd /c echo.|C:\Windows\System32\clip.exe"
+ start /MIN /B "" "cmd /c ping ::1 -n %PASSWORD_STORE_CLIP_TIME% >nul && cmd /c echo.|C:\Windows\System32\clip.exe"
)
)
goto :eof
@@ -144,15 +145,15 @@ IF ["%1"] EQU ["clip"] (
IF ["%1"] EQU ["edit"] (
shift
- gpg -o %tmpfile% -d "%PASSWORD_STORE_DIR%\%~2.gpg"
+ gpg %GPG_OPTS% -o %tmpfile% -d "%PASSWORD_STORE_DIR%\%~2.gpg"
start /W "" notepad %tmpfile%
- gpg -r %PASSWORD_STORE_KEY% -e -a -o "%PASSWORD_STORE_DIR%\%~2.gpg" %tmpfile%
+ gpg %GPG_OPTS% -r %PASSWORD_STORE_KEY% -e -a -o "%PASSWORD_STORE_DIR%\%~2.gpg" %tmpfile%
del /Q %tmpfile%
goto :eof
)
IF EXIST "%PASSWORD_STORE_DIR%\%~1.gpg" (
- pass view "%~1"
+ pass show "%~1"
goto :eof
)