forked from berhsi/rechnung
installation von rechnung.sty hinzugefügt, ausgaben überarbeitet
This commit is contained in:
parent
dbf8c5db6d
commit
4da2b81005
219
rechnung.sh
219
rechnung.sh
|
@ -20,8 +20,12 @@ CUT_BIN=$(which cut 2>/dev/null || echo "cut")
|
||||||
DATE_BIN=$(which date 2>/dev/null || echo "date")
|
DATE_BIN=$(which date 2>/dev/null || echo "date")
|
||||||
TPUT_BIN=$(which tput 2>/dev/null || echo "tput")
|
TPUT_BIN=$(which tput 2>/dev/null || echo "tput")
|
||||||
PDFLATEX_BIN=$(which pdflatex 2>/dev/null || echo "pdflatex")
|
PDFLATEX_BIN=$(which pdflatex 2>/dev/null || echo "pdflatex")
|
||||||
|
GIT_BIN=$(which git 2>/dev/null || echo "git")
|
||||||
|
LATEX_BIN=$(which latex 2>/dev/null || echo "latex")
|
||||||
RUBBER_BIN=$(which rubber 2>/dev/null || echo "rubber")
|
RUBBER_BIN=$(which rubber 2>/dev/null || echo "rubber")
|
||||||
# Nicht auf rubber prüfen; Programm ist optional
|
# Nicht auf rubber prüfen; Programm ist optional
|
||||||
|
# Nicht auf git prüfen; wird nur benötigt, wenn rechnung.sty nicht existiert.
|
||||||
|
# Nicht auf latex prüfen; wird nur benötigt, wenn rechnung.sty nicht texistiert.
|
||||||
EXECUTABLES_TO_CHECK="$BC_BIN $TR_BIN $SED_BIN $CUT_BIN $TPUT_BIN $DATE_BIN $PDFLATEX_BIN"
|
EXECUTABLES_TO_CHECK="$BC_BIN $TR_BIN $SED_BIN $CUT_BIN $TPUT_BIN $DATE_BIN $PDFLATEX_BIN"
|
||||||
|
|
||||||
GENPDF=""
|
GENPDF=""
|
||||||
|
@ -38,6 +42,9 @@ fi
|
||||||
PROGRAMM_NAME=$0
|
PROGRAMM_NAME=$0
|
||||||
PROGRAMM_VERSION="0.0.1"
|
PROGRAMM_VERSION="0.0.1"
|
||||||
#VERBOSITY=0
|
#VERBOSITY=0
|
||||||
|
STY_HOME="$HOME/texmf/tex/latex"
|
||||||
|
STY_RECHNUNG="rechnung.sty"
|
||||||
|
STY_URL="https://github.com/tomka/rechnung"
|
||||||
RECHNUNGSFILE="rechnung.ini"
|
RECHNUNGSFILE="rechnung.ini"
|
||||||
TEMPLATEFILE="template.ltx"
|
TEMPLATEFILE="template.ltx"
|
||||||
SEDFILE="sed.txt"
|
SEDFILE="sed.txt"
|
||||||
|
@ -66,14 +73,89 @@ BLUE="$(tput bold)$(tput setaf 4)"
|
||||||
NORMAL="$(tput bold)$(tput sgr0)"
|
NORMAL="$(tput bold)$(tput sgr0)"
|
||||||
|
|
||||||
|
|
||||||
|
# Ausgabefunktionen für Terminal
|
||||||
|
# ------------------------------
|
||||||
|
|
||||||
|
print_start() {
|
||||||
|
|
||||||
|
msg=$*
|
||||||
|
|
||||||
|
if [ "$COLORED_OUTPUT" -eq 1 ]; then
|
||||||
|
printf "%s[+]%s %s" "$GREEN" "$NORMAL" "$msg"
|
||||||
|
else
|
||||||
|
printf " Failed"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
print_failed() {
|
||||||
|
|
||||||
|
if [ "$COLORED_OUTPUT" -eq 1 ]; then
|
||||||
|
printf "%s Failed%s\n" "$RED" "$NORMAL"
|
||||||
|
else
|
||||||
|
printf " Failed\n"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
print_ok() {
|
||||||
|
|
||||||
|
if [ "$COLORED_OUTPUT" -eq 1 ]; then
|
||||||
|
printf "%s OK%s\n" "$GREEN" "$NORMAL"
|
||||||
|
else
|
||||||
|
printf " OK\n"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
print_deko() {
|
||||||
|
|
||||||
|
msg=$*
|
||||||
|
|
||||||
|
if [ "$COLORED_OUTPUT" -eq 1 ]; then
|
||||||
|
echo "${BLUE}${msg}${NORMAL}"
|
||||||
|
else
|
||||||
|
echo "$msg"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
print_info() {
|
||||||
|
|
||||||
|
msg=$*
|
||||||
|
|
||||||
|
if [ "$COLORED_OUTPUT" -eq 1 ]; then
|
||||||
|
echo "${GREEN}[+]$NORMAL $msg"
|
||||||
|
else
|
||||||
|
echo "[-] $msg"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
print_warn() {
|
||||||
|
|
||||||
|
msg=$*
|
||||||
|
|
||||||
|
if [ "$COLORED_OUTPUT" -eq 1 ]; then
|
||||||
|
echo "${YELLOW}[-]$NORMAL $msg"
|
||||||
|
else
|
||||||
|
echo "[-] $msg"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
print_error() {
|
||||||
|
|
||||||
|
msg=$*
|
||||||
|
|
||||||
|
if [ "$COLORED_OUTPUT" -eq 1 ]; then
|
||||||
|
echo "${RED}[-]$NORMAL $msg"
|
||||||
|
else
|
||||||
|
echo "[-] $msg"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
# Diverse Checks
|
# Diverse Checks
|
||||||
# --------------
|
# --------------
|
||||||
|
|
||||||
check_readable() {
|
check_readable() {
|
||||||
|
|
||||||
printf "\n[+] Datei %s ist lesbar ..." "$1"
|
print_start "Datei $1 ist lesbar ..."
|
||||||
if [ -f "$1" ] && [ -r "$1" ]
|
if [ -f "$1" ] && [ -r "$1" ]; then
|
||||||
then
|
|
||||||
print_ok
|
print_ok
|
||||||
else
|
else
|
||||||
print_failed
|
print_failed
|
||||||
|
@ -81,16 +163,29 @@ check_readable() {
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
check_sty() (
|
||||||
|
|
||||||
|
print_start "Suche nach $STY_RECHNUNG ..."
|
||||||
|
rechnung=$(find "$STY_HOME" -type f -name "$STY_RECHNUNG")
|
||||||
|
if [ "$rechnung" == "" ]; then
|
||||||
|
print_failed
|
||||||
|
return 1
|
||||||
|
else
|
||||||
|
print_ok
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
)
|
||||||
|
|
||||||
check_binaries() {
|
check_binaries() {
|
||||||
|
|
||||||
program=""
|
program=""
|
||||||
binaries=$*
|
binaries=$*
|
||||||
|
|
||||||
for program in $binaries; do
|
for program in $binaries; do
|
||||||
printf "\n[+] Suche nach Programm %s ..." "$program"
|
print_start "Suche nach $program ..."
|
||||||
if [ ! -x "$program" ]; then
|
if [ ! -x "$program" ]; then
|
||||||
print_failed
|
print_failed
|
||||||
printf "\n[-] Das Programm \"%s\" wird benötigt, aber nicht gefunden." "$program"
|
print_error "Das Programm $program wird benötigt, aber nicht gefunden."
|
||||||
quit 3
|
quit 3
|
||||||
else
|
else
|
||||||
print_ok
|
print_ok
|
||||||
|
@ -109,39 +204,8 @@ is_option() (
|
||||||
fi
|
fi
|
||||||
)
|
)
|
||||||
|
|
||||||
# Ausgaben im Terminal
|
|
||||||
# --------------------
|
|
||||||
|
|
||||||
print_failed() {
|
|
||||||
|
|
||||||
if [ "$COLORED_OUTPUT" -eq 1 ]; then
|
|
||||||
printf "%s Failed%s" "$RED" "$NORMAL"
|
|
||||||
else
|
|
||||||
printf " Failed"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
print_ok() {
|
|
||||||
|
|
||||||
if [ "$COLORED_OUTPUT" -eq 1 ]; then
|
|
||||||
printf "%s OK%s" "$GREEN" "$NORMAL"
|
|
||||||
else
|
|
||||||
printf " OK"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
print_warn() {
|
|
||||||
|
|
||||||
msg=$*
|
|
||||||
|
|
||||||
if [ "$COLORED_OUTPUT" -eq 1 ]; then
|
|
||||||
echo "${YELLOW}[-]$NORMAL $msg"
|
|
||||||
else
|
|
||||||
echo "[-] $msg"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Whitespaces entfernen
|
# Whitespaces entfernen
|
||||||
|
# in Buffer speichern
|
||||||
# ---------------------
|
# ---------------------
|
||||||
|
|
||||||
trim_line() {
|
trim_line() {
|
||||||
|
@ -168,10 +232,58 @@ trim_value() {
|
||||||
set +f
|
set +f
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# LaTeX-Paket rechnung.sty installieren
|
||||||
|
# -------------------------------------
|
||||||
|
|
||||||
|
install_sty() (
|
||||||
|
|
||||||
|
old_pwd=$(pwd)
|
||||||
|
|
||||||
|
read -p " LaTeX Paket $STY_RECHNUNG installieren? (y/N): "
|
||||||
|
if [ "$REPLY" == "y" ] || [ "$REPLY" == "Y" ] || [ "$REPLY" == "j" ] || [ "$REPLY" == "J" ]
|
||||||
|
then
|
||||||
|
check_binaries "$GIT_BIN $LATEX_BIN"
|
||||||
|
print_start "Hole Repo von $STY_URL ..."
|
||||||
|
git clone $STY_URL >/dev/null 2>&1
|
||||||
|
if [ "$?" -eq 0 ]; then
|
||||||
|
print_ok
|
||||||
|
cd rechnung
|
||||||
|
mkdir -p "$STY_HOME/rechnung/"
|
||||||
|
print_start "Kompiliere $STY_RECHNUNG ..."
|
||||||
|
$LATEX_BIN rechnung.ins >/dev/null 2>&1
|
||||||
|
if [ "$?" -eq 0 ]; then
|
||||||
|
print_ok
|
||||||
|
print_start "Kopiere $STY_RECHNUNG nach $STY_HOME/rechnung ..."
|
||||||
|
cp rechnung.sty "$STY_HOME/rechnung/"
|
||||||
|
if [ "$?" -eq 0 ]; then
|
||||||
|
print_ok
|
||||||
|
else
|
||||||
|
print_failed
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
cd $old_pwd
|
||||||
|
rm -rf rechnung/
|
||||||
|
print_info "Paket $STY_RECHNUNG erfolgreich installiert"
|
||||||
|
else
|
||||||
|
print_error "Installation fehlgeschlagen"
|
||||||
|
exit 5
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
print_error "Klonen des Repos fehlgeschlagen"
|
||||||
|
exit 6
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
print_info "Beende Progrann"
|
||||||
|
exit 7
|
||||||
|
fi
|
||||||
|
)
|
||||||
|
|
||||||
|
# wenn ein neuer Kunde beginnt, alle Variablen neu initialisieren
|
||||||
|
# ---------------------------------------------------------------
|
||||||
|
|
||||||
reset_values() {
|
reset_values() {
|
||||||
|
|
||||||
printf "\n[+] Initialisiere Felder für Rechnung neu."
|
print_info "Initialisiere Felder für Rechnung neu."
|
||||||
LINE_BUFFER=""
|
LINE_BUFFER=""
|
||||||
KEY_BUFFER=""
|
KEY_BUFFER=""
|
||||||
VALUE_BUFFER=""
|
VALUE_BUFFER=""
|
||||||
|
@ -186,6 +298,8 @@ reset_values() {
|
||||||
LFDNR=""
|
LFDNR=""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
set_value() {
|
set_value() {
|
||||||
|
|
||||||
key=$(echo "$*" | $CUT_BIN -d "=" -f1)
|
key=$(echo "$*" | $CUT_BIN -d "=" -f1)
|
||||||
|
@ -223,7 +337,7 @@ make_invoice() {
|
||||||
buffer="$KUNDE; $ADRESSE"
|
buffer="$KUNDE; $ADRESSE"
|
||||||
anschrift="$(echo "$buffer" | sed 's/; /\\\\\\\\\\\\\\ /g')"
|
anschrift="$(echo "$buffer" | sed 's/; /\\\\\\\\\\\\\\ /g')"
|
||||||
|
|
||||||
printf "\n[+] Erstelle Rechnung: %s" "$filename"
|
print_info "Erstelle Rechnung: $filename"
|
||||||
{
|
{
|
||||||
printf "s!#SUBJECT#!%s!\n" "$subject"
|
printf "s!#SUBJECT#!%s!\n" "$subject"
|
||||||
printf "s!#ANREDE#!%s!\n" "$ANREDE"
|
printf "s!#ANREDE#!%s!\n" "$ANREDE"
|
||||||
|
@ -238,9 +352,9 @@ make_invoice() {
|
||||||
$SED_BIN -i -f "$SEDFILE" "$filename"
|
$SED_BIN -i -f "$SEDFILE" "$filename"
|
||||||
|
|
||||||
if ! $GENPDF "$filename"; then
|
if ! $GENPDF "$filename"; then
|
||||||
echo "[-] Rechnung fehlgeschlagen"
|
print_error "Rechnung fehlgeschlagen"
|
||||||
else
|
else
|
||||||
echo "[+] Rechnung erfolgreich erstellt"
|
print_info "Rechnung erfolgreich erstellt"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -x "$RUBBER_BIN" ]; then
|
if [ -x "$RUBBER_BIN" ]; then
|
||||||
|
@ -277,8 +391,7 @@ proced_ini_line() {
|
||||||
# alle anderen zeilen
|
# alle anderen zeilen
|
||||||
else
|
else
|
||||||
|
|
||||||
if is_option "$line"
|
if is_option "$line"; then
|
||||||
then
|
|
||||||
set_value "$line"
|
set_value "$line"
|
||||||
else
|
else
|
||||||
print_warn "Invalid syntax: $line"
|
print_warn "Invalid syntax: $line"
|
||||||
|
@ -293,26 +406,34 @@ quit() {
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
# --- Programmstart --- #
|
# --- Programmstart --- #
|
||||||
# --------------------- #
|
# --------------------- #
|
||||||
echo "==================="
|
|
||||||
echo "= $PROGRAMM_NAME v$PROGRAMM_VERSION ="
|
|
||||||
echo "==================="
|
|
||||||
|
|
||||||
# Verschiedene Basic Checks
|
# 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
|
COLORED_OUTPUT=1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
print_deko " ========================"
|
||||||
|
print_deko " = $PROGRAMM_NAME v$PROGRAMM_VERSION ="
|
||||||
|
print_deko " ========================"
|
||||||
|
|
||||||
if [ "$(id -u)" -eq 0 ]; then
|
if [ "$(id -u)" -eq 0 ]; then
|
||||||
echo "$0: Das Skript darf nicht als Root ausgeführt werden."
|
print_error "$0: Das Skript darf nicht als Root ausgeführt werden."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
check_binaries "$EXECUTABLES_TO_CHECK"
|
check_binaries "$EXECUTABLES_TO_CHECK"
|
||||||
check_readable "$RECHNUNGSFILE"
|
check_readable "$RECHNUNGSFILE"
|
||||||
check_readable "$TEMPLATEFILE"
|
check_readable "$TEMPLATEFILE"
|
||||||
printf "\n"
|
if check_sty "$STY_HOME"; then
|
||||||
|
continue
|
||||||
|
else
|
||||||
|
print_warn "$STY_RECHNUNG nicht gefunden."
|
||||||
|
install_sty
|
||||||
|
fi
|
||||||
|
|
||||||
|
exit
|
||||||
|
|
||||||
|
|
||||||
# Kundendatei einlesen und rechnungen erstellen
|
# Kundendatei einlesen und rechnungen erstellen
|
||||||
while IFS= read -r rawline
|
while IFS= read -r rawline
|
||||||
|
|
Loading…
Reference in a new issue