limboai/gdextension/setup_gdextension.sh

139 lines
4.0 KiB
Bash
Raw Permalink Normal View History

#!/bin/bash
## This script creates project structure needed for LimboAI development using GDExtension.
## Works only on Unix-likes. You can still use the directory layout below, if you are on Windows.
##
## Instructions:
## 1) Create the project root directory, name doesn't matter.
## 2) Inside the project root directory, clone the limboai repository:
## git clone https://github.com/limbonaut/limboai
## 3) From the project root directory, run:
## bash ./limboai/gdextension/setup_gdextension.sh
##
## Directory layout:
## project/ -- call this script from here, directory name doesn't matter.
## project/limboai/ -- LimboAI repository should be here after you clone it.
## project/godot-cpp/ -- will be created by this script.
## project/demo/ -- symbolic link that will be created by this script.
## project/SConstruct -- symbolic link that will be created by this script.
##
## Dependencies: bash, git, python3.
# Script Settings
GODOT_CPP_VERSION=4.2
PYTHON=python
# Colors
HIGHLIGHT_COLOR='\033[1;36m' # Light Cyan
NC='\033[0m' # No Color
ERROR_COLOR="\033[0;31m" # Red
usage() { echo "Usage: $0 [--copy-demo]"; }
msg () { echo -e "$@"; }
highlight() { echo -e "${HIGHLIGHT_COLOR}$@${NC}"; }
error () { echo -e "${ERROR_COLOR}$@${NC}" >&2; }
if [ ! -d "${PWD}/limboai/" ]; then
error Aborting: \"limboai\" subdirectory is not found.
msg Tip: Run this script from the project root directory with limboai repository cloned into \"limboai\" subdirectory.
msg Command: bash ./limboai/gdextension/setup_gdextension.sh
exit 1
fi
# Interrupt execution and exit on Ctrl-C
trap exit SIGINT
set -e
copy_demo=0
# Parsing arguments
for i in "$@"
do
case "${i}" in
--copy-demo)
copy_demo=1
shift
;;
*)
usage
;;
esac
done
highlight Setup started.
if [ ! -d "${PWD}/godot-cpp/" ]; then
highlight -- Cloning godot-cpp...
git clone -b ${GODOT_CPP_VERSION} https://github.com/godotengine/godot-cpp
highlight -- Finished cloning godot-cpp.
else
highlight -- Skipping \"godot-cpp\". Directory already exists!
fi
if [ ! -f "${PWD}/SConstruct" ]; then
ln -s limboai/gdextension/SConstruct SConstruct
highlight -- Linked SConstruct.
else
highlight -- Skipping \"SConstruct\". File already exists!
fi
if [ ! -e "${PWD}/demo" ]; then
if [ ${copy_demo} == 1 ]; then
cp -r limboai/demo demo
highlight -- Copied demo.
else
ln -s limboai/demo demo
highlight -- Linked demo project.
fi
else
highlight -- Skipping \"demo\". File already exists!
fi
# if [ -d "${PWD}/demo/" ]; then
# highlight -- Demo project exists. Archiving...
# backup_version=1
# backup_dir="${PWD}/demo.old${backup_version}"
# while [ -d "${backup_dir}" ]; do
# ((backup_version++))
# backup_dir="${PWD}/demo.old${backup_version}"
# done
# mv demo/ ${backup_dir}
# highlight -- Demo project archived as \"$(basename ${backup_dir})\".
# fi
# if [ ! -d "${PWD}/demo/" ]; then
# cp -r limboai/demo demo
# highlight -- Copied demo project.
# else
# error Error: \"demo\" directory exists!
# exit 2
# fi
if [ ! -e "${PWD}/limboai/demo/addons/limboai/bin/limboai.gdextension" ]; then
ls -l
mkdir -p ./limboai/demo/addons/limboai/bin/
cd ./limboai/demo/addons/limboai/bin/
ln -s ../../../../gdextension/limboai.gdextension limboai.gdextension || ln -s ../../../../limboai/gdextension/limboai.gdextension limboai.gdextension
ls -l
cd -
highlight -- Linked limboai.gdextension.
else
highlight -- Skipping limboai.gdextension. File already exists!
fi
if [ ! -e "${PWD}/limboai/demo/addons/limboai/icons/" ]; then
cd ./limboai/demo/addons/limboai/
ln -s ../../../icons icons || ln -s ../../../limboai/icons icons
cd -
highlight -- Linked icons.
else
highlight -- Skipping linking icons. File already exists!
fi
${PYTHON} limboai/gdextension/update_icons.py --silent
highlight -- Icon declarations updated.
highlight Setup complete.