Some checks are pending
Auto-tag / Create date-tag (push) Waiting to run
CI / Backend (.NET 8) (push) Waiting to run
CI / Web (React + Vite) (push) Waiting to run
CI / POS (WPF, Windows) (push) Waiting to run
Docker API / Build + push API (push) Waiting to run
Docker API / Deploy API on stage (push) Blocked by required conditions
Docker Web / Build + push Web (push) Waiting to run
Docker Web / Deploy Web on stage (push) Blocked by required conditions
- deploy/pos-publish.sh: self-contained Windows x64 (zip) + Linux x64 (tar.gz) + AppImage (если есть appimagetool); VERSION.txt для автообновления. - docs/pos.md — инструкция кассиру/администратору (установка, горячие клавиши, смена, продажа, возврат, весы, печать, офлайн, фискализация-позже, автообновление). - docs/pos-moysklad-reference.md — сверка розничной модели с МойСклад. - docs/pos-progress.md — честный статус 11/11 пунктов + замеры + известные огранич. - docs/pos-screenshots/ — 20 кадров (1920×1080 + 1366×768) + index.html галерея. - .gitignore: сборки кассы (deploy/pos-dist) и TestResults — не в git. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
77 lines
3.3 KiB
Bash
Executable file
77 lines
3.3 KiB
Bash
Executable file
#!/usr/bin/env bash
|
||
# Сборка кассы food-market.pos (Avalonia) под Windows x64 и Linux x64.
|
||
# Self-contained + ReadyToRun (быстрый старт, без установленного .NET на кассе).
|
||
# Trimming выключен по умолчанию (Avalonia/XAML использует рефлексию; AOT/trim —
|
||
# отдельная задача, см. docs/pos.md). Результат — zip/tar.gz в deploy/pos-dist/.
|
||
#
|
||
# Запуск: deploy/pos-publish.sh [win|linux|all] (по умолчанию all)
|
||
set -euo pipefail
|
||
cd "$(dirname "$0")/.."
|
||
|
||
PROJ=src/food-market.pos/food-market.pos.csproj
|
||
OUT=deploy/pos-dist
|
||
VER="$(date +%Y.%m.%d)"
|
||
mkdir -p "$OUT"
|
||
TARGET="${1:-all}"
|
||
|
||
publish() {
|
||
local rid="$1" label="$2"
|
||
echo "[pos-publish] $label ($rid) …"
|
||
local dir="$OUT/food-market-pos-$rid"
|
||
rm -rf "$dir"
|
||
dotnet publish "$PROJ" -c Release -r "$rid" --self-contained true \
|
||
-p:PublishReadyToRun=true -p:Version="$VER" -p:DebugType=none \
|
||
-o "$dir" >/tmp/pos-publish-$rid.log 2>&1 || { tail -25 /tmp/pos-publish-$rid.log; exit 1; }
|
||
# версия для автообновления кассой
|
||
echo "$VER" > "$dir/VERSION.txt"
|
||
local size; size=$(du -sh "$dir" | cut -f1)
|
||
echo "[pos-publish] $label готово: $dir ($size)"
|
||
}
|
||
|
||
# AppImage для Linux (переносимый single-file). Требует appimagetool в PATH;
|
||
# если его нет — пропускаем (tar.gz остаётся основным артефактом Linux).
|
||
build_appimage() {
|
||
local rid="$1" ver="$2"
|
||
local src="$OUT/food-market-pos-$rid"
|
||
if ! command -v appimagetool >/dev/null 2>&1; then
|
||
echo "[pos-publish] appimagetool не найден — AppImage пропущен (есть tar.gz)."
|
||
return 0
|
||
fi
|
||
local appdir="$OUT/FoodMarketPos.AppDir"
|
||
rm -rf "$appdir"; mkdir -p "$appdir/usr/bin"
|
||
cp -r "$src/." "$appdir/usr/bin/"
|
||
cat > "$appdir/foodmarket-pos.desktop" <<DESK
|
||
[Desktop Entry]
|
||
Name=Food Market Касса
|
||
Exec=foodmarket.Pos
|
||
Icon=foodmarket-pos
|
||
Type=Application
|
||
Categories=Office;
|
||
DESK
|
||
# Минимальная иконка-заглушка (1x1 PNG), если нет фирменной.
|
||
printf '\x89PNG\r\n\x1a\n' > "$appdir/foodmarket-pos.png"
|
||
cat > "$appdir/AppRun" <<'RUN'
|
||
#!/bin/sh
|
||
HERE="$(dirname "$(readlink -f "$0")")"
|
||
exec "$HERE/usr/bin/foodmarket.Pos" "$@"
|
||
RUN
|
||
chmod +x "$appdir/AppRun" "$appdir/usr/bin/foodmarket.Pos"
|
||
( cd "$OUT" && ARCH=x86_64 appimagetool "FoodMarketPos.AppDir" "food-market-pos-$ver-x86_64.AppImage" >/tmp/pos-appimage.log 2>&1 ) \
|
||
&& echo "[pos-publish] AppImage: $OUT/food-market-pos-$ver-x86_64.AppImage" \
|
||
|| { echo "[pos-publish] AppImage не собрался (см. /tmp/pos-appimage.log) — tar.gz остаётся."; }
|
||
rm -rf "$appdir"
|
||
}
|
||
|
||
if [[ "$TARGET" == "win" || "$TARGET" == "all" ]]; then
|
||
publish win-x64 "Windows x64"
|
||
( cd "$OUT" && zip -qr "food-market-pos-win-x64-$VER.zip" food-market-pos-win-x64 )
|
||
echo "[pos-publish] zip: $OUT/food-market-pos-win-x64-$VER.zip"
|
||
fi
|
||
if [[ "$TARGET" == "linux" || "$TARGET" == "all" ]]; then
|
||
publish linux-x64 "Linux x64"
|
||
( cd "$OUT" && tar czf "food-market-pos-linux-x64-$VER.tar.gz" food-market-pos-linux-x64 )
|
||
echo "[pos-publish] tar: $OUT/food-market-pos-linux-x64-$VER.tar.gz"
|
||
build_appimage linux-x64 "$VER"
|
||
fi
|
||
echo "[pos-publish] версия $VER собрана."
|