#!/usr/bin/env bash # # Install the Master Password CLI tool. set -e cd "${BASH_SOURCE%/*}" source bashlib inf "This will install the mpw tool." # Try to guess then ask for the bin dir to install to. IFS=: read -a paths <<< "$PATH" if inArray ~/bin "${paths[@]}"; then bindir=~/bin elif inArray ~/.bin "${paths[@]}"; then bindir=~/.bin elif inArray /usr/local/bin "${paths[@]}"; then bindir=/usr/local/bin else bindir=~/bin fi bindir=$(ask -d "$bindir" "What bin directory should I install to?") [[ -d "$bindir" ]] || mkdir "$bindir" || ftl 'Cannot create missing bin directory: %s' "$bindir" || exit [[ -w "$bindir" ]] || ftl 'Cannot write to bin directory: %s' "$bindir" || exit # Try to guess then ask for the share dir to install to. sharedir=$(cd -P "$bindir/.."; [[ $bindir = */.bin ]] && printf '%s/.share' "$PWD" || printf '%s/share' "$PWD") sharedir=$(ask -d "$sharedir" "What share directory should I install to?") [[ -d "$sharedir" ]] || mkdir "$sharedir" || ftl 'Cannot create missing share directory: %s' "$sharedir" || exit [[ -w "$sharedir" ]] || ftl 'Cannot write to share directory: %s' "$sharedir" || exit # Install Master Password. sharepath=$sharedir/masterpassword mkdir -p "$sharepath" cp -a "masterpassword-cli-"*".jar" bashlib mpw "$sharepath" ex -c "%s~%SHAREPATH%~$sharepath~g|x" "$sharepath/mpw" ln -sf "$sharepath/mpw" "$bindir/mpw" chmod +x "$sharepath/mpw" [[ ! -e "$bindir/bashlib" ]] && ln -s "$sharepath/bashlib" "$bindir/bashlib" ||: # Convenience bash function. inf "Installation successful!" echo inf "To improve usability, you can install an mpw function in your bash shell." inf "This function adds the following features:" inf " - Ask the Master Password once, remember in the shell." inf " - Automatically put the password in the clipboard (some platforms)." echo inf "To do this you need the following function in ~/.bashrc:\n%s" "$(> ~/.bashrc inf "Done! Don't forget to run '%s' to apply the changes!" "source ~/.bashrc" fi echo inf "To begin using Master Password, type: mpw [site name]"