-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsource.sh
executable file
·51 lines (42 loc) · 1.42 KB
/
source.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
#!/bin/bash
#
# Created: Wed 13 Feb 2013 05:31:38 AM CET
# Modified: Wed 13 Feb 2013 06:44:10 AM CET
# Author: Bert Van Vreckem <[email protected]>
#
# source.sh -- genereer een LaTeX-document met alle java broncode
# gevonden in de source/ directory
# Directory met broncodebestanden
src=source
# Gewenste niveau van hoofding voor packages
# Typisch section of subsection
sectionlvl=section
# Output
out=source.tex
if [[ ! -d ${src} ]]; then
cat << EOF
Directory ./${src} niet gevonden. Maak een link aan naar je Java broncode,
met
ln /path/to/java/src/ ./${src}
en vergeet niet deze directory te negeren in je versiebeheersysteem.
EOF
fi
if [[ -f ${out} ]]; then
rm ${out}
echo "% Java Broncode, gegenereerd door ${0}" > ${out}
echo "% Waarschuwing: manuele wijzigingen worden overschreven!" >> ${out}
fi
# Alle bestanden en directories in de source directory oplijsten
files=$(find ${src}/ -mindepth 1 -printf '%p\t%d\n' | sort -n -k2 | cut -f 1)
for f in ${files}; do
# Genereer klasse- of packagenaam uit directory/filenaam
name=$(echo ${f##${src}/} | sed 's/\.java$//' | sed 's/\//./g')
# Java-bestand => \codefragment
if [[ "${f}" =~ \.java$ ]]; then
echo "\\codefragment{${f}}{${name}}" >> ${out}
# Directory is een package => hoofding invoegen
elif [[ -d "${f}" ]]; then
echo -e "\n\\${sectionlvl}{Package ${name}}" >> ${out}
fi
# Andere bestanden (vb. .properties) worden genegeerd!
done