This is for developers who are interested in uploading mods to WoWInterface, not for updating mods from WoWInterface to your computer, Thanks!
This script tries to speed up the process of updating your mods on WoWInterface and making life easier in general, supports uploading from an svn repository on a remote server or from your own desktop. Right now, it'll only update files that have already been submitted but their are plans to allow uploading new files later.
All you need is Java 1.5 (also known as Java 5.0) or higher, and a WoWInterface account. Everything is done through a command line, the arguments can be pulled up by passing -h or -help, heres the ones that are available currently.
Code:
-u <username> WoWInterface account name
-p <password> WoWInterface account password
-ver <version> File version for uploading
-log Includes a changelog-<version>.txt file with the mod zip.
-desc-log Includes the last 50 commits in the mod description.
-svn <path> Path to the svn command line, usually you can just use -svn.
-fid <fileid> File ID to update on WoWInterface.
-ftitle <title> Attempts to find the file id using the mod title.
-ftoc Attempts to scan the TOC file in the given path for the file title.
-desc <path> Replaces the mod description which the file passed.
-skip Skips confirmation on the mod to upload to
-zip-ver Uploads the zip with the file name <folder>-<version>.zip
-svn-export <url> Grabs the specified SVN directory URL and uploads it, -path and -svn-path are not needed for this.
-svn-path <dir> Path to the svn to grab the change log/revision number from, only needed if the current working directory isn't the svn repo itself.
-path <dir> Path to the mod to be zipped/uploaded, only needed if the current working directory isn't the mod itself.
-zip <dir> Zipped file to upload, cannot use -zip-ver or -log with this.
-ignore <pattern> Lets you choose which files should not be included in the zip, you add as many -ignore args as needed.
You do not need to pass -u or -p through the command line, it'll simply ask you to provide the information, same with -ftitle and -fid you'll be asked for the file id you want to upload to. This can be ran from any location on your computer, you just need to make sure you set the correct -path or -svn-path to point towards the location you want.
A few examples, lets say WoWIUploader.class is located in C:/ and I want to upload the add on FooBar that's located in C:/World of Warcraft/Interface/Addons/FooBar and it's also been checked out from svn and the file id is 7500.
java WoWIUploader -fid 7500 -zip-ver -desc-log -log -path "C:/World of Warcraft/Interface/Addons/FooBar" -svn-path "C:/World of Warcraft/Interface/Addons/FooBar" -ver "r50"
This will create a zip named FooBar-r50.zip, and also include a change log named changelog-r50.txt of all changes retrieved through svn log, the mod description will be updated with the last 50 changes also. Now, say you want to upload a mod that's in SVN from a tag that's located in www.testserver.com/svn/tags/FooBar-r50 and the file title is "Foo Bar", you'd use
java WoWIUploader -ftitle "Foo Bar" -desc-log -log -svn-export "www.testserver.com/svn/tags/FooBar-r55" -svn-path "www.testserver.com/svn/trunk/FooBar" -ver "r55"
This will create a zip named FooBar-r55.zip, a change log file named changelog-r55.txt retrieved from www.testserver.com/svn/trunk/FooBar/ and will include the last 50 changes in the mod description also retrieved from the same URL as changelog-r55.txt and will upload to the mod with the title Foo Bar.
-----
If you want to upload from WoWAce to WoWInterface, but you use .pkgmeta, the latest version will handle that, for example:
java WoWIUploader -curse-page "elitistgroup" -api-key "####################" -desc-log -skip -ftitle "Elitist Group" -repo-log "[email protected]:wow/elitistgroup/mainline.git"
Will pull the latest version of Elitist Group from wowace, then it will pull the latest version and change log from a git repo.
Or, if you are pulling from a straight git repo:
java WoWIUploader -git-export "git://github.com/Shadowed/DamnCraftSpam.git" -git-path "master" -ftitle "Damn Craft Spam" -log -desc-log -zip-ver -git-folder "DamnCraftSpam"
Will pull from the git repo DamnCraftSpam on github, using the branch master, and it will name the folder DamnCraftSpam.