Skip to content

Psychostout/WoW_Script_Downloader

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

4 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐ŸŽฎ WoW Script Downloader

A configurable bash script to download scripts from any World of Warcraft private server GitHub repos. Add your repos, run the script, done.

The script comes with 4 TrinityCore repos pre-configured. You can add more, remove some, or swap them out entirely.


๐Ÿ“ What You Get

WoW_Script_Downloader/
โ”œโ”€โ”€ download_wow_scripts.sh     โ† the script
โ”œโ”€โ”€ README.md                   โ† this file
โ”‚
โ”‚   (created after running the script โ†“)
โ”‚
โ”œโ”€โ”€ Scripts/                    โ† all downloaded scripts
โ”‚   โ”œโ”€โ”€ TrinityCore_Master/
โ”‚   โ”‚   โ””โ”€โ”€ master/src/server/scripts/...
โ”‚   โ”œโ”€โ”€ TrinityCore_3.3.5/
โ”‚   โ”‚   โ””โ”€โ”€ 3.3.5/src/server/scripts/...
โ”‚   โ”œโ”€โ”€ TrinityCore_CataClassic/
โ”‚   โ”‚   โ””โ”€โ”€ cata_classic/src/server/scripts/...
โ”‚   โ””โ”€โ”€ TrinityCore_WotLKClassic/
โ”‚       โ””โ”€โ”€ wotlk_classic/src/server/scripts/...
โ””โ”€โ”€ Scripts_log.txt             โ† timestamped log of everything downloaded

โœ… Requirements

Tool Why Install
Git Clones repos via sparse checkout git-scm.com
Bash Runs the script Built into macOS/Linux, use Git Bash on Windows

Windows Users

Install Git for Windows (includes Git Bash). Right-click in the folder โ†’ Git Bash Here โ†’ run the script.

macOS / Linux

Open Terminal, cd into this folder, and run.


๐Ÿš€ Quick Start

Step 1 โ€” Make the script executable (first time only)

chmod +x download_wow_scripts.sh

Step 2 โ€” Run it

./download_wow_scripts.sh

That's it. It downloads all repos listed in the script into the Scripts/ folder and writes Scripts_log.txt.

Step 3 โ€” Check the results

  • Browse the Scripts/ folder for your files.
  • Open Scripts_log.txt to see what was downloaded, timestamps, and file counts.

๐Ÿ“‹ What's Pre-Configured (4 repos)

The script comes ready to run with these 4 TrinityCore current branches:

# Group Name Branch What it is
1 TrinityCore_Master master The War Within โ€” latest mainline
2 TrinityCore_3.3.5 3.3.5 WotLK 3.3.5a maintenance branch
3 TrinityCore_CataClassic cata_classic Cataclysm Classic
4 TrinityCore_WotLKClassic wotlk_classic WotLK Classic

โš™๏ธ How to Configure โ€” Add, Remove, or Change Repos

Open download_wow_scripts.sh in any text editor and find the REPOS=() section near the top (starts around line 30).

Entry format

Each repo is one line inside the REPOS=( ... ) block, using pipe (|) separators:

"GROUP_NAME|BRANCH|REPO_URL|SPARSE_PATH"
Field Required What it means
GROUP_NAME โœ… Yes Folder name inside Scripts/. Use anything โ€” no spaces.
BRANCH โœ… Yes Git branch, tag, or release name to download.
REPO_URL โœ… Yes Full .git URL of the repository.
SPARSE_PATH โŒ Optional Folder path inside the repo to download. If left blank, defaults to src/server/scripts.

โž• How to ADD a repo

Add a new line inside the REPOS=( ... ) block:

REPOS=(
    "TrinityCore_Master|master|https://github.com/TrinityCore/TrinityCore.git"
    "TrinityCore_3.3.5|3.3.5|https://github.com/TrinityCore/TrinityCore.git"
    "TrinityCore_CataClassic|cata_classic|https://github.com/TrinityCore/TrinityCore.git"
    "TrinityCore_WotLKClassic|wotlk_classic|https://github.com/TrinityCore/TrinityCore.git"

    # --- I added this one ---
    "AzerothCore_Master|master|https://github.com/azerothcore/azerothcore-wotlk.git"
)

