91 lines
2.7 KiB
Bash
91 lines
2.7 KiB
Bash
#!/usr/bin/env bash
|
|
# ================================================================
|
|
# mkpyproject.sh - Standard Python Projekt Template erstellen
|
|
# ================================================================
|
|
# Verwendung: mkpyproject.sh <projektname> [zielverzeichnis]
|
|
#
|
|
# Beispiel:
|
|
# mkpyproject.sh myapp
|
|
# mkpyproject.sh myapp /c/10-Develop/gitrepos
|
|
# ================================================================
|
|
|
|
set -e
|
|
|
|
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/setenv.sh"
|
|
|
|
TMPL_DIR="$TOOLS_TEMPLATES/mkpyproject"
|
|
|
|
# --- Argumente -------------------------------------------------------
|
|
PROJECT_NAME="${1:-}"
|
|
TARGET_BASE="${2:-.}"
|
|
|
|
if [ -z "$PROJECT_NAME" ]; then
|
|
echo "FEHLER: Kein Projektname angegeben."
|
|
echo "Verwendung: mkpyproject.sh <projektname> [zielverzeichnis]"
|
|
exit 1
|
|
fi
|
|
|
|
PROJECT_UPPER="${PROJECT_NAME^^}"
|
|
TARGET_DIR="$TARGET_BASE/$PROJECT_NAME"
|
|
YEAR="$(date +%Y)"
|
|
|
|
if [ -d "$TARGET_DIR" ]; then
|
|
echo "FEHLER: Verzeichnis '$TARGET_DIR' existiert bereits."
|
|
exit 1
|
|
fi
|
|
|
|
echo "================================================================"
|
|
echo "Erstelle Python-Projekt: $PROJECT_NAME"
|
|
echo "Zielverzeichnis: $TARGET_DIR"
|
|
echo "================================================================"
|
|
|
|
# --- Verzeichnisse ---------------------------------------------------
|
|
for d in bin cfg data doc examples lib log results tests; do
|
|
mkdir -p "$TARGET_DIR/$d"
|
|
done
|
|
echo "[OK] Verzeichnisse angelegt"
|
|
|
|
# --- Hilfsfunktion: Template kopieren mit Ersetzung ------------------
|
|
copy_tmpl() {
|
|
local rel="$1"
|
|
sed -e "s/__PROJECT_NAME__/$PROJECT_NAME/g" \
|
|
-e "s/__PROJECT_UPPER__/$PROJECT_UPPER/g" \
|
|
-e "s/__YEAR__/$YEAR/g" \
|
|
"$TMPL_DIR/$rel" > "$TARGET_DIR/$rel"
|
|
}
|
|
|
|
# --- bin/ Skripte ----------------------------------------------------
|
|
copy_tmpl "bin/setenv.bat"
|
|
copy_tmpl "bin/setenv.sh"
|
|
copy_tmpl "bin/install_py.bat"
|
|
copy_tmpl "bin/install_py.sh"
|
|
copy_tmpl "bin/activate_venv.bat"
|
|
copy_tmpl "bin/activate_venv.sh"
|
|
copy_tmpl "bin/get_cmd.bat"
|
|
copy_tmpl "bin/get_cmd.sh"
|
|
chmod +x "$TARGET_DIR/bin/"*.sh
|
|
echo "[OK] bin/ Skripte erstellt"
|
|
|
|
# --- Weitere Dateien -------------------------------------------------
|
|
copy_tmpl ".gitignore"
|
|
echo "[OK] .gitignore erstellt"
|
|
|
|
copy_tmpl "LICENSE"
|
|
echo "[OK] LICENSE erstellt"
|
|
|
|
copy_tmpl "README.md"
|
|
echo "[OK] README.md erstellt"
|
|
|
|
copy_tmpl "requirements.txt"
|
|
echo "[OK] requirements.txt erstellt"
|
|
|
|
echo ""
|
|
echo "================================================================"
|
|
echo "FERTIG! Projekt '$PROJECT_NAME' wurde erstellt."
|
|
echo "================================================================"
|
|
echo ""
|
|
echo "Naechste Schritte:"
|
|
echo " Windows: bin\install_py.bat"
|
|
echo " Linux: bash bin/install_py.sh"
|
|
echo ""
|