├── API ├── Addons │ ├── TBC │ │ └── DIR │ ├── Lichking │ │ └── DIR │ ├── Pandaria │ │ └── DIR │ ├── Vanilla │ │ └── DIR │ └── Cataclysm │ │ └── DIR ├── ElvUI │ ├── TBC │ │ └── DIR │ ├── Cataclysm │ │ └── DIR │ ├── Lichking │ │ └── DIR │ ├── Pandaria │ │ └── DIR │ └── Vanilla │ │ └── DIR └── WeakAuras │ ├── TBC │ └── DIR │ ├── Cataclysm │ └── DIR │ ├── Lichking │ ├── DIR │ └── Baade Rogue poisons │ │ └── Baade Rogue poisons.txt │ ├── Pandaria │ └── DIR │ └── Vanilla │ └── DIR ├── media ├── logo.png ├── preview.png └── preview-old.png ├── package.json ├── .gitignore ├── .github ├── workflows │ ├── pr-validation.yml │ └── api-repo.yml ├── ISSUE_TEMPLATE │ ├── feature_request.md │ └── bug_report.md ├── FUNDING.yml └── PULL_REQUEST_TEMPLATE.md ├── LICENCE ├── post-template.md ├── README-Desktop-App.md ├── tests └── validate.test.js └── README.md /API/Addons/TBC/DIR: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /API/ElvUI/TBC/DIR: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /API/Addons/Lichking/DIR: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /API/Addons/Pandaria/DIR: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /API/Addons/Vanilla/DIR: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /API/ElvUI/Cataclysm/DIR: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /API/ElvUI/Lichking/DIR: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /API/ElvUI/Pandaria/DIR: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /API/ElvUI/Vanilla/DIR: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /API/WeakAuras/TBC/DIR: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /API/Addons/Cataclysm/DIR: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /API/WeakAuras/Cataclysm/DIR: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /API/WeakAuras/Lichking/DIR: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /API/WeakAuras/Pandaria/DIR: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /API/WeakAuras/Vanilla/DIR: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /media/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PentSec/MaddonsManager/HEAD/media/logo.png -------------------------------------------------------------------------------- /media/preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PentSec/MaddonsManager/HEAD/media/preview.png -------------------------------------------------------------------------------- /media/preview-old.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PentSec/MaddonsManager/HEAD/media/preview-old.png -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "devDependencies": { 3 | "fs-extra": "^11.2.0", 4 | "jest": "^29.7.0" 5 | }, 6 | "scripts": { 7 | "test": "jest" 8 | }, 9 | "jest": { 10 | "testEnvironment": "node", 11 | "testMatch": [ 12 | "**/tests/**/*.test.js" 13 | ] 14 | } 15 | } -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | MaddonsManager.github.io.code-workspace 10 | .react-router/ 11 | CHANGELOGS 12 | 13 | .env 14 | .env.production 15 | .env.development 16 | node_modules 17 | dist 18 | dist-ssr 19 | *.local 20 | 21 | # Editor directories and files 22 | .vscode/* 23 | !.vscode/extensions.json 24 | .idea 25 | .DS_Store 26 | *.suo 27 | *.ntvs* 28 | *.njsproj 29 | *.sln 30 | *.sw? 31 | 32 | -------------------------------------------------------------------------------- /.github/workflows/pr-validation.yml: -------------------------------------------------------------------------------- 1 | name: Validate Pull Request 2 | 3 | on: 4 | pull_request: 5 | paths: 6 | - 'API/Maddons.json' 7 | - 'API/ElvUI.json' 8 | - 'API/WeakAuras.json' 9 | - 'API/**' 10 | 11 | jobs: 12 | validate: 13 | runs-on: ubuntu-latest 14 | 15 | steps: 16 | - name: Checkout code 17 | uses: actions/checkout@v4 18 | 19 | - name: Setup Node.js 20 | uses: actions/setup-node@v3 21 | with: 22 | node-version: '20' 23 | 24 | - name: Install dependencies 25 | run: npm install 26 | 27 | - name: Run Tests 28 | run: npx jest 29 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: "[FEATURE]" 5 | labels: enhancement 6 | assignees: PentSec 7 | 8 | --- 9 | 10 | **Is your feature request related to a problem? Please describe.** 11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 12 | 13 | **Describe the solution you'd like** 14 | A clear and concise description of what you want to happen. 15 | 16 | **Describe alternatives you've considered** 17 | A clear and concise description of any alternative solutions or features you've considered. 18 | 19 | **Additional context** 20 | Add any other context or screenshots about the feature request here. 21 | -------------------------------------------------------------------------------- /LICENCE: -------------------------------------------------------------------------------- 1 | This work is licensed under the Creative Commons Attribution-NonCommercial 4.0 International License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc/4.0/. 2 | 3 | You are free to: 4 | - Share — copy and redistribute the material in any medium or format 5 | - Adapt — remix, transform, and build upon the material 6 | 7 | Under the following terms: 8 | - Attribution — You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use. 9 | - NonCommercial — You may not use the material for commercial purposes. 10 | 11 | No additional restrictions — You may not apply legal terms or technological measures that legally restrict others from doing anything the license permits. 12 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] 4 | patreon: # Replace with a single Patreon username 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: # Replace with a single Ko-fi username 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry 12 | polar: # Replace with a single Polar username 13 | buy_me_a_coffee: # Replace with a single Buy Me a Coffee username 14 | thanks_dev: # Replace with a single thanks.dev username 15 | custom: ['https://www.paypal.me/Jeffreysfu/1'] 16 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: "[BUG]" 5 | labels: bug 6 | assignees: PentSec 7 | 8 | --- 9 | 10 | **Describe the bug** 11 | A clear and concise description of what the bug is. 12 | 13 | **To Reproduce** 14 | Steps to reproduce the behavior: 15 | 1. Go to '...' 16 | 2. Click on '....' 17 | 3. Scroll down to '....' 18 | 4. See error 19 | 20 | **Expected behavior** 21 | A clear and concise description of what you expected to happen. 22 | 23 | **Screenshots** 24 | If applicable, add screenshots to help explain your problem. 25 | 26 | **Desktop (please complete the following information):** 27 | - OS: [e.g. iOS] 28 | - Browser [e.g. chrome, safari] 29 | - Version [e.g. 22] 30 | 31 | **Smartphone (please complete the following information):** 32 | - Device: [e.g. iPhone6] 33 | - OS: [e.g. iOS8.1] 34 | - Browser [e.g. stock browser, safari] 35 | - Version [e.g. 22] 36 | 37 | **Additional context** 38 | Add any other context about the problem here. 39 | -------------------------------------------------------------------------------- /post-template.md: -------------------------------------------------------------------------------- 1 | # WRITE HERE YOUR ADDON TITLE DESCRIPTION 2 | 3 | ## Overview 4 | 5 | 6 | --- 7 | 8 | ## Key Features 9 | 10 | 1. **In-Game Addon Management** 11 | 12 | 13 | 2. **Profile Support** 14 | 15 | 16 | 17 | 3. **User-Friendly Interface** 18 | 19 | 20 | 4. **Configuration Options** 21 | 22 | 23 | 5. **Enhanced Debugging Tools** 24 | 25 | --- 26 | 27 | ## How to Use 28 | 29 | 1. **Installation** 30 | - Download the addon from a trusted source. 31 | - Extract the folder to your WoW `Interface/AddOns` directory. 32 | - Make sure it is enabled in the in-game AddOns menu. 33 | 34 | 2. **Accessing the Panel** 35 | 36 | 37 | 3. **Managing Addons** 38 | 39 | 40 | 4. **Creating Profiles** 41 | 42 | 43 | --- 44 | 45 | ## Benefits 46 | 47 | 48 | --- 49 | 50 | ## Common Issues and Troubleshooting 51 | 52 | 1. **Addon Changes Not Applying** 53 | - text 54 | 55 | 2. **Outdated Addon Warnings** 56 | - text 57 | 58 | 3. **Performance Issues** 59 | - text 60 | 61 | --- 62 | 63 | ## changelog 64 | 65 | 66 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | 4 | 5 | ## Requirements 6 | Unless explicitly specified otherwise by a **owner**, **helper** or in the requirement description, your addons, ElvUI or WeakAuras **MUST** pass **ALL** the indicated requirements below. 7 | 8 | 9 | - [ ] My final estructure of Folders and files is a correct one. 10 | ```bash 11 | ├── API 12 | │ ├── Addons 13 | │ │ ├── Lichking 14 | │ │ │ ├── Addon-name3.3.5 15 | │ │ │ │ ├── post.md 16 | │ │ │ │ ├── Addon-name3.3.5.webp 17 | │ │ │ │ └── Addon-name3.3.5.zip 18 | │ │ │ ├── Addon-name3.3.5.json 19 | ``` 20 | ```bash 21 | ├── API 22 | │ ├── Elvui/ or WeakAuras/ 23 | │ │ ├── Lichking/ Cataclysm/ Pandarian/ Vanilla/ TBC/ 24 | │ │ │ ├── Elvui-name3.3.5.zip 25 | │ │ │ │ ├── post.md 26 | │ │ │ │ ├── Elvui-name3.3.5.webp 27 | │ │ │ │ └── Elvui-name3.3.5.zip 28 | │ │ │ ├── Elvui-name3.3.5.json 29 | ``` 30 | - [ ] My file's is in the `Folder` and is in the `JSON` format. 31 | - [ ] The content of json name is all lowercased and alphanumeric. 32 | - [ ] The name of folder must be the same as the file_name in the json. 33 | - [ ] The name of the file.zip must be the same as the file_name in the json. 34 | - [ ] My name of the webp image must be the same as the file_name in the json. 35 | - [ ] My PR is a WeakAuras or ElvUI profile and add the .txt with string profile with the same name as the file_name in the json. 36 | - [ ] My file_name not be spaced or special characters. 37 | - [ ] My image is a `.webp` file and optimized and size less of `51kb`. 38 | - [ ] My post.md have a good description 39 | - [ ] MY JSON EDITION IS CORRECT AND ALL THE FIELDS ARE CORRECT. I HAVE READ THE README.MD AND FOLLOWED ALL THE STEPS AND ALSO ALL THE SENSITIVITY CASES IN ROLE, EXPANSION, TAGS, CLASSES 40 | -------------------------------------------------------------------------------- /API/WeakAuras/Lichking/Baade Rogue poisons/Baade Rogue poisons.txt: -------------------------------------------------------------------------------- 1 | !WA:2!LAvFZTXrz8kulj(Oq9lnbsFzgnU4qtbCCuCmHqPuFosXk12Y5KCSBjGU3wPBRpD3LD3tYYafSOum0cdiE)DQyGzyg(l9rWFcEgnm9dG)i4pb8S7DYXXTDOm8ps7(S7Z7p)(TxM6t2Cs3j5gZp7CZo3KU7)CSoLRxNtezyTimonmySb0G6HSMwcCJ2rwboEHSImRMKQDIi2vwYOqH16zfqtUXc6nTObf1f4H6bHbKHUXm1j1KIyCItyGlVlXIRmaODGCzfbJe0q4DgdUWIjkcJbAWNaEC4tI))PoJDDAaL7DAX5JPUdIDRE7TFT7x5Qx6o5Jz(rpTNqeXVXLVCBRgHZsdV82x3E7IBwF7RF55hyhYCjSLc9dz3otMmz7NiOGBds0evUFSfJKRySVFUn9OcInN0eldgxbRoxTpp22G0aZeUgZYrMs8f0X4sObpHgmUwFrOtAr7STUxQLRq3L8y9AWcJJkHzE0Zvkqqy1TCi3tUNFVfTP(urNARhs5Hbve0GgdTTC22LfgLeNzZMD9SZn71oIkvnWY)UjoHAN4cVbjnf0cbc7LkSw1cghKCusVCSb1L9lSgBjSYY2jTdBllqLUzVJRp9LTgQkX0SX11Pn0omXq6Pru046(0D31I5MRAyOVGgLwslfGMmBFMQajBSgQCw3p0YTOTWYNeioVrZyufndhFlo)8W8A6CS8KSiI4ixm0kwG5s5OKWORGrB0aZ3N6I9Ids3OXsx8wDr189l5Y1GXmSWbT86XydXoY3Qd23iTqVAVmXYx413LyhxVUm0ylxyL1lUXkhIDu1vQGhq3zqTLwSs1AvQUOr1JpADgbpYOY6fwzfJaSkY1m4oy6KDAQB0ZQBz5sYze2iMKls1b55E(2wiCjGCjBEymZHytBgfYe94e)6QEemZKT(3BnPZlS)fHpwgmW4wcjiH4bpQg8yWhhoZcWzp9Wo8eVpjJFAjhTnHeTOSwkmKGopyIb(0xzlJnUIXn9Vnmf8K9PyNTIkWEMhbE(35XHpdCb4PUX5HXgIjTC0t25cC3FQOlii7iQP(jHcOgpDbOfnLso2UcLiFNnPUcp9fXTdtgh3kDmByQ(bcvTV8gvxP0AfIMujM7z5g2(vtV6rjxLUdXvzU96DSUrJxKr3n3DITCLtX5Qw9a1zVEmxqR3bMjXnTXHXnzwrD3mDXHjUzuPxFXnQwU3XP10ZWtJ2rHq04NiUEaprQ4ta0IMO0ARvWOME5QvlVQrPBTC1(Q74mc0MfgJHvuPWKyTfLtT9jMpuU)(ltskJl8E9A4pkaK2sTDfAaHpHUCP5bXCYTgDfVUszY67q7yHimOmseHyGHkXEuNTrf5PbKuwFL5uuUNtTwpHkr5MkQ57bYLJklQnhhQYnfzK7htcC6S(Jo3S5VwxhKoatNap4PxaEMukr4zrMq4sWlyCIQY0u4ZcZazhZOTQjRVByyZmWxqd(Cz1LtNMdCPCjewXyM70mMLw7U1wLYDQTmHzx7klaFEnBpcTHNypdl)ipRSW11y0ajxmcPYxh(ssMfyb83w9fTruDN60wet7K1M5JAfzMxqcmnq()altJi8nOoMDXzDrhekB2fl21KCvEW1UiAlBost7tmmkFRnkaxvA(EYROi2mLmdp5Q4ZGEwbU5qJpIAa(YV0fHBObFL9p3a51XYhEfHQxwdFVP5AibJzF5U2eRiSsa6Wsrtif0GeqyuNkEHTlhyoukIrKV1IrIjSSw3r6J86kDHZcVe81S5kfgM8hw2Krol1XhUPeONl5PNC3fErTHpKBomrRLsBT9o2HtVWCrtE8UAHiU2seYM(f)QWlF4Mk3NRqIpGX0LrgCtOGkXsmPjueUvATyc4Nzc)CtONkBHFHj8lnHFvg4xNKbWVb(TWVl6tVknW9lUwCtB0JJc5sLkb)b4pc)P85NFo4LH)cYh(xH)SmoExZ)Nm)e3Ky56354AXidd)TpeZoEQzhzIuBJErDVrkJ(AK(OpFxtPBJMq(5dTivtEfB1qxY)6rG5G3aEfyLdgbKKFtIhSkmJ8vIZaR9)9Jdqz5ZbXvMFh32RU9DRVL85a4oYxbEZt8kayS)uqfuJQWgWDZaBcBbVAg412d(6W9GVbIC)MqnWeSaBK(eCYaUkksGa1HgPeFGhqnHxpdS9fEpWpryZjaSVJVjfb3hyYlXbX5GypOvwODgyNmqkzcS7hmlc8Tofdc8T3d(oPuhWBycFx47HSbWE7bDLKaW3)0WF4nnHFGj8wMWp0e23e(rMWp2eE7uyn8oWpjbnd)ujk(iKWtHHxFe(D2r43pOHQL1uZv5dRx)btwWVhHvhpoOMngnqGqc5eXhfKW)8egS))LjZpswjAQLy0Oi)hcm9Hzy4V)G5t4FOgkLTJ)Zd -------------------------------------------------------------------------------- /README-Desktop-App.md: -------------------------------------------------------------------------------- 1 |

