5
0
Fork 0
hedgedoc2pdf/pandocPipeline/pandocPipeline.sh
2023-06-13 12:29:34 +02:00

97 lines
2.9 KiB
Bash
Executable file

#! /bin/bash
version=1.0
editor=$USER
title=
file=
ending=tex
toc=false
# path to this script
script=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd)
picture=$script/Logo.png
Help() {
echo Tool to convert file from markdown to another format
echo Usage: pandocPipeline [OPTION] [COMMAND]
echo -h, --help show this help screen
echo -f, --file specify filename without extension
echo -e, --ending spefify target file format
echo -u, --user=$editor enter name of file editor set between "" \(only for target format pdf\)
echo -t, --title enter title of document set between "" \(only for target format pdf\)
echo -c, --toc prints a table of content at the start of the document
echo -p, --picture changes the default picture to a specified picture relative to current path
echo Pipeline is optimized for target format pdf and docx but works with others as well
echo Possible fileformats see: https://pandoc.org/diagram.svgz?v=20230203095535
echo Examples:
echo md -\> pdf : pandocPipeline -u "Dokumentbearbeiter" -t "Dokumententitel" -f dateiname -e pdf
echo md -\> docx : pandocPipeline -f dateiname -e docx
}
Errorfile() {
echo No file was given
echo Please add a filename to your command
echo Try 'pandocPipeline --help' for more information
}
Open() {
xdg-open $file.$ending
exit
}
POSITIONAL_ARGS=()
while [[ $# -gt 0 ]]; do
case $1 in
-u|--user)
editor="$2"
shift 2;;
-t|--title)
title="$2"
shift 2;;
-f|--file)
file="$2"
shift 2;;
-e|--ending)
ending="$2"
shift 2;;
-v|--version)
echo pandocPipeline $version
exit;;
-p|--picture)
picture="$2"
shift 2;;
-c|--toc)
toc=true
shift;;
-h|--help)
Help
exit;;
--)
break;
esac
done
if [[ -z "$file" ]]; then
Errorfile
exit
elif [[ "$ending" == "pdf" ]]; then
header=$script/header.md
sedfile=$script/body.sed
sed -i 's,Editor:.*,Editor: '"$editor"' \\\\,' $header
sed -i 's,Title:.*,Title: '"$title"',' $header
sed -i 's,textwidth]{.*,textwidth]{'"$picture"'}},' $header
if "$toc"; then
cat $file.md $header | sed -E -f $sedfile| pandoc --filter pandoc-latex-environment --number-sections --toc -i - -o $file.pdf
else
cat $file.md $header | sed -E -f $sedfile| pandoc --filter pandoc-latex-environment --number-sections -i - -o $file.pdf
fi
Open
elif [[ "$ending" == "docx" ]]; then
refdoc=$script/custom-reference.docx
pandoc $file.md --reference-doc=$refdoc -f markdown -t $ending -s -o $file.$ending
Open
else
pandoc $file.md -f markdown -t $ending -s -o $file.$ending
Open
fi