about summary refs log tree commit diff stats
path: root/ayu
blob: c840c126da22756166faf3bc33b4ae99795487b3 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#!/bin/sh

# Path to the program's directory
ayu_dir="$HOME/.config/ayu"

# Path to the age(1) keys
ayu_key="$ayu_dir/age.key"
ayu_pub="$ayu_dir/age.pub"

# Path to the password store
ayu_store="$HOME/.ayu"

test -d $ayu_dir || mkdir -p $ayu_dir
test -d $ayu_store || mkdir -p $ayu_store


if ! [ -f $ayu_key ];then
	printf "First generate your own age(1) key with age-keygen(1) and place it as $ayu_key. \n"
	printf "e.g: age-keygen -o $ayu_key \n"
	exit 1
fi

cd $ayu_store

edit() {
	age --decrypt --identity=$ayu_key --output=${1%%.age} ${1%%.age}.age
	vi ${1%%.age}
	age --encrypt -R $ayu_pub --output=${1%%.age}.age ${1%%.age}
	rm ${1%%.age}
}

list() {
	tree $ayu_store
}

new() {
	test -d "$1" && usage && exit

	tmpfile="$(mktemp)"
	vi "$tmpfile"

	mkdir -p "$(dirname "$1")"
	age --encrypt -R $ayu_pub -o $tmpfile.age $tmpfile

	mv $tmpfile.age "${1%%.age}".age
	rm $tmpfile
}
remove() {
	test -d "$1" && usage && exit
	rm -r "$(dirname "$1")"
}
usage() {
	printf "$0 [ edit | list | new | rm | usage | view ] \n"
}

view() {
	if [ -f "${1%%.age}".age ];then
		age --decrypt --identity=$ayu_key "${1%%.age}".age
	elif [ -d "${1:-.}" ];then
		tree "${1:-.}"
	else
		usage
		exit
	fi
}
case $1 in
	edit)
		edit $2
		;;
	list)
		list
		;;
	new)
		new $2
		;;
	rm)
		remove $2
		;;
	usage)
		usage
		;;
	view)
		view $2
		;;
	*)
		list
		;;
esac