Browse Source
- Create build-electron.sh script following build-android.sh patterns - Add support for multiple build modes: dev, package, appimage, deb - Implement comprehensive error handling with specific exit codes - Add proper logging and step-by-step build process tracking - Include built-in help system and verbose logging options Build Script Features: - Development builds that compile and launch Electron app - Package builds for creating distributable applications - Support for AppImage and Debian package generation - Automatic cleanup of previous builds and artifacts - TypeScript compilation with proper error handling - Capacitor sync and asset generation integration NPM Script Integration: - Add build:electron for development builds - Add build:electron:package for distributable packages - Add build:electron:appimage for AppImage packages - Add build:electron:deb for Debian packages - Add clean:electron for build artifact cleanup Common Utilities Enhancement: - Extend setup_build_env() to support 'electron' build type - Configure proper environment variables for Electron builds - Maintain consistency with existing build infrastructure This provides a complete, automated build solution for Electron that matches the quality and functionality of the Android build system, enabling reliable cross-platform desktop application builds.streamline-attempt
3 changed files with 158 additions and 0 deletions
@ -0,0 +1,147 @@ |
|||||
|
#!/bin/bash |
||||
|
# build-electron.sh |
||||
|
# Author: Matthew Raymer |
||||
|
# Description: Electron build script for TimeSafari application |
||||
|
# This script handles the complete Electron build process including cleanup, |
||||
|
# web build, Capacitor build, TypeScript compilation, and Electron packaging. |
||||
|
# |
||||
|
# Usage: |
||||
|
# ./scripts/build-electron.sh # Development build (runs app) |
||||
|
# ./scripts/build-electron.sh --dev # Development build (runs app) |
||||
|
# ./scripts/build-electron.sh --package # Package build (creates distributable) |
||||
|
# ./scripts/build-electron.sh --appimage # Build AppImage package |
||||
|
# ./scripts/build-electron.sh --deb # Build Debian package |
||||
|
# ./scripts/build-electron.sh --help # Show help |
||||
|
# ./scripts/build-electron.sh --verbose # Enable verbose logging |
||||
|
# |
||||
|
# NPM Script Equivalents: |
||||
|
# npm run build:electron # Development build |
||||
|
# npm run build:electron:package # Package build |
||||
|
# npm run build:electron:appimage # AppImage package |
||||
|
# npm run build:electron:deb # Debian package |
||||
|
# |
||||
|
# Exit Codes: |
||||
|
# 1 - Electron cleanup failed |
||||
|
# 2 - Web build failed |
||||
|
# 3 - Capacitor build failed |
||||
|
# 4 - TypeScript compilation failed |
||||
|
# 5 - Electron packaging failed |
||||
|
# 6 - Capacitor sync failed |
||||
|
# 7 - Asset generation failed |
||||
|
# 8 - Electron app launch failed |
||||
|
|
||||
|
# Exit on any error |
||||
|
set -e |
||||
|
|
||||
|
# Source common utilities |
||||
|
source "$(dirname "$0")/common.sh" |
||||
|
|
||||
|
# Parse command line arguments |
||||
|
parse_args "$@" |
||||
|
|
||||
|
# Print build header |
||||
|
print_header "TimeSafari Electron Build Process" |
||||
|
log_info "Starting Electron build process at $(date)" |
||||
|
|
||||
|
# Setup environment for Electron build |
||||
|
setup_build_env "electron" |
||||
|
|
||||
|
# Setup application directories |
||||
|
setup_app_directories |
||||
|
|
||||
|
# Load environment from .env file if it exists |
||||
|
load_env_file ".env" |
||||
|
|
||||
|
# Step 1: Clean Electron app |
||||
|
safe_execute "Cleaning Electron app" "npm run clean:electron || true" || exit 1 |
||||
|
|
||||
|
# Step 2: Clean dist directory |
||||
|
log_info "Cleaning dist directory..." |
||||
|
clean_build_artifacts "dist" "electron/app" |
||||
|
|
||||
|
# Step 3: Build Capacitor version for Electron |
||||
|
safe_execute "Building Capacitor version" "npm run build:capacitor" || exit 2 |
||||
|
|
||||
|
# Step 4: Prepare Electron app directory |
||||
|
log_info "Preparing Electron app directory..." |
||||
|
mkdir -p electron/app |
||||
|
|
||||
|
# Step 5: Copy built files to Electron |
||||
|
safe_execute "Copying web assets to Electron" "cp -r dist/* electron/app/" || exit 3 |
||||
|
|
||||
|
# Step 6: Validate and copy Capacitor configuration |
||||
|
safe_execute "Validating Capacitor configuration" "cp capacitor.config.json electron/capacitor.config.json" || exit 3 |
||||
|
|
||||
|
# Step 7: Navigate to electron directory and build TypeScript |
||||
|
safe_execute "Compiling TypeScript" "cd electron && npm run build && cd .." || exit 4 |
||||
|
|
||||
|
# Step 8: Sync with Capacitor (if needed) |
||||
|
safe_execute "Syncing with Capacitor" "npx cap sync electron || true" || exit 6 |
||||
|
|
||||
|
# Step 9: Generate assets (if available) |
||||
|
safe_execute "Generating assets" "npx capacitor-assets generate --electron || true" || exit 7 |
||||
|
|
||||
|
# Determine build action based on arguments |
||||
|
BUILD_ACTION="dev" |
||||
|
PACKAGE_TYPE="" |
||||
|
|
||||
|
# Parse additional arguments for build type |
||||
|
for arg in "$@"; do |
||||
|
case $arg in |
||||
|
--package|--build) |
||||
|
BUILD_ACTION="package" |
||||
|
;; |
||||
|
--appimage) |
||||
|
BUILD_ACTION="package" |
||||
|
PACKAGE_TYPE="appimage" |
||||
|
;; |
||||
|
--deb) |
||||
|
BUILD_ACTION="package" |
||||
|
PACKAGE_TYPE="deb" |
||||
|
;; |
||||
|
--dev|--development) |
||||
|
BUILD_ACTION="dev" |
||||
|
;; |
||||
|
*) |
||||
|
# Ignore unknown arguments |
||||
|
;; |
||||
|
esac |
||||
|
done |
||||
|
|
||||
|
# Execute build action |
||||
|
case $BUILD_ACTION in |
||||
|
"package") |
||||
|
if [ -n "$PACKAGE_TYPE" ]; then |
||||
|
safe_execute "Building Electron package ($PACKAGE_TYPE)" "cd electron && ./build-packages.sh $PACKAGE_TYPE && cd .." || exit 5 |
||||
|
else |
||||
|
safe_execute "Building Electron package" "cd electron && ./build-packages.sh && cd .." || exit 5 |
||||
|
fi |
||||
|
;; |
||||
|
"dev") |
||||
|
safe_execute "Starting Electron development app" "cd electron && npm run electron:start && cd .." || exit 8 |
||||
|
;; |
||||
|
*) |
||||
|
log_error "Unknown build action: $BUILD_ACTION" |
||||
|
exit 1 |
||||
|
;; |
||||
|
esac |
||||
|
|
||||
|
# Print build summary |
||||
|
case $BUILD_ACTION in |
||||
|
"package") |
||||
|
log_success "Electron package build completed successfully!" |
||||
|
if [ -d "electron/dist" ]; then |
||||
|
log_info "Package files available in: electron/dist/" |
||||
|
ls -la electron/dist/ || true |
||||
|
fi |
||||
|
;; |
||||
|
"dev") |
||||
|
log_success "Electron development build completed successfully!" |
||||
|
log_info "Electron app should now be running" |
||||
|
;; |
||||
|
esac |
||||
|
|
||||
|
print_footer "Electron Build" |
||||
|
|
||||
|
# Exit with success |
||||
|
exit 0 |
Loading…
Reference in new issue