135 lines
5.0 KiB
YAML
135 lines
5.0 KiB
YAML
name: Extract Archives
|
|
run-name: Extract Archives
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
push:
|
|
branches:
|
|
- master
|
|
paths:
|
|
- "cars/**" # Only run if archives in cars/ change
|
|
env:
|
|
GIT_DEFAULT_HASH: sha1
|
|
|
|
jobs:
|
|
prepare-server-content:
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Pre-initialize Repository with SHA-256
|
|
run: |
|
|
mkdir -p ${{ github.workspace }}
|
|
git init --object-format=sha256 ${{ github.workspace }}
|
|
|
|
- name: Manual Checkout (SHA-256 Force)
|
|
env:
|
|
# This token is automatically provided by Gitea/GitHub Actions
|
|
TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
run: |
|
|
# 1. Clean workspace explicitly to be safe
|
|
rm -rf ./* ./.git
|
|
|
|
# 2. Initialize specifically with SHA-256
|
|
git init --object-format=sha256
|
|
|
|
# 3. Add remote with authentication embedded
|
|
# Use the environment variable to keep the log clean
|
|
git remote add origin "https://$TOKEN@git.dapa.hu/dapa/assetto.git"
|
|
|
|
# 4. Fetch the specific branch (depth 1 for speed)
|
|
git fetch --depth=1 origin main
|
|
|
|
# 5. Checkout the branch
|
|
git checkout main
|
|
|
|
# 6. Initialize LFS and pull files
|
|
# Note: If this fails, it confirms the files are missing from the server (see below)
|
|
git lfs install
|
|
git lfs pull
|
|
|
|
- name: Manual LFS Fetch with Debugging
|
|
env:
|
|
GIT_TRACE: 1
|
|
GIT_TRANSFER_TRACE: 1
|
|
GIT_CURL_VERBOSE: 1
|
|
run: |
|
|
git lfs install
|
|
# Try to pull the specific missing files to see the real error message
|
|
git lfs fetch origin main
|
|
git lfs checkout
|
|
|
|
# steps:
|
|
# - name: Checkout Master Branch (LFS)
|
|
# uses: actions/checkout@v4
|
|
# with:
|
|
# ref: master
|
|
# lfs: true
|
|
# fetch-depth: 0
|
|
|
|
# - name: Install 7-Zip
|
|
# run: |
|
|
# sudo apt-get update
|
|
# sudo apt-get install -y p7zip-full
|
|
|
|
# - name: Process Archives
|
|
# run: |
|
|
# # 1. Define Paths
|
|
# SOURCE_ROOT="./cars"
|
|
# # This is where the server expects the files
|
|
# DEST_ROOT="./server-data/content/cars"
|
|
# mkdir -p "$DEST_ROOT"
|
|
|
|
# echo "🔍 Searching for archives in $SOURCE_ROOT..."
|
|
|
|
# # 2. Find all archives recursively (zip, 7z, rar)
|
|
# find "$SOURCE_ROOT" -type f \( -name "*.zip" -o -name "*.7z" -o -name "*.rar" \) | while read archive; do
|
|
|
|
# # Get the filename without extension (e.g., "cars/groupA/my_car.zip" -> "my_car")
|
|
# filename=$(basename -- "$archive")
|
|
# car_name="${filename%.*}"
|
|
|
|
# echo "--------------------------------------"
|
|
# echo "Processing: $car_name"
|
|
|
|
# # # Create a temp directory for extraction
|
|
# # temp_dir=$(mktemp -d)
|
|
|
|
# # # 3. Extract contents
|
|
# # # -y: assume yes on all queries
|
|
# # # -o: output directory (no space after -o)
|
|
# # 7z x "$archive" -o"$temp_dir" -y > /dev/null
|
|
|
|
# # # 4. FILTERING LOGIC (The "Server" optimization)
|
|
# # echo "Cleaning up unnecessary server files..."
|
|
|
|
# # # Remove heavy textures and previews (recursive)
|
|
# # find "$temp_dir" -type f \( -name "*.png" -o -name "*.jpg" -o -name "*.jpeg" -o -name "*.dds" -o -name "*.kn5" -o -name "*.bmp" \) -delete
|
|
|
|
# # # Remove the 'physics/csp' folder if standard physics are preferred (Optional - comment out if needed)
|
|
# # # rm -rf "$temp_dir/physics/csp"
|
|
|
|
# # # 5. Move to final Server Directory
|
|
# # target_dir="$DEST_ROOT/$car_name"
|
|
|
|
# # # Clean old version if exists
|
|
# # if [ -d "$target_dir" ]; then
|
|
# # rm -rf "$target_dir"
|
|
# # fi
|
|
# # mkdir -p "$target_dir"
|
|
|
|
# # # Move files
|
|
# # cp -r "$temp_dir"/* "$target_dir"/
|
|
|
|
# # # Cleanup temp
|
|
# # rm -rf "$temp_dir"
|
|
|
|
# echo "✅ Installed to: $target_dir"
|
|
# done
|
|
|
|
# - name: Verify Installation
|
|
# run: |
|
|
# echo "📁Final Server Directory Structure:"
|
|
# # Show directory tree 3 levels deep to verify structure without spamming files
|
|
# find ./server-data -maxdepth 3 -not -path '*/.*'
|