mirror of
https://github.com/rojo-rbx/rojo.git
synced 2026-10-22 21:41:37 +00:00
120 lines
3.7 KiB
Bash
120 lines
3.7 KiB
Bash
#!/bin/bash
|
|
# sync-sources.sh
|
|
# Syncs external documentation from GitHub repos into the rules directory
|
|
|
|
set -e
|
|
|
|
# Get script directory (workspace root)
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
|
|
# Colors for output
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
CYAN='\033[0;36m'
|
|
GRAY='\033[0;90m'
|
|
NC='\033[0m' # No Color
|
|
|
|
echo -e "${CYAN}Starting sync process...${NC}"
|
|
|
|
# Function to sync a single repo
|
|
sync_repo() {
|
|
local owner="$1"
|
|
local repo="$2"
|
|
local branch="$3"
|
|
local subdir="$4"
|
|
local target="$5"
|
|
|
|
local zip_url="https://github.com/$owner/$repo/archive/refs/heads/$branch.zip"
|
|
local temp_zip=$(mktemp)
|
|
local temp_extract=$(mktemp -d)
|
|
local target_path="$SCRIPT_DIR/$target"
|
|
local extracted_folder="$temp_extract/$repo-$branch"
|
|
local source_subdir="$extracted_folder/$subdir"
|
|
|
|
echo ""
|
|
echo -e "${YELLOW}Processing: $repo${NC}"
|
|
echo " Source: $owner/$repo -> $subdir/"
|
|
echo " Target: $target/"
|
|
|
|
# Download zip archive
|
|
echo -e "${GRAY} Downloading archive...${NC}"
|
|
curl -sL "$zip_url" -o "$temp_zip"
|
|
|
|
# Extract zip
|
|
echo -e "${GRAY} Extracting...${NC}"
|
|
unzip -q "$temp_zip" -d "$temp_extract"
|
|
|
|
# Verify source directory exists
|
|
if [ ! -d "$source_subdir" ]; then
|
|
echo -e "${RED} ERROR: Source subdirectory '$subdir' not found in archive${NC}"
|
|
rm -f "$temp_zip"
|
|
rm -rf "$temp_extract"
|
|
exit 1
|
|
fi
|
|
|
|
# Remove old target directory contents
|
|
if [ -d "$target_path" ]; then
|
|
echo -e "${GRAY} Removing old files...${NC}"
|
|
rm -rf "$target_path"
|
|
fi
|
|
|
|
# Create target directory
|
|
mkdir -p "$target_path"
|
|
|
|
# Copy new files
|
|
echo -e "${GRAY} Copying new files...${NC}"
|
|
cp -r "$source_subdir"/* "$target_path/"
|
|
|
|
# Clean up temp files
|
|
echo -e "${GRAY} Cleaning up temp files...${NC}"
|
|
rm -f "$temp_zip"
|
|
rm -rf "$temp_extract"
|
|
|
|
echo -e "${GREEN} Done!${NC}"
|
|
}
|
|
|
|
# Function to download a single file
|
|
download_file() {
|
|
local url="$1"
|
|
local target="$2"
|
|
|
|
local target_path="$SCRIPT_DIR/$target"
|
|
local file_name=$(basename "$target")
|
|
|
|
echo ""
|
|
echo -e "${YELLOW}Processing: $file_name${NC}"
|
|
echo " Source: $url"
|
|
echo " Target: $target"
|
|
|
|
echo -e "${GRAY} Downloading...${NC}"
|
|
mkdir -p "$(dirname "$target_path")"
|
|
curl -sL "$url" -o "$target_path"
|
|
|
|
echo -e "${GREEN} Done!${NC}"
|
|
}
|
|
|
|
# Sync each repository (owner, repo, branch, subdir, target)
|
|
sync_repo "luau-lang" "rfcs" "master" "docs" "rules/luau-rfcs"
|
|
sync_repo "luau-lang" "site" "master" "src/content/docs" "rules/luau"
|
|
sync_repo "Roblox" "creator-docs" "main" "content" "rules/roblox"
|
|
sync_repo "centau" "vide" "main" "docs" "rules/vide"
|
|
|
|
# Download single files
|
|
#download_file "https://raw.githubusercontent.com/UserGeneratedLLC/rojo/refs/heads/master/.cursor/rules/atlas-project.mdc" "rules/atlas-project.mdc"
|
|
|
|
# Roblox Full API Dump (dynamic: resolve latest build GUID first)
|
|
echo ""
|
|
echo -e "${YELLOW}Processing: Full-API-Dump.json${NC}"
|
|
latest_meta=$(curl -sL "https://raw.githubusercontent.com/RobloxAPI/build-archive/master/data/production/latest.json")
|
|
guid=$(echo "$latest_meta" | grep -o '"GUID":"[^"]*"' | cut -d'"' -f4)
|
|
version=$(echo "$latest_meta" | grep -o '"Version":"[^"]*"' | cut -d'"' -f4)
|
|
echo " GUID: $guid Version: $version"
|
|
dump_url="https://raw.githubusercontent.com/RobloxAPI/build-archive/master/data/production/builds/$guid/Full-API-Dump.json"
|
|
dump_target="$SCRIPT_DIR/rules/roblox-api/Full-API-Dump.json"
|
|
mkdir -p "$(dirname "$dump_target")"
|
|
curl -sL "$dump_url" -o "$dump_target"
|
|
echo -e "${GREEN} Done!${NC}"
|
|
|
|
echo ""
|
|
echo -e "${GREEN}Sync completed successfully!${NC}"
|