#!/bin/sh # Initialize variables SKIP_CONFIG="" PORT="" DOMAIN="" BUILD_MODE=false 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 ;; --build) BUILD_MODE=true 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) if $BUILD_MODE; then # Build mode 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 else # Run mode CMD="./$BUILD_OUTPUT $SKIP_CONFIG" [ -n "$PORT" ] && CMD="$CMD --port $PORT" [ -n "$DOMAIN" ] && CMD="$CMD --domain $DOMAIN" if [ ! -f "$SCRIPT_DIR/$BUILD_OUTPUT" ]; then echo "Executable not found. Building it first..." go build -o "$SCRIPT_DIR/$BUILD_OUTPUT" $GO_FILES if [ $? -ne 0 ]; then echo "Build failed! Unable to run the application." exit 1 fi fi echo "Starting application with command: $CMD" # Run the executable eval $CMD fi