With a custom path (if scripts aren't in src/server/scripts):

    "My_Custom|main|https://github.com/username/repo.git|src/custom/scripts"

There are also pre-written example lines commented out inside the script โ€” just remove the # to enable them:

    # Uncomment the line below to enable AzerothCore:
    # "AzerothCore_Master|master|https://github.com/azerothcore/azerothcore-wotlk.git"

Remove the # to make it active:

    "AzerothCore_Master|master|https://github.com/azerothcore/azerothcore-wotlk.git"

โž– How to REMOVE a repo

Option A โ€” Comment it out (put # in front):

    # "TrinityCore_WotLKClassic|wotlk_classic|https://github.com/TrinityCore/TrinityCore.git"

Option B โ€” Delete the entire line.

Either way, that repo won't be downloaded on the next run.


โœ๏ธ How to CHANGE a repo

Edit the values on its line. For example, to change a branch from master to main:

Before:

    "TrinityCore_Master|master|https://github.com/TrinityCore/TrinityCore.git"

After:

    "TrinityCore_Master|main|https://github.com/TrinityCore/TrinityCore.git"

๐Ÿ“ Full examples

Example 1 โ€” Only 2 repos:

REPOS=(
    "TrinityCore_Master|master|https://github.com/TrinityCore/TrinityCore.git"
    "TrinityCore_3.3.5|3.3.5|https://github.com/TrinityCore/TrinityCore.git"
)

Example 2 โ€” 6 repos with mixed paths:

REPOS=(
    "TrinityCore_Master|master|https://github.com/TrinityCore/TrinityCore.git"
    "TrinityCore_3.3.5|3.3.5|https://github.com/TrinityCore/TrinityCore.git"
    "TrinityCore_CataClassic|cata_classic|https://github.com/TrinityCore/TrinityCore.git"
    "TrinityCore_WotLKClassic|wotlk_classic|https://github.com/TrinityCore/TrinityCore.git"
    "AzerothCore_Master|master|https://github.com/azerothcore/azerothcore-wotlk.git"
    "CMaNGOS_WotLK|master|https://github.com/cmangos/mangos-wotlk.git|src/game/ScriptMgr.cpp"
)

๐Ÿ“œ Scripts_log.txt

Every run creates a fresh Scripts_log.txt that records:

  • Timestamps for every action
  • Repo URL, branch, and sparse path used
  • File count per download
  • Skipped repos (already downloaded)
  • Warnings if a sparse path doesn't exist
  • Final summary with totals

Example log output

[2026-06-05 14:30:01] ========================================
[2026-06-05 14:30:01] Downloading: TrinityCore_Master -> master
[2026-06-05 14:30:01]   Repo:   https://github.com/TrinityCore/TrinityCore.git
[2026-06-05 14:30:01]   Path:   src/server/scripts
[2026-06-05 14:30:01]   Target: ./Scripts/TrinityCore_Master/master
[2026-06-05 14:30:01] ========================================
[2026-06-05 14:30:15]   [DONE] TrinityCore_Master/master โ€” 949 files downloaded
...
[2026-06-05 14:31:00] ============================================================
[2026-06-05 14:31:00]   ALL DONE!
[2026-06-05 14:31:00]   Downloaded: 4 repos
[2026-06-05 14:31:00]   Skipped:    0 repos (already existed)
[2026-06-05 14:31:00]   Failed:     0 repos
[2026-06-05 14:31:00]   Total files in Scripts/: 3420
[2026-06-05 14:31:00]   Saved to:   ./Scripts
[2026-06-05 14:31:00]   Log saved:  ./Scripts_log.txt
[2026-06-05 14:31:00] ============================================================

๐Ÿ”„ Re-Downloading

The script skips repos that already exist. To re-download:

Remove a single repo:

rm -rf Scripts/TrinityCore_Master

Remove everything and start fresh:

rm -rf Scripts

Then run the script again.


๐Ÿ› ๏ธ Troubleshooting

Problem Solution
command not found: git Install Git from git-scm.com
Permission denied Run chmod +x download_wow_scripts.sh
Branch not found error Check the branch name exists on the GitHub repo
Sparse path warning The repo doesn't have that folder โ€” check the 4th field or leave it blank
Nothing downloaded Check your internet connection and repo URLs
Want to update a repo Delete its folder in Scripts/ and re-run

๐Ÿ“Œ Notes

  • Uses --depth 1 for fast, shallow clones (only the latest commit)
  • Uses --sparse to only download the scripts folder, not the entire repo
  • Each repo is isolated in its own subfolder โ€” no conflicts
  • Safe to re-run anytime โ€” skips anything that already exists
  • Works on macOS, Linux, and Windows (via Git Bash)

Made for the WoW private server development community.

About

A configurable bash script to download scripts from any World of Warcraft private server GitHub repos. Add your repos, run the script, done.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages