initial commit
This commit is contained in:
145
build_and_run.sh
Executable file
145
build_and_run.sh
Executable file
@@ -0,0 +1,145 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
export PLAYDATE_SDK_PATH="/home/ut3usw/PlaydateSDK-2.5.0"
|
||||
|
||||
# Check for color by variable and tput command
|
||||
if [[ -z $NOCOLOR && -n $(command -v tput) ]]; then
|
||||
RED=$(tput setaf 1)
|
||||
CYN=$(tput setaf 6)
|
||||
YEL=$(tput setaf 3)
|
||||
RST=$(tput sgr0)
|
||||
fi
|
||||
|
||||
function display_help() {
|
||||
printf "%s\n\n" "${0} build|run|-h|--help|"
|
||||
printf "%-16s\n" "build: Builds the project and runs the Simulator"
|
||||
printf "%-16s\n" "run : Skips building the project and runs the Simulator"
|
||||
printf "\n"
|
||||
printf "%s\n\n" "Set NOCOLOR=1 to disable terminal coloring"
|
||||
exit 0
|
||||
}
|
||||
|
||||
# We don't need fancy flags/operators for two commands
|
||||
case $1 in
|
||||
"build")
|
||||
BUILD=1
|
||||
;;
|
||||
"run")
|
||||
BUILD=0
|
||||
;;
|
||||
*)
|
||||
display_help
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# Set some paths
|
||||
BUILD_DIR="./builds"
|
||||
SOURCE_DIR="./source"
|
||||
PDX_PATH="${BUILD_DIR}/$(basename $(pwd)).pdx"
|
||||
|
||||
# Logging functions
|
||||
function log() {
|
||||
printf "%s\n" "${CYN}>> $1${RST}"
|
||||
}
|
||||
function log_warn() {
|
||||
printf "%s\n" "${YEL}>! $1${RST}"
|
||||
}
|
||||
function log_err() {
|
||||
printf "%s\n >> %s\n" "${RED}!! ERROR !!" "$1${RST}"
|
||||
}
|
||||
|
||||
function check_pdxinfo() {
|
||||
if [[ -f ./source/pdxinfo ]]; then
|
||||
if grep "com.organization.package" ./source/pdxinfo 2>&1 >/dev/null; then
|
||||
log_warn "PDXINFO NOTICE:"
|
||||
log_warn "Don't forget to change your unique project info in 'source/pdxinfo': 'bundleID', 'name', 'author', 'description'."
|
||||
log_warn "It's critical to change your game bundleID, so there will be no collisions with other games, installed via sideload."
|
||||
log_warn "Read more about pdxinfo here: https://sdk.play.date/Inside%20Playdate.html#pdxinfo"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
function chk_err() {
|
||||
# Check for errors in last process and bail if needed
|
||||
if [[ $? > 0 ]]; then
|
||||
log_err "There was an issue with the previous command; exiting!"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
function check_close_sim() {
|
||||
# Check if we have 'pidof'
|
||||
PIDOF=$(command -v pidof2)
|
||||
|
||||
# Prefer 'pidof'; use ps if not
|
||||
if [[ -n $PIDOF ]]; then
|
||||
SIMPID=$($PIDOF "PlaydateSimulator")
|
||||
if [[ -n $SIMPID ]]; then
|
||||
log "Found existing Simulator, closing..."
|
||||
kill -9 $SIMPID
|
||||
chk_err
|
||||
fi
|
||||
else
|
||||
SIMPID=$(ps aux | grep PlaydateSimulator | grep -v grep | awk '{print $2}')
|
||||
if [[ -n $SIMPID ]]; then
|
||||
log "Found existing Simulator, closing..."
|
||||
kill -9 $SIMPID
|
||||
chk_err
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# Create build dir
|
||||
function make_build_dir() {
|
||||
if [[ ! -d "${BUILD_DIR}" ]]; then
|
||||
log "Creating build directory..."
|
||||
mkdir -p "${BUILD_DIR}"
|
||||
chk_err
|
||||
fi
|
||||
}
|
||||
|
||||
# Clean build dir
|
||||
function clean_build_dir() {
|
||||
if [[ -d "${BUILD_DIR}" ]]; then
|
||||
log "Cleaning build directory..."
|
||||
rm -rfv "${BUILD_DIR}/*"
|
||||
chk_err
|
||||
fi
|
||||
}
|
||||
|
||||
# Compile the PDX
|
||||
function build_pdx() {
|
||||
if [[ $BUILD == 1 ]]; then
|
||||
log "Building PDX with 'pdc'..."
|
||||
$PLAYDATE_SDK_PATH/bin/pdc -sdkpath "${PLAYDATE_SDK_PATH}" "${SOURCE_DIR}" "${PDX_PATH}"
|
||||
chk_err
|
||||
fi
|
||||
}
|
||||
|
||||
# Run the PDX with Simulator
|
||||
function run_pdx() {
|
||||
if [[ -d "${PDX_PATH}" ]]; then
|
||||
log "Running PDX with Simulator..."
|
||||
$PLAYDATE_SDK_PATH/bin/PlaydateSimulator "${PDX_PATH}"
|
||||
else
|
||||
log_err "PDX doesn't exist! Please 'build' the project first!"
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
#### MAIN SCRIPT ####
|
||||
if [[ $BUILD == 1 ]]; then
|
||||
log "Attempting a build and run of PDX..."
|
||||
make_build_dir
|
||||
clean_build_dir
|
||||
check_pdxinfo
|
||||
build_pdx
|
||||
check_close_sim
|
||||
run_pdx
|
||||
else
|
||||
log "Attempting to run PDX: ${PDX_PATH}..."
|
||||
check_close_sim
|
||||
run_pdx
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user