View Single Post
02-14-15, 06:00 PM   #14
jlam
A Fallenroot Satyr
AddOn Author - Click to view addons
Join Date: Oct 2010
Posts: 29
Originally Posted by Phanx View Post
You may also be interested in jlam's standalone packager which replaces the CurseForge packager. You could easily use this in conjunction with the WoWInterface API to create a ZIP file and upload it to both sites (or just WoWInterface if you don't host on Curse too). It should work with any Git-based project regardless of where you host your remote repository(ies).
curseforge-packager is a shell script that you can get from GitHub. If you have Git for Windows and a standard SVN installation on your system, you should have all of the tools used by the shell script to do a full release. You just run it as
Code:
sh release.sh -z
, or if you also have 7-zip, you can just run
Code:
sh release.sh
and a zipfile will be generated as well.

-----------------------------------

release.sh

release.sh generates an addon zipfile from a Git or SVN checkout.

release.sh works by creating a new project directory, checking out external repositories within the project directory, then copying files from the checkout into the project directory. The project directory is then zipped to create a distributable addon zipfile.

release.sh reads .pkgmeta and supports the following directives:
  • externals (Git and SVN)
  • ignore
  • license-output (for default All Rights Reserved license)
  • manual-changelog
  • move-folders
  • package-as

release.sh supports the following repository substitution keywords when copying the files from the checkout into the project directory.
  • @alpha@...@end-alpha@
  • @debug@...@end-debug@
  • @localization(locale="locale", format="format", ...)@
    • escape-non-ascii
    • handle-subnamespaces
    • handle-unlocalized
    • namespace
  • @no-lib-strip@...@end-no-lib-strip@
  • @non-alpha@...@end-non-alpha@
  • @non-debug@...@end-non-debug@
  • @project-revision@
  • @project-version@

release.sh reads the TOC file, if present, to determine the name of the project.

release.sh assumes that tags (Git annotated tags and SVN tags) are named for the version numbers for the project. It will identify if the HEAD is tagged and use that as the current version number. It will search back through parent commits for the previous tag that is a release version number and generate a changelog containing the commits since that previous release tag.

release.sh will create a default license file in the project directory with the contents All Rights Reserved if a license file does not already exist.

By default, release.sh creates releases in a release subdirectory of the top-level directory of the checkout.

Using release.sh

The recommended way to include release.sh in a project is to:
  1. Create a release subdirectory in your top-level checkout.
  2. Copy release.sh into the release directory.
  3. Ignore the release subdirectory in .pkgmeta.
  4. Run release.sh.
  Reply With Quote