94 lines
2.6 KiB
Bash
Executable File
94 lines
2.6 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# Package script for Custom MFD App
|
|
#
|
|
# Builds the venus-html5-app and packages it into a distributable tarball
|
|
# and a venus-data.zip for USB stick deployment.
|
|
#
|
|
# Usage:
|
|
# ./package.sh
|
|
|
|
set -e
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
HTML5_DIR="$PROJECT_ROOT/venus-html5-app"
|
|
DIST_NAME="mfd-custom-app"
|
|
OUTPUT_DIR="$PROJECT_ROOT"
|
|
|
|
echo "=================================================="
|
|
echo "Packaging Custom MFD App"
|
|
echo "=================================================="
|
|
|
|
if [ ! -d "$HTML5_DIR" ]; then
|
|
echo "ERROR: venus-html5-app not found at $HTML5_DIR"
|
|
exit 1
|
|
fi
|
|
|
|
if [ ! -f "$HTML5_DIR/package.json" ]; then
|
|
echo "ERROR: package.json not found in $HTML5_DIR"
|
|
exit 1
|
|
fi
|
|
|
|
echo "1. Building app locally..."
|
|
cd "$HTML5_DIR"
|
|
CI=false npm run build 2>&1
|
|
|
|
BUILD_DIR="$HTML5_DIR/dist"
|
|
if [ ! -d "$BUILD_DIR" ]; then
|
|
echo "ERROR: Build directory not found at $BUILD_DIR"
|
|
echo " The build may have failed."
|
|
exit 1
|
|
fi
|
|
|
|
echo "3. Assembling package..."
|
|
TEMP_DIR=$(mktemp -d)
|
|
PKG_DIR="$TEMP_DIR/$DIST_NAME"
|
|
mkdir -p "$PKG_DIR/app"
|
|
|
|
cp -r "$BUILD_DIR/"* "$PKG_DIR/app/"
|
|
cp "$SCRIPT_DIR/install.sh" "$PKG_DIR/"
|
|
cp "$SCRIPT_DIR/uninstall.sh" "$PKG_DIR/"
|
|
cp "$SCRIPT_DIR/apply-nginx-override.sh" "$PKG_DIR/"
|
|
chmod +x "$PKG_DIR/install.sh" "$PKG_DIR/uninstall.sh" "$PKG_DIR/apply-nginx-override.sh"
|
|
if [ -f "$SCRIPT_DIR/README.md" ]; then
|
|
cp "$SCRIPT_DIR/README.md" "$PKG_DIR/"
|
|
fi
|
|
|
|
echo "4. Creating tarball..."
|
|
cd "$TEMP_DIR"
|
|
tar -czf "$OUTPUT_DIR/${DIST_NAME}.tar.gz" "$DIST_NAME"
|
|
echo " Created: $OUTPUT_DIR/${DIST_NAME}.tar.gz"
|
|
|
|
echo "5. Creating venus-data.zip for USB deployment..."
|
|
USB_DIR="$TEMP_DIR/venus-data"
|
|
mkdir -p "$USB_DIR/www/app"
|
|
cp -r "$BUILD_DIR/"* "$USB_DIR/www/app/"
|
|
cd "$TEMP_DIR"
|
|
zip -r "$OUTPUT_DIR/venus-data.zip" "venus-data" -x "*.DS_Store"
|
|
echo " Created: $OUTPUT_DIR/venus-data.zip"
|
|
|
|
rm -rf "$TEMP_DIR"
|
|
|
|
echo ""
|
|
echo "=================================================="
|
|
echo "Package created!"
|
|
echo "=================================================="
|
|
echo ""
|
|
echo "Deploy via SSH:"
|
|
echo " scp $OUTPUT_DIR/${DIST_NAME}.tar.gz root@cerbo:/data/"
|
|
echo " ssh root@cerbo 'cd /data && tar xzf ${DIST_NAME}.tar.gz && cd ${DIST_NAME} && ./install.sh'"
|
|
echo ""
|
|
echo "Deploy via USB:"
|
|
echo " Copy venus-data.zip to a USB stick, insert into Cerbo, reboot."
|
|
echo ""
|
|
|
|
read -p "Copy tarball to remote cerbo host? [y/N] " answer
|
|
if [[ "$answer" =~ ^[Yy]$ ]]; then
|
|
echo "Copying to cerbo..."
|
|
scp "$OUTPUT_DIR/${DIST_NAME}.tar.gz" cerbo:/data/
|
|
echo "Done."
|
|
else
|
|
echo "Skipping remote copy."
|
|
fi
|