-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathemacs2ram.sh
More file actions
executable file
·55 lines (48 loc) · 1.07 KB
/
emacs2ram.sh
File metadata and controls
executable file
·55 lines (48 loc) · 1.07 KB
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
#!/bin/bash
if [ -z "$1" ]
then
echo "Usage:"
echo " emacs2ram start"
echo " emacs2ram restore"
exit 1
fi
if [ "$1" == "start" ];
then
backup=emacs.d-backup
link=.emacs.d
volatile=/tmp/.emacs.d-$USER
IFS=
set -efu
cd ~/
if [ ! -r $volatile ]
then
mkdir -m0700 $volatile
fi
# link -> volatie does not exist
if [ "$(readlink $link)" != "$volatile" ]
then
# backup project at first
mv $link $backup
# create the link
ln -s $volatile $link
fi
if [ -e $link/.unpacked ]
then
echo "Sync .emacs.d from memory to backup ..."
rsync -avq --delete --exclude .unpacked ./$link/ ./$backup/
echo "DONE!"
else
echo "Sync .emacs.d from disk to memory ..."
rsync -avq ./$backup/ ./$link/
touch $link/.unpacked
echo "DONE!"
fi
else
echo "Moving .emacs.d back to disk ..."
backup=$2-backup
link=$2
volatile=/tmp/$2-$USER
cd ~/projs
rm $link && mv $backup $link && rm -rf $volatile
echo "DONE!"
fi