#!/bin/sh # Initialize variables SKIP_CONFIG="" PORT="" DOMAIN="" BUILD_OUTPUT="qgato" # Parse arguments while [ $# -gt 0 ]; do case $1 in --port) PORT=$2 shift 2 ;; --domain) DOMAIN=$2 shift 2 ;; --skip-config-check) SKIP_CONFIG="--skip-config-check" shift ;; *) echo "Unknown argument: $1" exit 1 ;; esac done # Get the directory of the script SCRIPT_DIR=$(dirname "$0") # List all Go files in the script directory (excluding test files) GO_FILES=$(find "$SCRIPT_DIR" -name '*.go' ! -name '*_test.go' -print) # Always delete and rebuild the binary echo "Cleaning previous build..." rm -f "$SCRIPT_DIR/$BUILD_OUTPUT" echo "Building application..." go build -o "$SCRIPT_DIR/$BUILD_OUTPUT" $GO_FILES if [ $? -eq 0 ]; then echo "Build successful! Output: $SCRIPT_DIR/$BUILD_OUTPUT" else echo "Build failed!" exit 1 fi # Construct the run command CMD="$SCRIPT_DIR/$BUILD_OUTPUT $SKIP_CONFIG" [ -n "$PORT" ] && CMD="$CMD --port $PORT" [ -n "$DOMAIN" ] && CMD="$CMD --domain $DOMAIN" echo "Starting application with command: $CMD" # Run the built executable eval $CMD