#!/bin/bash # build-electron-linux.sh # Author: Matthew Raymer # Description: Electron Linux build script for TimeSafari application # This script builds Electron packages for Linux with support for different formats. # # Usage: ./scripts/build-electron-linux.sh [deb|prod] # - No argument: Builds AppImage # - deb: Builds .deb package # - prod: Builds production AppImage # # Exit Codes: # 1 - Build failed # 2 - Invalid argument # Exit on any error set -e # Source common utilities source "$(dirname "$0")/common.sh" # Parse command line arguments parse_args "$@" # Parse build type argument BUILD_TYPE=${1:-"appimage"} PRODUCTION=false case $BUILD_TYPE in "deb") BUILD_TARGET="deb" log_info "Building .deb package" ;; "prod") BUILD_TARGET="AppImage" PRODUCTION=true log_info "Building production AppImage" ;; "appimage"|"") BUILD_TARGET="AppImage" log_info "Building AppImage" ;; *) log_error "Invalid build type: $BUILD_TYPE" log_error "Usage: $0 [deb|prod]" exit 2 ;; esac # Print build header print_header "TimeSafari Electron Linux Build" log_info "Starting Linux build process at $(date)" log_info "Build type: $BUILD_TYPE" log_info "Build target: $BUILD_TARGET" log_info "Production mode: $PRODUCTION" # Setup environment for Electron build setup_build_env "electron" "$PRODUCTION" # Setup application directories setup_app_directories # Load environment from .env file if it exists load_env_file ".env" # Step 1: Build Electron application if [ "$PRODUCTION" = true ]; then safe_execute "Building production Electron application" "npm run build:electron-prod" || exit 1 else safe_execute "Building Electron application" "npm run build:electron" || exit 1 fi # Step 2: Build package safe_execute "Building Linux package" "npx electron-builder --linux $BUILD_TARGET" || exit 1 # Print build summary log_success "Linux build completed successfully!" log_info "Package type: $BUILD_TARGET" print_footer "Linux Build" # Exit with success exit 0