This commit is contained in:
bernd 2021-05-03 22:52:46 +02:00
commit bc858aba61

View file

@ -24,7 +24,7 @@ RUBBER_BIN=$(which rubber 2>/dev/null || echo "rubber")
EXECUTABLES_TO_CHECK="$BC_BIN $TR_BIN $SED_BIN $CUT_BIN $TPUT_BIN $DATE_BIN $PDFLATEX_BIN $RUBBER_BIN"
GENPDF=""
if [ -x $RUBBER_BIN ]; then
if [ -x "$RUBBER_BIN" ]; then
GENPDF="$RUBBER_BIN -d "
else
GENPDF="$PDFLATEX_BIN -halt-on-error "
@ -58,11 +58,11 @@ LFDNR=""
NUMBER_OF_COLORS=$($TPUT_BIN colors)
COLORED_OUTPUT=0
RED="\\033[1;31m"
GREEN="\\033[1;32m"
YELLOW="\\033[1;33m"
BLUE="\\033[1;34m"
NORMAL="\\033[0;39m"
RED="$(tput bold)$(tput setaf 1)"
GREEN="$(tput bold)$(tput setaf 2)"
YELLOW="$(tput bold)$(tput setaf 3)"
BLUE="$(tput bold)$(tput setaf 4)"
NORMAL="$(tput bold)$(tput sgr0)"
# Diverse Checks
@ -70,7 +70,7 @@ NORMAL="\\033[0;39m"
check_readable() {
printf "\n[+] Datei \"$1\" ist lesbar ..."
printf "\n[+] Datei %s ist lesbar ..." "$1"
if [ -f "$1" ] && [ -r "$1" ]
then
print_ok
@ -82,14 +82,14 @@ check_readable() {
check_binaries() {
local program=""
local binaries=$*
program=""
binaries=$*
for program in $binaries; do
printf "\n[+] Suche nach Programm $program ..."
printf "\n[+] Suche nach Programm %s ..." "$program"
if [ ! -x "$program" ]; then
print_failed
printf "\n[-] Das Programm \"$program\" wird benötigt, aber nicht gefunden."
printf "\n[-] Das Programm \"%s\" wird benötigt, aber nicht gefunden." "$program"
quit 3
else
print_ok
@ -99,7 +99,7 @@ check_binaries() {
is_option() (
local line="$*"
line="$*"
if [ "${line#*=}" != "$line" ]; then
return 0
@ -114,7 +114,7 @@ is_option() (
print_failed() {
if [ "$COLORED_OUTPUT" -eq 1 ]; then
printf "$RED Failed$NORMAL"
printf "%s Failed%s" "$RED" "$NORMAL"
else
printf " Failed"
fi
@ -123,7 +123,7 @@ print_failed() {
print_ok() {
if [ "$COLORED_OUTPUT" -eq 1 ]; then
printf "$GREEN OK$NORMAL"
printf "%s OK%s" "$GREEN" "$NORMAL"
else
printf " OK"
fi
@ -131,12 +131,12 @@ print_ok() {
print_warn() {
local msg=$*
msg=$*
if [ "$COLORED_OUTPUT" -eq 1 ]; then
echo -e "$YELLOW[-]$NORMAL $msg"
echo "$YELLOW[-]$NORMAL $msg"
else
echo -e "[-] $msg"
echo "[-] $msg"
fi
}
@ -146,7 +146,7 @@ print_warn() {
trim_line() {
set -f
set -- $*
set -- "$*"
LINE_BUFFER=$(printf '%s' "$*")
set +f
}
@ -154,7 +154,7 @@ trim_line() {
trim_key() {
set -f
set -- $*
set -- "$*"
KEY_BUFFER=$(printf '%s' "$*")
set +f
}
@ -162,7 +162,7 @@ trim_key() {
trim_value() {
set -f
set -- $*
set -- "$*"
VALUE_BUFFER=$(printf '%s' "$*")
set +f
}
@ -170,7 +170,7 @@ trim_value() {
reset_values() {
echo -e "\n[+] Initialisiere Felder für Rechnung neu."
printf "\n[+] Initialisiere Felder für Rechnung neu."
LINE_BUFFER=""
KEY_BUFFER=""
VALUE_BUFFER=""
@ -187,11 +187,11 @@ reset_values() {
set_value() {
local key=$(echo "$*" | $CUT_BIN -d "=" -f1)
local value=$(echo "$*" | $CUT_BIN -d "=" -f2)
key=$(echo "$*" | $CUT_BIN -d "=" -f1)
value=$(echo "$*" | $CUT_BIN -d "=" -f2)
trim_key $key
trim_value $value
trim_key "$key"
trim_value "$value"
case $KEY_BUFFER in
kunde) KUNDE="$VALUE_BUFFER";;
adresse) ADRESSE="$VALUE_BUFFER";;
@ -207,20 +207,20 @@ set_value() {
make_invoice() {
local dead_days="14"
if [ $(date +%u) -gt 5 ]; then
dead_days="14"
if [ "$(date +%u)" -gt 5 ]; then
dead_days="16"
fi
local month_ascii=$(date '+%B')
local inv_day=$(date '+%j')
local inv_date=$(date '+%Y%m%d')
local inv_dead=$(date -d "+${dead_days}days" '+%d.\\\\,%m.\\\\,%Y')
local rechnungsnummer="$inv_date--$LFDNR"
local subject="Rechnung zu $SHORT"
local filename="$(date '+%Y%m%d')_Rechnung_$(echo "$month_ascii")_$(echo "$KUNDE" | $TR_BIN " " "_").ltx"
local buffer="$KUNDE; $ADRESSE"
local anschrift="$(echo "$buffer" | sed 's/; /\\\\\\\\\\\\\\ /g')"
month_ascii=$(date '+%B')
inv_day=$(date '+%j')
inv_date=$(date '+%Y%m%d')
inv_dead=$(date -d "+${dead_days}days" '+%d.\\\\,%m.\\\\,%Y')
rechnungsnummer="$inv_date--$LFDNR"
subject="Rechnung zu $SHORT"
filename="$(date '+%Y%m%d')_Rechnung_$(echo "$month_ascii")_$(echo "$KUNDE" | $TR_BIN " " "_").ltx"
buffer="$KUNDE; $ADRESSE"
anschrift="$(echo "$buffer" | sed 's/; /\\\\\\\\\\\\\\ /g')"
echo "[+] Erstelle Rechnung: $filename"
echo -n "s!#SUBJECT#!" >$SEDFILE; echo "$subject!" >>$SEDFILE
@ -231,11 +231,11 @@ make_invoice() {
echo -n "s!#POSITION#!" >>$SEDFILE; echo "$POSITION!" >>$SEDFILE
echo -n "s!#BETRAG#!" >>$SEDFILE; echo "$BETRAG!" >>$SEDFILE
echo -n "s!#DEADLINE#!" >>$SEDFILE; echo "$inv_dead!" >>$SEDFILE
cp $TEMPLATEFILE $filename
$SED_BIN -i -f $SEDFILE $filename
$GENPDF $filename
if [ -x $RUBBER_BIN ]; then
$RUBBER_BIN --clean $filename
cp "$TEMPLATEFILE" "$filename"
$SED_BIN -i -f "$SEDFILE" "$filename"
$GENPDF "$filename"
if [ -x "$RUBBER_BIN" ]; then
"$RUBBER_BIN" --clean "$filename"
fi
if [ $? -eq 0 ]; then
@ -247,8 +247,8 @@ make_invoice() {
proced_ini_line() {
local line=$*
local first=$(echo "$line" | cut -c1-1)
line=$*
first=$(echo "$line" | cut -c1-1)
# leerzeilen ignorieren
if [ "$line" = "" ]; then
@ -273,10 +273,10 @@ proced_ini_line() {
# alle anderen zeilen
else
is_option $line
is_option "$line"
if [ $? -eq 0 ]
then
set_value $line
set_value "$line"
else
print_warn "Invalid syntax: $line"
fi
@ -284,9 +284,10 @@ proced_ini_line() {
}
quit() {
printf "\n$BLUE"
printf "[-] Exit$NORMAL\n"
exit $1
printf "\n"
print "$BLUE"
printf "[-] Exit%s\n" "$NORMAL"
exit 1
}
@ -297,24 +298,24 @@ echo "= Rechnung v$PROGRAMM_VERSION ="
echo "==================="
# Verschiedene Basic Checks
if [ -n $NUMBER_OF_COLORS ] && [ "$NUMBER_OF_COLORS" -ge 8 ]; then
if [ -n "$NUMBER_OF_COLORS" ] && [ "$NUMBER_OF_COLORS" -ge 8 ]; then
COLORED_OUTPUT=1
fi
if [ $(id -u) -eq 0 ]; then
if [ "$(id -u)" -eq 0 ]; then
echo "$0: Das Skript darf nicht als Root ausgeführt werden."
exit 1
fi
check_binaries $EXECUTABLES_TO_CHECK
check_readable $RECHNUNGSFILE
check_readable $TEMPLATEFILE
check_binaries "$EXECUTABLES_TO_CHECK"
check_readable "$RECHNUNGSFILE"
check_readable "$TEMPLATEFILE"
printf "\n"
# Kundendatei einlesen und rechnungen erstellen
while IFS= read -r rawline
do
trim_line $rawline
proced_ini_line $LINE_BUFFER
done <$RECHNUNGSFILE
trim_line "$rawline"
proced_ini_line "$LINE_BUFFER"
done < "$RECHNUNGSFILE"