rojo/syncback.sh

58 lines
1.5 KiB
Bash

#!/bin/sh
set -e
ProjectRbxl="Project.rbxl"
ProjectJsonFile="default.project.json"
# Check for clean flag and filter it out
DoClean=false
FilteredArgs=""
for Arg in "$@"; do
if [ "$Arg" = "clean" ]; then
DoClean=true
else
FilteredArgs="$FilteredArgs $Arg"
fi
done
# Load .env file (auto-export all variables)
if [ -f ".env" ]; then
set -a
. ./.env
set +a
fi
# Extract PlaceId from project json (first number after servePlaceIds line)
PlaceId=$(grep -A1 'servePlaceIds' "$ProjectJsonFile" | grep -o '[0-9]\+')
echo "PlaceId: $PlaceId"
# Download rbxl from Roblox
Url="https://assetdelivery.roblox.com/v1/asset/?id=$PlaceId"
echo "Downloading $Url..."
curl -fSL --compressed -o "$ProjectRbxl" -H "Cookie: .ROBLOSECURITY=${ROBLOSECURITY}" "$Url"
# Delete src/ completely and recreate directory structure if --clean specified
if [ "$DoClean" = true ]; then
echo "Cleaning src/ directory..."
rm -rf src
mkdir -p src/ReplicatedFirst
mkdir -p src/ReplicatedStorage
mkdir -p src/ServerScriptService
mkdir -p src/ServerStorage
mkdir -p src/StarterPlayer/StarterCharacterScripts
mkdir -p src/StarterPlayer/StarterPlayerScripts
mkdir -p src/Workspace
fi
if [ -z "$FilteredArgs" ]; then
rojo syncback --non-interactive --input "$ProjectRbxl" "$ProjectJsonFile"
else
# shellcheck disable=SC2086
rojo syncback --non-interactive $FilteredArgs --input "$ProjectRbxl" "$ProjectJsonFile"
fi
# Stage all changes
if [ "$DoClean" = true ]; then
echo "Running git add..."
git add .
fi