1
1
#! /bin/bash
2
2
3
- generate_prefix () {
4
- local depth=$( echo " $1 " | grep -o " /" | wc -l)
5
- local prefix=" "
6
- for (( i= 2 ; i< depth; i++ )) ; do
7
- prefix=" ../$prefix "
8
- done
9
- echo " $prefix "
10
- }
3
+ HEADER=" | "
4
+ TOP_DIR=" $( pwd) "
11
5
12
6
clear_header () {
13
- local file=" $1 "
14
- if grep -q " contact\.html" " $file " ; then
15
- sed -i ' 1,/contact\.html/d' " $file "
16
- else
17
- echo " contact.html not found in $file . No lines cleared."
18
- fi
7
+ file=" $1 "
8
+ if grep -q ' ^#+OPTIONS: toc:nil num:nil' " $file " ; then
9
+ sed -i ' 0,/^#+OPTIONS: toc:nil num:nil/d' " $file "
10
+ fi
19
11
}
20
12
21
13
declare -A EXCEPTIONS=(
22
- [" index.html" ]=" About Me"
23
- [" cv" ]=" [[file:${prefix} cv/rossMikulskisResume.pdf][CV]]"
24
- [" research" ]=" [[file:${prefix} research/][Research]]"
14
+ [" cv" ]=" [[file:cv/rossMikulskisResume.pdf][CV]]"
25
15
)
26
16
27
17
capitalize () {
28
- local input=" $1 "
18
+ input=" $1 "
29
19
echo " $input " | sed -E ' s/(^|_)([a-z])/\U\2/g'
30
20
}
31
21
32
- add_header () {
33
- local file=" $1 "
34
- local prefix=$( generate_prefix " $file " )
35
- local dir=$( dirname " $file " )
36
-
37
- local HEADER=" #+OPTIONS: toc:nil num:nil\n"
38
-
39
- for item in " $dir " /* ; do
40
- if [ -d " $item " ]; then
41
- local dir_name=$( basename " $item " )
42
- if [[ -n " ${EXCEPTIONS[$dir_name]} " ]]; then
43
- HEADER=" $HEADER ${EXCEPTIONS[$dir_name]} |"
44
- else
45
- local dir_item=$( capitalize " $dir_name " )
46
- HEADER=" $HEADER \
47
- [[file:${prefix}${dir_name} /index.html][$dir_item ]] |"
48
- fi
49
- elif [ -f " $item " ] && [[ " $item " == * .org ]]; then
50
- local file_name=$( basename " $item " .org)
51
- local html_name=" ${file_name} .html"
52
- if [[ -n " ${EXCEPTIONS[$html_name]} " ]]; then
53
- HEADER=" $HEADER \
54
- [[file:${prefix}${html_name} ][${EXCEPTIONS[$html_name]} ]] |"
55
- else
56
- local file_item=$( capitalize " $file_name " )
57
- HEADER=" $HEADER [[file:${prefix}${html_name} ][$file_item ]] |"
58
- fi
22
+ generate_header () {
23
+ dir=" $1 "
24
+ is_top=" $2 "
25
+ header=" $HEADER "
26
+
27
+ if [[ " $is_top " -eq 0 ]]; then
28
+ header+=" [[file:../index.html][../]] | "
29
+ fi
30
+
31
+ for file in $( find " $dir " -mindepth 1 -maxdepth 1 -type f -name " *.org" ! -name " .*" | sort) ; do
32
+ filename=$( basename " $file " .org)
33
+ if [[ -n " ${EXCEPTIONS[$filename]} " ]]; then
34
+ header+=" ${EXCEPTIONS[$filename]} | "
35
+ else
36
+ filename_capitalized=$( capitalize " $filename " )
37
+ header+=" [[file:$filename .html][$filename_capitalized ]] | "
59
38
fi
60
39
done
61
40
62
- if ! grep -q " About Me" " $file " ; then
63
- echo -e " $HEADER \n$( cat " $file " ) " > " $file "
64
- fi
41
+ for subdir in $( find " $dir " -mindepth 1 -maxdepth 1 -type d ! -name " .*" | sort) ; do
42
+ subname=$( basename " $subdir " )
43
+ if [[ -n " ${EXCEPTIONS[$subname]} " ]]; then
44
+ header+=" ${EXCEPTIONS[$subname]} | "
45
+ else
46
+ subname_capitalized=$( capitalize " $subname " )
47
+ header+=" [[file:$subname /index.html][$subname_capitalized /]] | "
48
+ fi
49
+ done
50
+
51
+ echo " $header \n#+OPTIONS: toc:nil num:nil"
52
+ }
53
+
54
+ add_header () {
55
+ dir=" $1 "
56
+ is_top=" $2 "
57
+ header=$( generate_header " $dir " " $is_top " )
58
+
59
+ for file in " $dir " /* .org; do
60
+ [ -e " $file " ] || continue
61
+ echo -e " $header \n$( cat " $file " ) " > " $file "
62
+ done
65
63
}
66
64
67
65
export_html () {
68
- local org_file=" $1 "
66
+ org_file=" $1 "
69
67
emacs --batch " $org_file " \
70
68
--eval " (progn
71
69
(require 'org)
@@ -74,20 +72,30 @@ export_html() {
74
72
}
75
73
76
74
process_files () {
77
- local dir=" $1 "
78
- local operation=" $2 "
75
+ dir=" $1 "
76
+ operation=" $2 "
77
+ is_top=" $3 "
79
78
80
- for file in " $dir " /* .org; do
81
- [ -e " $file " ] || continue
82
- case " $operation " in
83
- clear_header) clear_header " $file " ;;
84
- add_header) add_header " $file " ;;
85
- html_export) export_html " $file " ;;
86
- esac
87
- done
79
+ case " $operation " in
80
+ clear_header)
81
+ for file in " $dir " /* .org; do
82
+ [ -e " $file " ] || continue
83
+ clear_header " $file "
84
+ done
85
+ ;;
86
+ add_header)
87
+ add_header " $dir " " $is_top "
88
+ ;;
89
+ html_export)
90
+ for file in " $dir " /* .org; do
91
+ [ -e " $file " ] || continue
92
+ export_html " $file "
93
+ done
94
+ ;;
95
+ esac
88
96
89
97
for subdir in " $dir " /* /; do
90
- [ -d " $subdir " ] && process_files " $subdir " " $operation "
98
+ [ -d " $subdir " ] && process_files " $subdir " " $operation " 0
91
99
done
92
100
}
93
101
@@ -97,6 +105,6 @@ if [[ $# -ne 1 ]]; then
97
105
fi
98
106
99
107
case " $1 " in
100
- clear_header|add_header|html_export) process_files " ." " $1 " ;;
108
+ clear_header|add_header|html_export) process_files " ." " $1 " 1 ;;
101
109
* ) echo " Invalid argument. Use clear_header, add_header, or html_export." ; exit 1 ;;
102
110
esac
0 commit comments