SHA256
Vorbereitung mit install.sh
This commit is contained in:
Regular → Executable
+59
-21
@@ -1,14 +1,25 @@
|
||||
#!/usr/bin/env bash
|
||||
# GCBoK.WebStaticBuilder — KMU-Installationsskript
|
||||
# GCBoK.WebStaticBuilder — Installationsskript
|
||||
# Installiert das Tool nach /opt/GitCover/webstatic und legt einen Symlink
|
||||
# `webstatic` nach /usr/local/bin. Idempotent.
|
||||
#
|
||||
# Modi (WEBSTATIC_INSTALL_MODE):
|
||||
# clone (Default) — klont das Quell-Repo inkl. .git nach /opt/GitCover/webstatic.
|
||||
# Ermoeglicht spaeter `git pull` + lokale Anpassungen stashen/mergen
|
||||
# (Hermes-Update-Konzept). Das Ziel ist ein echtes Git-Repo.
|
||||
# copy — kopiert nur das gebaute Binary + Beispiel + Docs (kein .git).
|
||||
#
|
||||
# Hinweis: /opt ist root-owned. Das Script sinnvollerweise als root ausfuehren,
|
||||
# z.B. `sudo env PATH="$PATH" ./install.sh`, damit `dotnet` im PATH bleibt.
|
||||
set -euo pipefail
|
||||
|
||||
INSTALL_MODE="${WEBSTATIC_INSTALL_MODE:-clone}"
|
||||
INSTALL_DIR="${WEBSTATIC_INSTALL_DIR:-/opt/GitCover/webstatic}"
|
||||
BIN_LINK="/usr/local/bin/webstatic"
|
||||
REPO_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
|
||||
echo "== GCBoK.WebStaticBuilder Installer =="
|
||||
echo "Modus: $INSTALL_MODE"
|
||||
echo "Installationsziel: $INSTALL_DIR"
|
||||
|
||||
# 1) .NET 10 pruefen
|
||||
@@ -17,34 +28,61 @@ if ! command -v dotnet >/dev/null 2>&1; then
|
||||
echo "Installiere .NET 10 von https://dotnet.microsoft.com/download" >&2
|
||||
exit 1
|
||||
fi
|
||||
DOTNET_VER="$(dotnet --version 2>/dev/null || echo 0)"
|
||||
echo "Gefunden: dotnet $DOTNET_VER"
|
||||
echo "Gefunden: dotnet $(dotnet --version 2>/dev/null || echo unbekannt)"
|
||||
|
||||
# 2) Projekt bauen (Release)
|
||||
# 2) Quelle beschaffen
|
||||
if [ "$INSTALL_MODE" = "clone" ]; then
|
||||
echo "== Clone-Modus: bereite $INSTALL_DIR vor =="
|
||||
if [ -d "$INSTALL_DIR/.git" ]; then
|
||||
echo "Bereits ein Git-Repo — ueberspringe Clone (git pull ist beim Update noetig)."
|
||||
else
|
||||
if [ -e "$INSTALL_DIR" ]; then
|
||||
echo "FEHLER: $INSTALL_DIR existiert, ist aber kein Git-Repo." >&2
|
||||
echo "Entferne oder verschiebe es manuell, dann erneut ausfuehren." >&2
|
||||
exit 1
|
||||
fi
|
||||
# Lokaler Klon (offline-sicher); Remote wird auf das echte Upstream gesetzt.
|
||||
git clone "$REPO_DIR" "$INSTALL_DIR"
|
||||
SRC_REMOTE="$(git -C "$REPO_DIR" remote get-url origin 2>/dev/null || true)"
|
||||
if [ -n "$SRC_REMOTE" ]; then
|
||||
git -C "$INSTALL_DIR" remote set-url origin "$SRC_REMOTE" 2>/dev/null || true
|
||||
echo "Remote 'origin' -> $SRC_REMOTE"
|
||||
fi
|
||||
fi
|
||||
BUILD_PROJECT="$INSTALL_DIR/GCBoK.WebStaticBuilder.csproj"
|
||||
DLL="$INSTALL_DIR/bin/Release/net10.0/webstatic.dll"
|
||||
else
|
||||
echo "== Copy-Modus: baue Release aus $REPO_DIR =="
|
||||
dotnet build "$REPO_DIR/GCBoK.WebStaticBuilder.csproj" -c Release -v minimal
|
||||
echo "== Kopiere nach $INSTALL_DIR =="
|
||||
mkdir -p "$INSTALL_DIR"
|
||||
rm -rf "$INSTALL_DIR/bin" "$INSTALL_DIR/webstatic.example" 2>/dev/null || true
|
||||
cp -r "$REPO_DIR/bin/Release/net10.0/." "$INSTALL_DIR/"
|
||||
cp -r "$REPO_DIR/webstatic.example" "$INSTALL_DIR/webstatic.example" 2>/dev/null || true
|
||||
for f in LICENSE README.md docs plans AGENTS.md MEMORY.md SKILLS.md; do
|
||||
[ -e "$REPO_DIR/$f" ] && cp -r "$REPO_DIR/$f" "$INSTALL_DIR/" 2>/dev/null || true
|
||||
done
|
||||
BUILD_PROJECT="$REPO_DIR/GCBoK.WebStaticBuilder.csproj"
|
||||
DLL="$INSTALL_DIR/webstatic.dll"
|
||||
fi
|
||||
|
||||
# 3) Bauen (im Installationsziel bei Clone, sonst im Repo)
|
||||
echo "== Baue Release =="
|
||||
dotnet build "$REPO_DIR/GCBoK.WebStaticBuilder.csproj" -c Release -v minimal
|
||||
|
||||
# 3) Nach /opt kopieren
|
||||
echo "== Kopiere nach $INSTALL_DIR =="
|
||||
mkdir -p "$INSTALL_DIR"
|
||||
rm -rf "$INSTALL_DIR/bin" "$INSTALL_DIR/webstatic.example" 2>/dev/null || true
|
||||
cp -r "$REPO_DIR/bin/Release/net10.0/." "$INSTALL_DIR/"
|
||||
cp -r "$REPO_DIR/webstatic.example" "$INSTALL_DIR/webstatic.example" 2>/dev/null || true
|
||||
# Hilfsdateien auf oberster Ebene mitnehmen (LICENSE, README, docs)
|
||||
for f in LICENSE README.md docs plans AGENTS.md MEMORY.md SKILLS.md; do
|
||||
[ -e "$REPO_DIR/$f" ] && cp -r "$REPO_DIR/$f" "$INSTALL_DIR/" 2>/dev/null || true
|
||||
done
|
||||
dotnet build "$BUILD_PROJECT" -c Release -v minimal
|
||||
|
||||
# 4) Symlink
|
||||
echo "== Verknuepfe $BIN_LINK -> $INSTALL_DIR/webstatic.dll =="
|
||||
echo "== Verknuepfe $BIN_LINK -> $DLL =="
|
||||
if [ -w "$(dirname "$BIN_LINK")" ]; then
|
||||
ln -sf "$INSTALL_DIR/webstatic.dll" "$BIN_LINK"
|
||||
ln -sf "$DLL" "$BIN_LINK"
|
||||
else
|
||||
echo "Hinweis: $BIN_LINK benoetigt Schreibrechte; erstelle Link via sudo."
|
||||
sudo ln -sf "$INSTALL_DIR/webstatic.dll" "$BIN_LINK"
|
||||
sudo ln -sf "$DLL" "$BIN_LINK"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "Fertig. Danach verfuegbar ueber: webstatic --help"
|
||||
echo "Beispiel-Seite erzeugen: webstatic init mysite && cd mysite && webstatic build --env work"
|
||||
echo "Umgebungsvariable (optional): WEBSTATIC_BUILDER=$INSTALL_DIR/webstatic.dll"
|
||||
echo "Beispiel-Seite erzeugen: webstatic init mysite && cd mysite && webstatic build --env development"
|
||||
echo "GCBoK bauen: webstatic build --root www --env development"
|
||||
echo "Umgebungsvariable (optional): WEBSTATIC_BUILDER=$DLL"
|
||||
echo ""
|
||||
echo "Update (Clone-Modus): cd $INSTALL_DIR && git stash && git pull && git stash pop && dotnet build -c Release"
|
||||
|
||||
Reference in New Issue
Block a user