Files
RSSuper/scripts/common.sh
Michael Freno d346b527e6
Some checks failed
CI - Multi-Platform Native / Build iOS (RSSuper) (push) Has been cancelled
CI - Multi-Platform Native / Build macOS (push) Has been cancelled
CI - Multi-Platform Native / Build Android (push) Has been cancelled
CI - Multi-Platform Native / Build Linux (push) Has been cancelled
CI - Multi-Platform Native / Build Summary (push) Has been cancelled
migration start
2026-03-29 14:12:17 -04:00

170 lines
3.5 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# RSSuper Common Build Utilities
# Shared functions used across all platform build scripts
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# Logging functions
log_info() {
echo -e "${BLUE} $1${NC}"
}
log_success() {
echo -e "${GREEN}$1${NC}"
}
log_warning() {
echo -e "${YELLOW}⚠️ $1${NC}"
}
log_error() {
echo -e "${RED}$1${NC}"
}
# Get project root directory
get_project_root() {
echo "$(cd "$(dirname "$0")/.." && pwd)"
}
# Get current timestamp in ISO format
get_timestamp() {
date -u "+%Y-%m-%dT%H:%M:%SZ"
}
# Get human-readable timestamp
get_timestamp_human() {
date -u "+%Y-%m-%d %H:%M:%S UTC"
}
# Get current git commit hash
get_git_commit() {
git rev-parse HEAD 2>/dev/null || echo "unknown"
}
# Get short git commit hash
get_git_commit_short() {
local commit=$(get_git_commit)
echo ${commit:0:7}
}
# Get current git branch
get_git_branch() {
git rev-parse --abbrev-ref HEAD 2>/dev/null || echo "unknown"
}
# Get git status (clean or modified)
get_git_status() {
if git diff --quiet 2>/dev/null && git diff --cached --quiet 2>/dev/null; then
echo "clean"
else
echo "modified"
fi
}
# Check if running in CI
is_ci() {
[ -n "$CI" ]
}
# Check if command exists
command_exists() {
command -v "$1" &> /dev/null
}
# Create a temporary file with cleanup trap
create_temp_file() {
local temp_file=$(mktemp)
trap "rm -f '$temp_file'" EXIT
echo "$temp_file"
}
# Parse command line arguments
# Usage: parse_args "option1:value1 option2:value2"
# Sets variables OPTION1, OPTION2 with values
parse_args() {
local options="$1"
shift
for opt in $options; do
local key=${opt%%:*}
local value=${opt#*:}
export "$key=$value"
done
}
# Show spinner while command runs (for nice UX)
run_with_spinner() {
local message="$1"
shift
echo -e "${BLUE}$message...${NC}"
"$@"
}
# Generate a build report
generate_build_report() {
local platform="$1"
local status="$2"
local details="$3"
local report_file="${platform}-build-report.md"
local timestamp=$(get_timestamp_human)
local commit=$(get_git_commit_short)
local branch=$(get_git_branch)
{
echo "# $platform Build Report"
echo ""
echo "| | |"
echo "|---|---|"
echo "| **Status** | $status |"
echo "| **Commit** | \`$commit\` |"
echo "| **Branch** | \`$branch\` |"
echo "| **Time** | $timestamp |"
echo ""
if [ "$status" = "FAILED" ]; then
echo "## Errors"
echo ""
echo "$details"
else
echo "## Result"
echo ""
echo "$platform build completed successfully."
fi
} > "$report_file"
echo "Build report written to: $report_file"
}
# Wait for user input (useful for debugging)
wait_for_input() {
echo "Press Enter to continue..."
read
}
# Export for use in other scripts
export -f log_info
export -f log_success
export -f log_warning
export -f log_error
export -f get_project_root
export -f get_timestamp
export -f get_timestamp_human
export -f get_git_commit
export -f get_git_commit_short
export -f get_git_branch
export -f get_git_status
export -f is_ci
export -f command_exists
export -f create_temp_file
export -f parse_args
export -f run_with_spinner
export -f generate_build_report
export -f wait_for_input