2 | 3 | Maddons Manager 4 |

Maddons Manager

5 | 6 |

7 |
8 |

9 | GitHub Repo stars 10 | GitHub Downloads (all assets, all releases) 11 | GitHub Issues or Pull Requests 12 | GitHub last commit 13 | 14 | GitHub Release 15 | 16 | 17 | Discord 18 | 19 | 20 | 21 | > [!IMPORTANT] 22 | > 📝This project arose with the inspiration of Masterwow.net server and now takes another way, now we focus on saving and providing you with the largest amount of addons of the 3 most played versions of wow Lichking 3.3.5, Cataclysm 4. 3.4 and Pandarian 5.4.8 from today 30 Sep 2024, a new app is born that will grow with the help of the community for now being very small and basing and creating itself from the hand of free services like github. who knows where we will 23 | 24 | ### 🌟 if you think this App is useful for you, please give me a Star 🌟 25 |

26 | 27 | ## Getting Started 28 | 29 | Download the latest version from [releases](https://github.com/PentSec/MasterAddonManager/releases) 30 | 31 | ## 🔥 Features 32 | 33 | - 🔥 Addons Manager. 34 | - ⏬ Install all addons compatible with our version. 35 | - 🛂 Keep a better control of your installed addons. 36 | - 🗑️ Easy removal of addons. 37 | - 💿 Easy installation directly to folder. 38 | - 🆙 all addons are updated. 39 | - 🔎 Search for specific addons. 40 | - 🤳🏽 Filter addon by category. 41 | - 🔗 Go to the addon link to know everything about it just by clicking. 42 | 43 | and many updates are coming, roadmap coming soon... 44 | 45 | ## ⚙️ Configuration 46 | 47 | 1. 📭 Open Maddons Manager. 48 | 2. 👆🏽 Click on menu icon. 49 | 3. 👆🏽 Click on Slect wow.exe. 50 | 4. 😊 Enjoy. 51 | 52 | if you have addons that are compatible and are inside Maddons the app will recognize them as installed. 53 | From manual download go to [Maddons](https://MaddonsManager.github.io) 54 | 55 | ## 🤔 Need Help? 56 | 57 | 🪲 if you find a bug [please open an issue](https://github.com/PentSec/MasterAddonManager/issues) 58 | 59 | 💭 if you have any question or suggestion [please open a discussion](https://github.com/PentSec/MasterAddonManager/discussions) 60 | 61 | 62 | ## 📷 ScreenShots 63 | 64 | [![Image from Github](https://github.com/PentSec/MasterAddonManager/blob/main/IMAGES/preview.png?raw=true)](https://github.com/PentSec/MasterAddonManager/blob/main/IMAGES/preview.png?raw=true) 65 | 66 | --- 67 | 68 | ## 💻 PR to request a new Addon 69 | 70 | follow this template to `` a new Addon with pr on this repo [Request Addons](https://github.com/PentSec/wowAddonsAPI/issues) or via [Discord](https://discord.gg/c3NafGk8Dh) 71 | 72 | ```json 73 | { 74 | "name": "MasterMount", 75 | "folders": ["MasterMount"], 76 | "githubRepo": "https://github.com/PentSec/MasterMount", 77 | "imageUrl": "https://maddons.github.io/logo.jpg", 78 | "addonType": "Mounts/Companion", 79 | "author": "Sitoz", 80 | "description": "Addons for Searching and Viewing mount model in Masterwow.net", 81 | "lastCommitDate": "2024-06-11", 82 | "Hot": "🔥" 83 | } 84 | ``` 85 | 86 | # 📄FULL CHANGELOGS 87 | 88 | [FULL CHANGELOGS](https://github.com/PentSec/MasterAddonManager/blob/main/CHANGELOGS/CHANGELOGS.MD) 89 | 90 | 91 | ### Things to know 92 | 93 | 📁C:\Users\USER\AppData\Roaming\maddons-manager 94 | 95 | > 1 files will be stored here. 96 | 97 | 📄CONFIG.Json 98 | 99 | > this will contain information about the program. 100 | > deleting them lost the program storage about the address of your 101 | > world of warcraft folder 102 | -------------------------------------------------------------------------------- /.github/workflows/api-repo.yml: -------------------------------------------------------------------------------- 1 | name: Move to API repo 2 | 3 | on: 4 | pull_request: 5 | types: [closed] 6 | branches: 7 | - main 8 | 9 | workflow_dispatch: 10 | 11 | jobs: 12 | move-to-api-repo: 13 | runs-on: ubuntu-latest 14 | steps: 15 | # Check main code. 16 | - name: Checkout MAIN repo 17 | uses: actions/checkout@v4 18 | with: 19 | repository: PentSec/MaddonsManager 20 | token: ${{ secrets.BOT }} 21 | ref: main 22 | 23 | # Check main API Code 24 | - name: Checkout repo API-MADDONS 25 | uses: actions/checkout@v4 26 | with: 27 | repository: PentSec/API-MADDONS 28 | token: ${{ secrets.BOT }} 29 | path: API-MADDONS 30 | ref: main 31 | 32 | # Move files to API repo 33 | - name: Move files to API repo 34 | run: | 35 | # Usar rsync para mover y actualizar todos los archivos, excluyendo los archivos .json 36 | rsync -av --exclude='*.json' ./API/Addons/ ./API-MADDONS/API/Addons/ 37 | rsync -av --exclude='*.json' ./API/ElvUI/ ./API-MADDONS/API/ElvUI/ 38 | rsync -av --exclude='*.json' ./API/WeakAuras/ ./API-MADDONS/API/WeakAuras/ 39 | 40 | # Combine json 41 | - name: Combine json 42 | run: | 43 | DEST_MADDONS_JSON="./API-MADDONS/API/Maddons.json" 44 | DEST_ELVUI_JSON="./API-MADDONS/API/ElvUI.json" 45 | DEST_WEAKAURAS_JSON="./API-MADDONS/API/WeakAuras.json" 46 | 47 | TEMP_MADDONS_JSON="./temp_maddons_combined.json" 48 | TEMP_ELVUI_JSON="./temp_elvui_combined.json" 49 | TEMP_WEAKAURAS_JSON="./temp_wa_combined.json" 50 | 51 | echo "[]" > "$TEMP_MADDONS_JSON" 52 | echo "[]" > "$TEMP_ELVUI_JSON" 53 | echo "[]" > "$TEMP_WEAKAURAS_JSON" 54 | 55 | find ./API -name '*.json' | while read USER_JSON; do 56 | if [[ "$USER_JSON" == *"/Addons/"* ]]; then 57 | echo "Agregando $USER_JSON a Maddons.json" 58 | jq -s '.[0] + .[1]' "$TEMP_MADDONS_JSON" "$USER_JSON" > ./temp.json && mv ./temp.json "$TEMP_MADDONS_JSON" 59 | elif [[ "$USER_JSON" == *"/ElvUI/"* ]]; then 60 | echo "Agregando $USER_JSON a ElvUI.json" 61 | jq -s '.[0] + .[1]' "$TEMP_ELVUI_JSON" "$USER_JSON" > ./temp.json && mv ./temp.json "$TEMP_ELVUI_JSON" 62 | elif [[ "$USER_JSON" == *"/WeakAuras/"* ]]; then 63 | echo "Agregando $USER_JSON a WeakAuras.json" 64 | jq -s '.[0] + .[1]' "$TEMP_WEAKAURAS_JSON" "$USER_JSON" > ./temp.json && mv ./temp.json "$TEMP_WEAKAURAS_JSON" 65 | else 66 | echo "Archivo $USER_JSON no pertenece a ninguna categoría conocida. Ignorando." 67 | fi 68 | done 69 | 70 | jq -s '.[0] + .[1]' "$DEST_MADDONS_JSON" "$TEMP_MADDONS_JSON" > ./API-MADDONS/API/Maddons_updated.json && mv ./API-MADDONS/API/Maddons_updated.json "$DEST_MADDONS_JSON" 71 | jq -s '.[0] + .[1]' "$DEST_ELVUI_JSON" "$TEMP_ELVUI_JSON" > ./API-MADDONS/API/ElvUI_updated.json && mv ./API-MADDONS/API/ElvUI_updated.json "$DEST_ELVUI_JSON" 72 | jq -s '.[0] + .[1]' "$DEST_WEAKAURAS_JSON" "$TEMP_WEAKAURAS_JSON" > ./API-MADDONS/API/WeakAuras_updated.json && mv ./API-MADDONS/API/WeakAuras_updated.json "$DEST_WEAKAURAS_JSON" 73 | 74 | rm -f "$TEMP_MADDONS_JSON" "$TEMP_ELVUI_JSON" "$TEMP_WEAKAURAS_JSON" 75 | 76 | # Commit changes on API repo 77 | - name: Commit changes on API repo 78 | uses: cpina/github-action-push-to-another-repository@main 79 | with: 80 | source-directory: "API-MADDONS" 81 | destination-github-username: PentSec 82 | destination-repository-name: API-MADDONS 83 | user-email: "actions@github.com" 84 | user-name: "GitHub Actions" 85 | env: 86 | API_TOKEN_GITHUB: ${{ secrets.BOT }} 87 | 88 | # Clean Main repo a ready to use again. 89 | - name: Clean Main repo a ready to use again. 90 | run: | 91 | TARGET_DIRS=( 92 | "./API/Addons" 93 | "./API/ElvUI" 94 | "./API/WeakAuras" 95 | ) 96 | 97 | for DIR in "${TARGET_DIRS[@]}"; do 98 | if [ -d "$DIR" ]; then 99 | find "$DIR" -type f \( -iname "*.webp" -o -iname "*.zip" -o -iname "*.md" -o -iname "*.json" \) -exec rm -f {} \; 100 | fi 101 | done 102 | 103 | - name: Clean up API-MADDONS folder 104 | run: | 105 | rm -rf ./API-MADDONS 106 | 107 | # Push change to MAIN repo 108 | - name: Push change to MAIN repo 109 | run: | 110 | git config user.email "actions@github.com" 111 | git config user.name "GitHub Actions" 112 | git add . 113 | git commit -m "Clean main repo" 114 | git push 115 | -------------------------------------------------------------------------------- /tests/validate.test.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs-extra'); 2 | const path = require('path'); 3 | 4 | const allowedValues = { 5 | expansions: ['Cataclysm', 'Lichking', 'Pandaria', 'Vanilla', 'TBC'], 6 | tags: [ 7 | 'General', 8 | 'PvE', 9 | 'PvP', 10 | 'All Categories', 11 | 'Achievements', 12 | 'Action Bars', 13 | 'Artwork', 14 | 'Auction & Economy', 15 | 'Audio & Video', 16 | 'Bags & Inventory', 17 | 'Boss Encounters', 18 | 'Buffs & Debuffs', 19 | 'Chat & Communication', 20 | 'Class', 21 | 'Combat', 22 | 'Data Export', 23 | 'Development Tools', 24 | 'Guild', 25 | 'Libraries', 26 | 'Mail', 27 | 'Map & Minimap', 28 | 'Minigames', 29 | 'Miscellaneous', 30 | 'Professions', 31 | 'PvP', 32 | 'Quests & Leveling', 33 | 'Roleplay', 34 | 'Tooltip', 35 | 'Unit Frames', 36 | 'Companions', 37 | ], 38 | roles: ['All', 'DPS', 'TANK', 'HEALER'], 39 | classes: [ 40 | 'All', 41 | 'Rogue', 42 | 'Warrior', 43 | 'Paladin', 44 | 'Death Knight', 45 | 'Druid', 46 | 'Hunter', 47 | 'Mage', 48 | 'Monk', 49 | 'Priest', 50 | 'Shaman', 51 | 'Warlock', 52 | ], 53 | }; 54 | 55 | const readJson = (filePath) => JSON.parse(fs.readFileSync(filePath, 'utf-8')); 56 | 57 | const isValidFileName = (name) => /^[a-zA-Z0-9-_+. ]+$/.test(name); 58 | 59 | describe('validate json and folder structure', () => { 60 | const baseDirs = ['Addons', 'ElvUI', 'WeakAuras']; 61 | const basePath = path.resolve('API'); 62 | 63 | baseDirs.forEach((dir) => { 64 | test(`validate JSON files in ${dir}`, () => { 65 | const dirPath = path.join(basePath, dir); 66 | if (!fs.existsSync(dirPath)) { 67 | console.log(`Directory ${dirPath} does not exist, skipping...`); 68 | return; 69 | } 70 | 71 | const jsonFiles = fs.readdirSync(dirPath).filter((file) => file.endsWith('.json')); 72 | 73 | jsonFiles.forEach((jsonFile) => { 74 | const jsonPath = path.join(dirPath, jsonFile); 75 | const data = readJson(jsonPath); 76 | 77 | data.forEach((entry) => { 78 | const { title, file_name, expansion, tags, roles, class: classes } = entry; 79 | 80 | if (!file_name) { 81 | throw new Error(`The field file_name is required: ${JSON.stringify(entry)}`); 82 | } 83 | 84 | Object.keys(entry).forEach((key) => { 85 | expect(key).toBe(key.toLowerCase()); 86 | }); 87 | 88 | if (!isValidFileName(file_name)) { 89 | console.log(`Invalid "file_name" value: "${file_name}". Allowed characters are letters, numbers, hyphens (-), underscores (_), and spaces.`); 90 | } 91 | expect(isValidFileName(file_name)).toBe(true); 92 | 93 | if (!Array.isArray(expansion)) { 94 | if (!allowedValues.expansions.includes(expansion)) { 95 | throw new Error(`Invalid expansion "${expansion}" in ${JSON.stringify(entry)}`); 96 | } 97 | } else { 98 | expansion.forEach((value) => { 99 | expect(allowedValues.expansions).toContain(value); 100 | }); 101 | } 102 | 103 | tags.forEach((value) => expect(allowedValues.tags).toContain(value)); 104 | roles.forEach((value) => expect(allowedValues.roles).toContain(value)); 105 | classes.forEach((value) => expect(allowedValues.classes).toContain(value)); 106 | 107 | // Verify folder and file structure 108 | const folderPath = path.join(dirPath, Array.isArray(expansion) ? expansion[0] : expansion, file_name); 109 | 110 | const folderExists = fs.existsSync(folderPath); 111 | if (!folderExists) { 112 | console.log(`Folder does not exist: ${folderPath}`); 113 | } 114 | expect(folderExists).toBe(true); 115 | 116 | const expectedFiles = [`post.md`, `${file_name}.webp`, `${file_name}.zip`]; 117 | expectedFiles.forEach((file) => { 118 | const filePath = path.join(folderPath, file); 119 | const fileExists = fs.existsSync(filePath); 120 | if (!fileExists) { 121 | console.log(`File does not exist: ${filePath}`); 122 | } 123 | expect(fileExists).toBe(true); 124 | }); 125 | }); 126 | }); 127 | }); 128 | }); 129 | }); 130 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | 3 | Maddons Manager 4 |

