blob: 1344be1059347362e25ab2efa220217ad25b1238 (
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
|
#!/bin/bash
target_filename () {
if [ "${1#*.}" = "md" ]; then
echo "output/$(echo "${1%.md}.html" | cut -sd / -f 2-)"
else
echo "output/$(echo "$1" | cut -sd / -f 2-)"
fi
}
get_subpages_basedir() {
filename=$(basename "$1")
if [ "$filename" = "index.md" ]; then
dirname "$1"
else
echo "${1%.md}"
fi
}
get_subpages() {
basedir=$(get_subpages_basedir "$1")
child_pages=()
if [ -d "$basedir" ]; then
mapfile -d $'\0' child_pages_1 < <(find $basedir/ \
-type f \
-name "*.md" ! -name "index.md" \
-maxdepth 1 \
-print0)
mapfile -d $'\0' child_pages_2 < <(find $basedir/ \
-type f \
-name "index.md" \
-mindepth 2 \
-maxdepth 2 \
-print0)
child_pages=("${child_pages_1[@]}" "${child_pages_2[@]}")
fi
if [ ${#child_pages[@]} -ne 0 ]; then
echo -e "\033[0;90m[////////]\033[0m Child pages:"
for file in "${child_pages[@]}"; do
echo -e "\033[0;90m[////////]\033[0m - $file"
done
fi
}
handle () {
target=$(target_filename "$1")
mkdir -p $(dirname "$target")
if [ "${1#*.}" = "md" ]; then
echo -e "\033[0;32m[COMPILE ]\033[0m $1 -> $target"
subpages_meta=$(mktemp)
# $(get_subpages "$1") > "$subpages_meta"
get_subpages "$1"
pandoc "$1" \
-f markdown \
-t html5 \
--template templates/base.html \
-o "$target" \
--metadata-file metadata/metadata.yaml \
--metadata-file "$subpages_meta"
rm "$subpages_meta"
else
echo -e "\033[0;32m[COPY ]\033[0m $1 -> $target"
cp "$1" "$target"
fi
}
if [ -z "$1" ]; then
find content/ \
-type f \
| while read file
do
handle "$file"
done
elif [ "$1" = "all_md" ]; then
find content/ \
-type f \
-name "*.md" \
| while read file
do
handle "$file"
done
elif [ "$1" = "single" ]; then
if [ -z "$2" ]; then
echo -e "\033[0;31m[ERROR ]\033[0m \"single\" operation requires file argument"
else
handle "$2"
fi
elif [ "$1" = "delete" ]; then
if [ -z "$2" ]; then
echo -e "\033[0;31m[ERROR ]\033[0m \"delete\" operation requires file argument"
else
TARGET=$(target_filename "$2")
echo -e "\033[0;32m[DELETE ]\033[0m $2 -> $TARGET"
rm -rf $TARGET
fi
else
echo -e "\033[0;31m[ERROR ]\033[0m Unknown operation: \"$1\""
fi
|