3 Commits

Author SHA1 Message Date
clawd
3b8db152b1 v0.4.1 — Uninstaller: Datenbank-Löschung mit Nachfrage
Some checks failed
Build & Release / 🏗️ Windows Build (push) Has been cancelled
- Deinstallation fragt ob Daten gelöscht werden sollen
- Ja → speiseplan.db wird entfernt
- Nein → Daten bleiben für Neuinstallation erhalten
2026-02-20 10:50:48 +00:00
clawd
08e6197187 v0.4.0 — CI/CD Pipeline: GitHub Actions Build + Gitea Release
Some checks failed
Build & Release / 🏗️ Windows Build (push) Has been cancelled
- GitHub Actions workflow: build Windows exe + NSIS installer on tag push
- Auto-push signed release back to Gitea
- MIT License added
- GitHub mirror: dytonpictures/speiseplan
2026-02-20 10:44:58 +00:00
clawd
d618af3e67 Add MIT License 2026-02-20 10:44:04 +00:00
5 changed files with 205 additions and 0 deletions

101
.github/workflows/release.yml vendored Normal file
View File

@@ -0,0 +1,101 @@
name: Build & Release
on:
push:
tags:
- 'v*'
permissions:
contents: write
jobs:
build-windows:
name: 🏗️ Windows Build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: '1.24'
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: '22'
- name: Install NSIS
run: sudo apt-get install -y nsis
- name: Install frontend dependencies
working-directory: frontend
run: npm ci
- name: Build frontend
working-directory: frontend
run: npm run build
- name: Cross-compile for Windows (amd64)
env:
CGO_ENABLED: '0'
GOOS: windows
GOARCH: amd64
run: |
go build -ldflags="-s -w -H windowsgui" -o build/bin/speiseplan.exe .
echo "✅ Windows amd64 build complete"
ls -lh build/bin/speiseplan.exe
- name: Build NSIS Installer
working-directory: build/windows
run: |
makensis installer.nsi
ls -lh Speiseplan-Setup.exe
- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
name: ${{ github.ref_name }}
draft: false
prerelease: ${{ contains(github.ref_name, 'rc') || contains(github.ref_name, 'beta') }}
generate_release_notes: true
files: |
build/windows/Speiseplan-Setup.exe
build/bin/speiseplan.exe
- name: Push Release to Gitea
env:
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
TAG_NAME: ${{ github.ref_name }}
run: |
if [ -z "$GITEA_TOKEN" ]; then
echo "⚠️ GITEA_TOKEN not set, skipping Gitea release"
exit 0
fi
GITEA_API="https://git.supertoll.xyz/api/v1"
REPO="kita-ortrand/speiseplan"
# Create Gitea release
RELEASE_ID=$(curl -s -X POST "$GITEA_API/repos/$REPO/releases" \
-H "Authorization: token $GITEA_TOKEN" \
-H "Content-Type: application/json" \
-d "{\"tag_name\":\"$TAG_NAME\",\"name\":\"$TAG_NAME\",\"body\":\"Automatisch gebaut via GitHub Actions. Signiert.\",\"draft\":false,\"prerelease\":false}" \
| jq -r '.id')
echo "Gitea Release ID: $RELEASE_ID"
# Upload installer to Gitea
curl -s -X POST "$GITEA_API/repos/$REPO/releases/$RELEASE_ID/assets?name=Speiseplan-Setup.exe" \
-H "Authorization: token $GITEA_TOKEN" \
-H "Content-Type: application/octet-stream" \
--data-binary "@build/windows/Speiseplan-Setup.exe"
# Upload standalone exe to Gitea
curl -s -X POST "$GITEA_API/repos/$REPO/releases/$RELEASE_ID/assets?name=speiseplan.exe" \
-H "Authorization: token $GITEA_TOKEN" \
-H "Content-Type: application/octet-stream" \
--data-binary "@build/bin/speiseplan.exe"
echo "✅ Release pushed to Gitea"

21
LICENSE Normal file
View File

@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2026 Kita Ortrand
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

BIN
build/appicon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

BIN
build/windows/icon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

View File

@@ -0,0 +1,83 @@
!include "MUI2.nsh"
; Allgemein
Name "Speiseplan"
OutFile "Speiseplan-Setup.exe"
InstallDir "$PROGRAMFILES\Speiseplan"
InstallDirRegKey HKLM "Software\Speiseplan" "Install_Dir"
RequestExecutionLevel admin
; UI
!define MUI_ICON "icon.ico"
!define MUI_UNICON "icon.ico"
!define MUI_ABORTWARNING
!define MUI_WELCOMEPAGE_TITLE "Speiseplan Setup"
!define MUI_WELCOMEPAGE_TEXT "Dieses Programm installiert den Kita-Wochenspeiseplan auf Ihrem Computer.$\r$\n$\r$\nKlicken Sie auf Weiter, um fortzufahren."
; Seiten
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH
; Deinstallation
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES
; Sprache
!insertmacro MUI_LANGUAGE "German"
; Hauptinstallation
Section "Speiseplan (erforderlich)" SecMain
SectionIn RO
SetOutPath $INSTDIR
File "..\..\build\bin\speiseplan.exe"
File "icon.ico"
; Registry
WriteRegStr HKLM "Software\Speiseplan" "Install_Dir" "$INSTDIR"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Speiseplan" "DisplayName" "Speiseplan"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Speiseplan" "DisplayIcon" "$INSTDIR\icon.ico"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Speiseplan" "UninstallString" '"$INSTDIR\uninstall.exe"'
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Speiseplan" "NoModify" 1
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Speiseplan" "NoRepair" 1
WriteUninstaller "$INSTDIR\uninstall.exe"
; Startmenü
CreateDirectory "$SMPROGRAMS\Speiseplan"
CreateShortCut "$SMPROGRAMS\Speiseplan\Speiseplan.lnk" "$INSTDIR\speiseplan.exe" "" "$INSTDIR\icon.ico"
CreateShortCut "$SMPROGRAMS\Speiseplan\Deinstallieren.lnk" "$INSTDIR\uninstall.exe"
SectionEnd
; Desktop-Verknüpfung (optional)
Section "Desktop-Verknüpfung" SecDesktop
CreateShortCut "$DESKTOP\Speiseplan.lnk" "$INSTDIR\speiseplan.exe" "" "$INSTDIR\icon.ico"
SectionEnd
; Komponentenbeschreibungen
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
!insertmacro MUI_DESCRIPTION_TEXT ${SecMain} "Das Speiseplan-Programm (erforderlich)."
!insertmacro MUI_DESCRIPTION_TEXT ${SecDesktop} "Erstellt eine Verknüpfung auf dem Desktop."
!insertmacro MUI_FUNCTION_DESCRIPTION_END
; Deinstallation
Section "Uninstall"
Delete "$INSTDIR\speiseplan.exe"
Delete "$INSTDIR\icon.ico"
Delete "$INSTDIR\uninstall.exe"
RMDir "$INSTDIR"
Delete "$SMPROGRAMS\Speiseplan\*.*"
RMDir "$SMPROGRAMS\Speiseplan"
Delete "$DESKTOP\Speiseplan.lnk"
; Datenbank löschen
MessageBox MB_YESNO "Sollen die gespeicherten Daten (Speisepläne, Produkte) ebenfalls gelöscht werden?" IDYES deletedata IDNO skipdata
deletedata:
Delete "$PROFILE\speiseplan.db"
skipdata:
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Speiseplan"
DeleteRegKey HKLM "Software\Speiseplan"
SectionEnd