Maddons Manager

5 | 6 |

7 |
8 |

9 | GitHub Repo stars 10 | GitHub Downloads (all assets, all releases) 11 | GitHub Issues or Pull Requests 12 | GitHub last commit 13 | 14 | GitHub Release 15 | 16 | 17 | Discord 18 | 19 | 20 | 21 | > [!IMPORTANT] 22 | > 📝This project arose with the inspiration of Masterwow.net server and now takes another way, now we focus on saving and providing you with the largest amount of addons of the 3 most played versions of wow Lichking 3.3.5, Cataclysm 4. 3.4 and Pandarian 5.4.8 from today 30 Sep 2024, a new app is born that will grow with the help of the community for now being very small and basing and creating itself from the hand of free services like github. who knows where we will 23 | 24 | ### 🌟 if you think this App is useful for you, please give me a Star 🌟 25 | 26 | Join on Discord 27 | 28 | 29 | Join our Discord! 30 |

31 | 32 | ## Getting Started 33 | 34 | 35 | 36 | ## 🔥 Features of [MaddonsManager](https://maddonsmanager.github.io/) 37 | 38 | - 🔥 Addons for private server to Lichking, Cataclysm, Pandarian. 39 | - 🔥 ElvUI profiles 40 | - 🔥 WeakAuras profiles 41 | - 📝 Alot of Guides 42 | 43 | and many updates are coming, roadmap coming soon... 44 | 45 | ## 🤔 Need Help? 46 | 47 | 🪲 if you find a bug [please open an issue](https://github.com/PentSec/MasterAddonManager/issues) 48 | 49 | 💭 if you have any question or suggestion [please open a discussion](https://github.com/PentSec/MasterAddonManager/discussions) 50 | 51 | 52 | ## 📷 ScreenShots 53 | 54 | ![image](https://github.com/user-attachments/assets/28f84d47-d1e1-4fe5-bd4d-c617397698b6) 55 | 56 | --- 57 | 58 | ## 💻 PR to add a new Addon 59 | 60 | follow this template to `include` a new Addon with pr on this repo 61 | 62 | [Fork](https://github.com/PentSec/MaddonsManager/fork) this repository and clone it locally: 63 | ```bash 64 | git clone https://github.com/PentSec/MaddonsManager.git 65 | ``` 66 | 67 | 1. Go to the [**`API/Addons/`**](https://github.com/PentSec/MaddonsManager/tree/main/API/Addons) folder and inside select you folder expansion and create new Folder with name of addon and version `/Example3.3.5/` and `Example3.3.5.json`, then put the Example3.3.5.zip file Example3.3.5.webp and post.md. 68 | - same instructions for ElvUI and WeakAuras profiles but in [API/ElvUI](https://github.com/PentSec/MaddonsManager/tree/main/API/ElvUI) and [API/WeakAuras](https://github.com/PentSec/MaddonsManager/tree/main/API/WeakAuras) and need add extra file.txt with string of profile and without .zip of course. 69 | 70 | 2. in post.md you can add Description, Guide, Screenshots, Videos, etc. all as you want and you can use [markdown](https://www.markdownguide.org/basic-syntax/) to format your text. 71 | 72 | final estructure of Folders and files: 73 | ```bash 74 | ├── API 75 | │ ├── Addons 76 | │ │ ├── Lichking/ Cataclysm/ Pandarian/ Vanilla/ TBC/ 77 | │ │ │ ├── Addon-name3.3.5.zip 78 | │ │ │ │ ├── post.md 79 | │ │ │ │ ├── Addon-name3.3.5.webp 80 | │ │ │ │ └── Addon-name3.3.5.zip 81 | │ │ │ ├── Addon-name3.3.5.json 82 | ``` 83 | ```bash 84 | ├── API 85 | │ ├── Elvui/ or WeakAuras/ 86 | │ │ ├── Lichking/ Cataclysm/ Pandarian/ Vanilla/ TBC/ 87 | │ │ │ ├── Elvui-name3.3.5.zip 88 | │ │ │ │ ├── post.md 89 | │ │ │ │ ├── Elvui-name3.3.5.webp 90 | │ │ │ │ └── Elvui-name3.3.5.zip 91 | │ │ │ ├── Elvui-name3.3.5.json 92 | ``` 93 | 94 | > [!WARNING] 95 | > 96 | > - The name of folder must be the same as the file_name in the json. 97 | > - The name of the file.zip must be the same as the file_name in the json. 98 | > - The name of the webp image must be the same as the file_name in the json. 99 | > - The name of the json must be the same as the file_name in the json. 100 | > - file_name cant be spaced or special characters. 101 | > - Remember to optimize image for web to webp, you can use [squoosh](https://squoosh.app/) or my python script. 102 | > - post.md, image.webp, .zip must be in the same folder 103 | > - Only .webp images are supported. 104 | > - The size limit for webp is **50kb**. 105 | 106 | - **JSON Template**: 107 | ```json 108 | { 109 | "title": "Your Addon Title", 110 | "file_name": "name_of_folder", 111 | "description": "short descriptions of your addons", 112 | "author": "Addons Author", 113 | "pr_author": "Your Github Username", 114 | "avatar_pr_author": "https://avatars.githubusercontent.com/u/11955573?v=4", 115 | "expansion": [ 116 | "Cataclysm" 117 | ], 118 | "tags": [ 119 | "General", 120 | "PvE", 121 | "PvP" 122 | ], 123 | "roles": [ 124 | "DPS", 125 | "TANK", 126 | "HEALER" 127 | ], 128 | "class": [ 129 | "All" 130 | ] 131 | }, 132 | ``` 133 | 134 | ## availables expansions, tags, roles, classes 135 | > [!WARNING] 136 | > 137 | > - This are cases sensitive. 138 | > - You can obtain the avatar link from your github profile right click on your avatar and copy the link. 139 | > - You can see the Author addons in the .toc file inside folder addons 140 | 141 | ```json 142 | tags: ["General", "PvE", "PvP", "All Categories", "Achievements", "Action Bars", "Artwork", "Auction & Economy", "Audio & Video", "Bags & Inventory", "Boss Encounters", "Buffs & Debuffs", "Chat & Communication", "Class", "Combat", "Data Export", "Development Tools", "Guild", "Libraries", "Mail", "Map & Minimap", "Minigames", "Miscellaneous", "Professions", "Quests & Leveling", "Roleplay", "Tooltip", "Unit Frames", "Companions"], 143 | 144 | expansions: ["Cataclysm", "Lichking", "Pandarian"], 145 | 146 | roles: ["All", "DPS", "TANK", "HEALER"], 147 | 148 | classes: ["All", "Rogue", "Warrior", "Paladin", "Death Knight", "Druid", "Hunter", "Mage", "Monk", "Priest", "Shaman", "Warlock"] 149 | ``` 150 | 151 | ## created and maintened with 💖 by [PentSec](https://jeff.is-a.dev/) 152 | 153 | Help me with a tip. 154 | 155 | 156 | paypal 157 | 158 | 159 | 160 | ## Contributors 161 | 162 | 163 | 164 | 165 | --------------------------------------------------------------------------------