From b39235ba70d163497ed4bc572472c9f36a4e452f Mon Sep 17 00:00:00 2001 From: mistangl Date: Thu, 31 Jul 2025 15:03:20 +0200 Subject: [PATCH] =?UTF-8?q?Bash=20Skripte=20f=C3=BCr=20das=20Startup=20geb?= =?UTF-8?q?aut?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bin/draw_dxf.sh | 4 +++ bin/getpositions.sh | 6 +++++ bin/install_py.sh | 16 ++++++++++++ bin/ioconverter.sh | 54 +++++++++++++++++++++++++++++++++++++++ bin/manage_interpreter.sh | 30 ++++++++++++++++++++++ bin/portalexport.sh | 4 +++ bin/routing.sh | 4 +++ bin/setenv.sh | 26 +++++++++++++++++++ 8 files changed, 144 insertions(+) create mode 100755 bin/draw_dxf.sh create mode 100755 bin/getpositions.sh create mode 100755 bin/install_py.sh create mode 100755 bin/ioconverter.sh create mode 100755 bin/manage_interpreter.sh create mode 100644 bin/portalexport.sh create mode 100755 bin/routing.sh create mode 100755 bin/setenv.sh diff --git a/bin/draw_dxf.sh b/bin/draw_dxf.sh new file mode 100755 index 0000000..cbb9b2d --- /dev/null +++ b/bin/draw_dxf.sh @@ -0,0 +1,4 @@ +#!/bin/bash +source manage_interpreter.sh activate_interpreter +python "$PROJECT_LIB/drawdxf.py" "$@" +source manage_interpreter.sh deactivate_interpreter diff --git a/bin/getpositions.sh b/bin/getpositions.sh new file mode 100755 index 0000000..a53e515 --- /dev/null +++ b/bin/getpositions.sh @@ -0,0 +1,6 @@ +#!/bin/bash +# getpositions.sh +#!/bin/bash +source manage_interpreter.sh activate_interpreter +python "$PROJECT_LIB/getpositions.py" "$@" +source manage_interpreter.sh deactivate_interpreter diff --git a/bin/install_py.sh b/bin/install_py.sh new file mode 100755 index 0000000..9b296e7 --- /dev/null +++ b/bin/install_py.sh @@ -0,0 +1,16 @@ +#!/bin/bash +source setenv.sh + +if [ ! -d "$PROJECT/.venv" ]; then + echo "Initialisiere Python virtual environment..." + python3 -m venv "$PROJECT/.venv" --upgrade-deps + echo "Erfolgreich." + + source "$PROJECT/.venv/bin/activate" + echo "Installiere erforderliche Python Packages..." + pip install -r "$PROJECT_LIB/requirements.txt" -q + echo "Erfolgreich" + deactivate +else + echo "Erforderliche Python Packages bereits installiert!" +fi diff --git a/bin/ioconverter.sh b/bin/ioconverter.sh new file mode 100755 index 0000000..629f810 --- /dev/null +++ b/bin/ioconverter.sh @@ -0,0 +1,54 @@ +#!/bin/bash + +usage() { + echo "Usage: $0 " + exit 1 +} + +if [ $# -eq 0 ]; then + usage +fi + +INPUT_FILE="$1" +FILENAME=$(basename "$INPUT_FILE" .dxf) +DIR=$(dirname "$INPUT_FILE") + +source /opt/dxf-calculator/kabellaengen/bin/setenv.sh + +# Namen der Zwischenergebnis Dateien +JSON_POS="${FILENAME}_positionsconv.json" +JSON_TODRAW="${FILENAME}_todraw.json" +# Namen der Ergebnisdateien +ERROR_DOUBLE="${FILENAME}_errors.json" +RESULT_TIA="${FILENAME}-*_TIA.xlsx" + +echo +echo "=== Fetching Positions ===" +./getpositions.sh --filename "$1" -s -r -w "$JSON_POS" -e "$ERROR_DOUBLE" + +if [ -f "$PROJECT_WORK/$ERROR_DOUBLE" ]; then + echo "== failed: duplicate IDs in given layout" + read -p "Press any key to continue..." + mv "$PROJECT_WORK/$ERROR_DOUBLE" "$PROJECT_IO_RESULTS" + exit 1 +fi + +if [ ! -f "$PROJECT_WORK/$JSON_POS" ]; then + echo "== failed: getpositions" + read -p "Press any key to continue..." + exit 1 +fi + +echo "=== Creating Excel Files for TIA, WSCAD, .. ===" +./portalexport.sh --filename "$JSON_POS" --outname "$FILENAME" + +if [ ! -f "$PROJECT_WORK/$RESULT_TIA" ]; then + echo "== failed: creating .xlsx files" + read -p "Press any key to continue..." + exit 1 +fi + +mkdir -p "$PROJECT_IO_RESULTS/$FILENAME" +echo "move $PROJECT_WORK/${FILENAME}-* $PROJECT_IO_RESULTS/$FILENAME" +mv "$PROJECT_WORK/${FILENAME}"-* "$PROJECT_IO_RESULTS/$FILENAME" +read -p "Press any key to continue..." diff --git a/bin/manage_interpreter.sh b/bin/manage_interpreter.sh new file mode 100755 index 0000000..501fed0 --- /dev/null +++ b/bin/manage_interpreter.sh @@ -0,0 +1,30 @@ +#!/bin/bash + +activate_interpreter() { + if [ -f "$PROJECT/.venv/bin/activate" ]; then + source "$PROJECT/.venv/bin/activate" + else + echo "Virtual environment not found. Run install_py.sh first." + exit 1 + fi +} + +deactivate_interpreter() { + if [ -n "$VIRTUAL_ENV" ]; then + deactivate + fi +} + +# Call function based on argument +case "$1" in + activate_interpreter) + activate_interpreter + ;; + deactivate_interpreter) + deactivate_interpreter + ;; + *) + echo "Usage: $0 {activate_interpreter|deactivate_interpreter}" + exit 1 + ;; +esac diff --git a/bin/portalexport.sh b/bin/portalexport.sh new file mode 100644 index 0000000..ff237ad --- /dev/null +++ b/bin/portalexport.sh @@ -0,0 +1,4 @@ +#!/bin/bash +source manage_interpreter.sh activate_interpreter +python "$PROJECT_LIB/portalexport.py" "$@" +source manage_interpreter.sh deactivate_interpreter diff --git a/bin/routing.sh b/bin/routing.sh new file mode 100755 index 0000000..24779dc --- /dev/null +++ b/bin/routing.sh @@ -0,0 +1,4 @@ +#!/bin/bash +source manage_interpreter.sh activate_interpreter +python "$PROJECT_LIB/routing.py" "$@" +source manage_interpreter.sh deactivate_interpreter diff --git a/bin/setenv.sh b/bin/setenv.sh new file mode 100755 index 0000000..9bccd9d --- /dev/null +++ b/bin/setenv.sh @@ -0,0 +1,26 @@ +#!/bin/bash + +export PROJECT=/opt/dxf-calculator/kabellaengen +export PROJECT_BIN="$PROJECT/bin" +export PROJECT_CFG="$PROJECT/cfg" +export PROJECT_DOC="$PROJECT/doc" +export PROJECT_LIB="$PROJECT/lib" +export PROJECT_DATA="$PROJECT/data" +export PROJECT_WORK="$PROJECT/work" +export PROJECT_TEST="$PROJECT/testdata" + +# Linux executable instead of Windows .exe +export SIVAS_TEILESTAMM="/usr/local/bin/KSbExcelExportSivasTeilestamm" +export SIVAS_EXCEL_EXPORT_DIR="$PROJECT_DATA" + +# Create directories if they don't exist +mkdir -p "$PROJECT/work" +mkdir -p "$PROJECT/data" + +# Samba shares (adjust mount points as needed) +export PROJECT_IO_RESULTS=$PROJECT_WORK +export PROJECT_BOM_RESULTS=$PROJECT_WORK +export INSTALL_DIR="$HOME/kabeltool" + +# Add project bin to PATH +export PATH="$PROJECT_BIN:$PATH"