#!/bin/sh set -e rage_dir=~/.rage rage_id_file="$(awk -F= '/^identity/{print $NF}' ${rage_dir}/config)" rage_id_recip="$(awk -F= '/^identity/{print $NF ".pub"}' ${rage_dir}/config)" cmd=$1 list() { find $rage_dir -type f -name \*.age } if [ -z ${cmd} ]; then list exit fi case $cmd in ls) list ;; en) printf 'Password: ' stty -echo read pass stty echo echo "" printf 'Location: ' read loc echo "" mkdir -p "$(dirname ~/.rage/${loc})" echo "$pass" | age -r "$(cat ${rage_id_file}.pub)" > ~/.rage/${loc}.age ;; de) if [ -f $2 ]; then age -i $rage_id_file -d $2 else F=$(list | grep $2) age -i $rage_id_file -d "${F}" fi ;; otp) if [ -f $2 ]; then age -i $rage_id_file -d $2 | oathtool -b --totp - else F=$(list | grep $2) age -i $rage_id_file -d "${F}" | oathtool -b --totp - fi ;; default) list esac