forked from fritteli/gentoo-overlay
-
Notifications
You must be signed in to change notification settings - Fork 0
/
.gitlab-pages-generator.sh
executable file
·104 lines (90 loc) · 1.94 KB
/
.gitlab-pages-generator.sh
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
#!/bin/sh
ROOT=$(realpath "${1:-.}")
TARGET=$(realpath "${2:-.public}")
declare -a PARTS=()
function createDir() {
mkdir -p "${1}"
}
function createDirInTarget() {
local dirpart="${1}"
local destinationdirectory=${dirpart/${ROOT}/${TARGET}}
echo $destinationdirectory
}
function writeHTMLHeader() {
local targetfile="${1}"
local currentdir="${2}"
cat <<EOHEAD > "${targetfile}"
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>gentoo-overlay/${currentdir}</title>
</head>
<body>
<h1>gentoo-overlay/${currentdir}</h1>
<ul>
EOHEAD
}
function writeHTMLFooter() {
local targetfile="${1}"
cat <<EOFOOT >> "${targetfile}"
</ul>
</body>
</html>
EOFOOT
}
function writeHTMLFileentry() {
local targetfile="${1}"
local filename="${2}"
cat <<EOFILE >> "${targetfile}"
<li><a href="${filename}">${filename}</a></li>
EOFILE
}
function pushPart() {
local part="${1}"
PARTS=("${PARTS[@]}" "${part}")
}
function popPart() {
local index=$(expr ${#PARTS[@]} - 1)
unset PARTS[${index}]
}
function renderParts() {
local IFS="/"
echo "${PARTS[*]}"
}
function renderTargetPath() {
local parts=$(renderParts)
echo "${TARGET}${parts:+/}${parts}"
}
function renderTargetFilename() {
local targetPath=$(renderTargetPath)
echo "${targetPath}/index.html"
}
function processDir() {
local dir="${1}"
cd "${dir}"
local realpath=$(realpath .)
local files=$(ls)
local parts=$(renderParts)
local targetPath=$(renderTargetPath)
local targetFilename=$(renderTargetFilename)
mkdir -p "${targetPath}"
writeHTMLHeader "${targetFilename}" "${parts}"
writeHTMLFileentry "${targetFilename}" ".."
for f in ${files} ; do
if [ -f "${f}" ] ;then
cp "${f}" "${targetPath}"
writeHTMLFileentry "${targetFilename}" "${f}"
elif [ -d "${f}" ] ; then
writeHTMLFileentry "${targetFilename}" "${f}/"
pushPart "${f}"
processDir "${f}"
popPart
else
echo "Unknown: ${f}"
fi
done
writeHTMLFooter "${targetFilename}"
cd ..
}
processDir "${ROOT}"