feat(build): add script to build Tauri application for Portmaster on Linux
This commit is contained in:
73
packaging/linux/dev_helpers/build_tauri.sh
Executable file
73
packaging/linux/dev_helpers/build_tauri.sh
Executable file
@@ -0,0 +1,73 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
# This script builds the Tauri application for Portmaster on Linux.
|
||||||
|
# It optionally builds the required Angular tauri-builtin project first.
|
||||||
|
# The script assumes that all necessary dependencies (Node.js, Angular CLI, Rust, cargo-tauri) are installed.
|
||||||
|
# Output file: dist/portmaster
|
||||||
|
|
||||||
|
# Resolve script directory and project root
|
||||||
|
SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
PROJECT_ROOT="$(cd -- "${SCRIPT_DIR}/../../../" && pwd)"
|
||||||
|
ORIGINAL_DIR="$(pwd)"
|
||||||
|
|
||||||
|
# Create output directory
|
||||||
|
OUTPUT_DIR="${SCRIPT_DIR}/dist"
|
||||||
|
mkdir -p "${OUTPUT_DIR}"
|
||||||
|
|
||||||
|
# Helper: check for command availability
|
||||||
|
have() { command -v "$1" >/dev/null 2>&1; }
|
||||||
|
|
||||||
|
# Optional: build Angular tauri-builtin
|
||||||
|
read -r -p "Build Angular tauri-builtin project? (Y/N, default: Y) " REPLY
|
||||||
|
REPLY=${REPLY:-Y}
|
||||||
|
if [[ ! ${REPLY} =~ ^[Nn]$ ]]; then
|
||||||
|
# Ensure Angular CLI is available
|
||||||
|
if ! have ng; then
|
||||||
|
echo "Error: Angular CLI 'ng' not found in PATH." >&2
|
||||||
|
echo "Install via: npm install -g @angular/cli" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
# Navigate to Angular project
|
||||||
|
pushd "${PROJECT_ROOT}/desktop/angular" >/dev/null
|
||||||
|
# Build tauri-builtin with production config
|
||||||
|
ng build --configuration production --base-href / tauri-builtin || {
|
||||||
|
popd >/dev/null
|
||||||
|
cd "${ORIGINAL_DIR}"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
popd >/dev/null
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Navigate to Tauri src-tauri directory
|
||||||
|
pushd "${PROJECT_ROOT}/desktop/tauri/src-tauri" >/dev/null
|
||||||
|
|
||||||
|
# Ensure cargo and tauri plugin are available
|
||||||
|
if ! have cargo; then
|
||||||
|
echo "Error: cargo not found. Install Rust toolchain (rustup)." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if ! cargo tauri --help >/dev/null 2>&1; then
|
||||||
|
echo "Error: cargo-tauri not installed." >&2
|
||||||
|
echo "Install via: cargo install tauri-cli" >&2
|
||||||
|
popd >/dev/null
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Build Tauri project (no bundle)
|
||||||
|
cargo tauri build --no-bundle
|
||||||
|
|
||||||
|
# Copy built binary to dist
|
||||||
|
TAURI_OUTPUT_DIR="$(pwd)/target/release"
|
||||||
|
if [[ -f "${TAURI_OUTPUT_DIR}/portmaster" ]]; then
|
||||||
|
cp -f "${TAURI_OUTPUT_DIR}/portmaster" "${OUTPUT_DIR}/"
|
||||||
|
echo "Build completed successfully: ${OUTPUT_DIR}/portmaster"
|
||||||
|
else
|
||||||
|
echo "Error: Built binary not found at ${TAURI_OUTPUT_DIR}/portmaster" >&2
|
||||||
|
popd >/dev/null
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Return to original directory
|
||||||
|
popd >/dev/null
|
||||||
|
cd "${ORIGINAL_DIR}"
|
||||||
Reference in New Issue
Block a user