diff --git a/README.md b/README.md index f4734f7..69f02a3 100644 --- a/README.md +++ b/README.md @@ -1,32 +1,51 @@ +### NAME +`love-release.sh` -- Bash script to generate Love 2D game releases + ### SYNOPSIS -`love-release.sh [OPTIONS] [FILES...]` +`love-release.sh [-lmw] [-n project_name] [-r release_dir] [-u company_name] [-v love_version] [FILES...]` ### DESCRIPTION -You can use love-release.sh to generate Love2D executables for Linux, OS X, Windows (x86 and x86_64), -as specified in love2d.org. -An Internet connection is required. The script uses curl, zip and unzip commands. - -By default, the script generates releases for every system. But if you add options, -it will generate releases only for the specified systems. - -A directory (default is `./releases`) will be created, and filled with the zipped releases: -`YourGame-win-x86.zip`, `YourGame-win-x64.zip`, `YourGame-osx.zip` and `YourGame.love`. +You can use love-release.sh to generate Love 2D game applications and get over the fastidious zipping commands you had to do. +The script fully supports Windows, MacOS either on x86 or x64. +It needs an Internet connection to download Love files, and relies on curl, zip and unzip commands. ### OPTIONS -- *-h*, help -- *-l*, generates a .love file -- *-d*, generates a Debian package **currently not working** -- *-m*, generates a Mac OS X app -- *-w*, generates Windows x86 and x86_64 executables - - *-w32*, generates Windows x86 executable - - *-w64*, generates Windows x86_64 executable -- *-r*, release directory. By default, a subdirectory called `releases` is created -- *-u*, company name. Provide it for OSX CFBundleIdentifier, otherwise USER is used -- *-v*, love version. Default is 0.8.0. Prior to it, no special Win64 version is available - Use `-v dev` for nightly builds -- *--refresh*, refresh the cache located in `~/.cache/love-release` -- *--debug*, dumps script variables. Does not make releases +`-h` Print a short help +`--help` Print this longer help + +#### OPERATING SYSTEMS +`-l` Create a plain Love file. It is just a zip of your sources, renamed in *.love. + Mostly aimed at Linux players or developpers and the most common distribution process. + +`-m` Create MacOS application. + Starting with Love 0.9.0, Love no longer supports old x86 Macintosh. + If you are targeting one of these, your project must be developped with Love 0.8.0 or lower. + Depending on the Love version used, the script will choose which one, between x64 only or Universal Build to create. + +`-w` Create Windows application. + Starting with Love 0.8.0, a release is specially available for Windows x64. + If you are targeting one of these, your project must be developped with Love 0.8.0 or newer. + Remember that x86 is always backwards compatible with x64. + Depending on the Love version used, the script will choose which one, between x64 and x86 or x86 only to create. +`-w32` Create Windows x86 executable only +`-w64` Create Windows x64 executable only + +#### PROJECT OPTIONS +`-n` Set the projects name. By default, the name of the current directory is used. + +`-r` Set the release directory. By default, a subdirectory called releases is created. + +`-u` Set the company name. Provide it for MacOS CFBundleIdentifier. + +`-v` Love version. Default is 0.9.0. + Starting with Love 0.8.0, a release is specially available for Windows x64. + Starting with Love 0.9.0, Love no longer supports old x86 Macintosh. + +#### OTHERS +`--refresh` Refresh the cache located in `~/.cache/love-release`. One can replace the Love files there. +`--debug` Dump the scripts variables without making releases. ### SEE ALSO -- [https://www.love2d.org](https://www.love2d.org) -- [https://www.love2d.org/wiki/Game_Distribution](https://www.love2d.org/wiki/Game_Distribution) +[https://www.love2d.org](https://www.love2d.org) +[https://www.love2d.org/wiki/Game_Distribution](https://www.love2d.org/wiki/Game_Distribution) +[https://www.github.org/MisterDA/love-release](https://www.github.org/MisterDA/love-release) \ No newline at end of file diff --git a/love-release.sh b/love-release.sh index 3a4c0d8..6a1a448 100755 --- a/love-release.sh +++ b/love-release.sh @@ -1,54 +1,87 @@ #!/bin/bash -HELP="### Generates Love2D Game releases ### +## Short help ## +function short_help() +{ +echo "Usage: love-release.sh [options...] [files...] +Options: + -h, --help Prints short or long help + -l Create a plain Love file + -m Create a MacOS application + -w, Create a Windows application + -w32 Create a Windows x86 application + -w64 Create a Windows x64 application + -n Set the projects name + -r Set the release directory + -u Set the company name + -v Set the Love version +" +} +## Long help ## +function long_help() +{ +echo "NAME + love-release.sh -- Bash script to generate Love 2D game releases SYNOPSIS - love-release.sh [OPTIONS] [FILES...] + love-release.sh [-lmw] [-n project_name] [-r release_dir] [-u company_name] [-v love_version] [FILES...] DESCRIPTION - You can use love-release.sh to generate Love2D executables for Linux, OS X, Windows (x86 and x86_64), as specified in love2d.org. - An Internet connection is required. The script uses curl, zip and unzip commands. - - By default, the script generates releases for every system. But if you add options, - it will generate releases only for the specified systems. - - Game releases will be named after your project's root directory. - A directory (default is './releases') will be created, and filled with the zipped releases: - 'YourGame-win-x86.zip', 'YourGame-win-x64.zip', 'YourGame-osx.zip' and 'YourGame.love'. + You can use love-release.sh to generate Love 2D game applications and get over the fastidious zipping commands you had to do. + The script fully supports Windows, MacOS either on x86 or x64. + It needs an Internet connection to download Love files, and relies on curl, zip and unzip commands. OPTIONS - -h, print this help + -h Print a short help + --help Print this longer help - -l, generates a .love file - -d, generates a Debian package - -m, generates a Mac OS X app - -w, generates Windows x86 and x86_64 executables - -w32, generates Windows x86 executable - -w64, generates Windows x86_64 executable + OPERATING SYSTEMS + -l Create a plain Love file. It is just a zip of your sources, renamed in *.love. + Mostly aimed at Linux players or developpers and the most common distribution process. + + -m Create MacOS application. + Starting with Love 0.9.0, Love no longer supports old x86 Macintosh. + If you are targeting one of these, your project must be developped with Love 0.8.0 or lower. + Depending on the Love version used, the script will choose which one, between x64 only or Universal Build to create. - -r, release directory. By default, a subdirectory called 'releases' is created - -u, company name. Provide it for OSX CFBundleIdentifier, otherwise USER is used - -v, love version. Default is 0.8.0. Prior to it, no special Win64 version is available - Use '-v dev' for nightly builds - -V, project's version (eg 3.1.4). Must not include revision nor commit id + -w Create Windows application. + Starting with Love 0.8.0, a release is specially available for Windows x64. + If you are targeting one of these, your project must be developped with Love 0.8.0 or newer. + Remember that x86 is always backwards compatible with x64. + Depending on the Love version used, the script will choose which one, between x64 and x86 or x86 only to create. + -w32 Create Windows x86 executable only + -w64 Create Windows x64 executable only - --refresh, refresh the cache located in '~/.cache/love-release' - --debug, dumps script variables. Does not make releases + PROJECT OPTIONS + -n Set the projects name. By default, the name of the current directory is used. + + -r Set the release directory. By default, a subdirectory called releases is created. + + -u Set the company name. Provide it for MacOS CFBundleIdentifier. + + -v Love version. Default is 0.9.0. + Starting with Love 0.8.0, a release is specially available for Windows x64. + Starting with Love 0.9.0, Love no longer supports old x86 Macintosh. + + OTHERS + --refresh Refresh the cache located in ~/.cache/love-release. One can replace the Love files there. + --debug Dump the scripts variables without making releases. SEE ALSO - https://www.love2d.org - https://www.love2d.org/wiki/Game_Distribution - https://www.github.org/MisterDA/love-release + https://www.love2d.org + https://www.love2d.org/wiki/Game_Distribution + https://www.github.org/MisterDA/love-release " +} ## Test if requirements are installed ## -command -v curl >/dev/null 2>&1 || { echo "curl is not installed. Aborting." >&2; exit 1; } +command -v curl -L >/dev/null 2>&1 || { echo "curl -L is not installed. Aborting." >&2; exit 1; } command -v zip >/dev/null 2>&1 || { echo "zip is not installed. Aborting." >&2; exit 1; } command -v unzip >/dev/null 2>&1 || { echo "unzip is not installed. Aborting." >&2; exit 1; } -## Parsing functions ## +## Parsing function ## function getoptex() { let $# || return 1 @@ -138,126 +171,49 @@ function getoptex() } -## Debug function ## -function debug() -{ - echo "PROJECT_NAME: $PROJECT_NAME -PROJECT_VERSION: $PROJECT_VERSION -COMPANY_NAME: $COMPANY_NAME -RELEASE_LOVE: $RELEASE_LOVE -RELEASE_OSX: $RELEASE_OSX -RELEASE_WIN_32: $RELEASE_WIN_32 -RELEASE_WIN_64: $RELEASE_WIN_64 -RELEASE_DEBIAN: $RELEASE_DEBIAN -LOVE_VERSION: $LOVE_VERSION -LOVE_SUPPORT_WIN_64: $LOVE_SUPPORT_WIN_64 -RELEASE_DIR: $RELEASE_DIR -CACHE_DIR: $CACHE_DIR -CONFIG_FILE: $CONFIG_FILE -CONFIG_FOUND: $CONFIG_FOUND -DEBUG: $DEBUG" -} - - ## Set defaults ## RELEASE_LOVE=false RELEASE_OSX=false RELEASE_WIN_32=false RELEASE_WIN_64=false -RELEASE_DEBIAN=false +LOVE_GT_080=1 # Support Windows x64 +LOVE_GT_090=1 # Support MacOS x64 + +PROJECT_FILES= PROJECT_NAME=${PWD##/*/} +COMPANY_NAME=love2d RELEASE_DIR=$PWD/releases -COMPANY_NAME=$USER -LOVE_VERSION=0.8.0 -LOVE_VERSION_MAJOR=0.8 -LOVE_SUPPORT_WIN_64=1 -CACHE_DIR=~/.cache/love-release -CONFIG_FILE=~/.config/love-release.cfg -CONFIG_FOUND=false +LOVE_VERSION=0.9.0 +LOVE_VERSION_MAJOR=0.9 + DEBUG=false -GIT=`git log --pretty=format:'%h' -n 1 $1` +CACHE_DIR=~/.cache/love-release - -## Config file ## -if [ -f $CONFIG_FILE ]; then - . $CONFIG_FILE - for (( i=0; i<${#PROJECTS[@]}; i++ )) - do - if [ ${PROJECTS[$i]} = $PROJECT_NAME ]; then - CONFIG_FOUND=true - RELEASE_DIR_TMP=${CFG[$PROJECT_NAME"_release-dir"]} - if [ -n $RELEASE_DIR_TMP ]; then - if [ ${RELEASE_DIR_TMP:0:1} != '/' ] && [ ${RELEASE_DIR_TMP:0:1} != '~' ]; then - RELEASE_DIR=$PWD/$RELEASE_DIR_TMP - else - RELEASE_DIR=$RELEASE_DIR_TMP - fi - fi - LOVE_VERSION_TMP=${CFG[$PROJECT_NAME"_love-version"]} - if [ -n $LOVE_VERSION_TMP ]; then - LOVE_VERSION=$LOVE_VERSION_TMP - if [ $LOVE_VERSION_TMP = "dev" ]; then - LOVE_VERSION_MAJOR="dev" - LOVE_SUPPORT_WIN_64="1" - else - LOVE_VERSION_MAJOR=`echo "$LOVE_VERSION" | grep -Eo '^[0-9]+\.?[0-9]*'` - LOVE_SUPPORT_WIN_64=`echo "$LOVE_VERSION_MAJOR>=0.8" | bc` - fi - fi - RELEASE_LOVE_TMP=${CFG[$PROJECT_NAME"_release-love"]} - if [ -n $RELEASE_LOVE_TMP ]; then - RELEASE_LOVE=$RELEASE_LOVE_TMP - fi - RELEASE_OSX_TMP=${CFG[$PROJECT_NAME"_release-osx"]} - if [ -n $RELEASE_OSX_TMP ]; then - RELEASE_OSX=$RELEASE_OSX_TMP - fi - RELEASE_WIN_32_TMP=${CFG[$PROJECT_NAME"_release-win32"]} - if [ -n $RELEASE_WIN_32_TMP ]; then - RELEASE_WIN_32=$RELEASE_WIN_32_TMP - fi - RELEASE_WIN_64_TMP=${CFG[$PROJECT_NAME"_release-win64"]} - if [ -n $RELEASE_WIN_64_TMP ]; then - RELEASE_WIN_64=$RELEASE_WIN_64_TMP - fi - RELEASE_DEBIAN_TMP=${CFG[$PROJECT_NAME"_release-debian"]} - if [ -n $RELEASE_DEBIAN_TMP ]; then - RELEASE_DEBIAN=$RELEASE_DEBIAN_TMP - fi - COMPANY_NAME_TMP=${CFG[$PROJECT_NAME"_company-name"]} - if [ -n $COMPANY_NAME_TMP ]; then - COMPANY_NAME=$COMPANY_NAME_TMP - fi - fi - done -else - echo "## Configuration file for love-release.sh ## - -# Declare your projects here, to automate release process and not having to retype every options -# The name MUST be the same as your projects root directory -PROJECTS=() - -# First project is PROJECTS[0]. You can use PROJECTS[i] and do ((i++)) after each configuration -declare -A CFG -i=0 - -# CFG[${PROJECTS[i]}\"_company-name\"]=\"MyCompany\" -# CFG[${PROJECTS[i]}\"_love-version\"]=\"0.8.0\" -# CFG[${PROJECTS[i]}\"_release-dir\"]=\"releases\" -# CFG[${PROJECTS[i]}\"_release-love\"]=true -# CFG[${PROJECTS[i]}\"_release-osx\"]=true -# CFG[${PROJECTS[i]}\"_release-win32\"]=true -# CFG[${PROJECTS[i]}\"_release-win64\"]=true -# CFG[${PROJECTS[i]}\"_release-debian\"]=true -# ((i++))" > $CONFIG_FILE -fi +## Debug function ## +function debug() +{ +echo "DEBUG=$DEBUG +RELEASE_LOVE=$RELEASE_LOVE +RELEASE_OSX=$RELEASE_OSX +RELEASE_WIN_32=$RELEASE_WIN_32 +RELEASE_WIN_64=$RELEASE_WIN_64 +LOVE_GT_080=$LOVE_GT_080 +LOVE_GT_090=$LOVE_GT_090 +PROJECT_FILES=$PROJECT_FILES +PROJECT_NAME=$PROJECT_NAME +COMPANY_NAME=$COMPANY_NAME +RELEASE_DIR=$RELEASE_DIR +LOVE_VERSION=$LOVE_VERSION +LOVE_VERSION_MAJOR=$LOVE_VERSION_MAJOR +CACHE_DIR=$CACHE_DIR" +} ## Parsing options ## -while getoptex "h; d; l; m; w. r: u: v: refresh debug" "$@" +while getoptex "h; l; m; w. n: r: u: v: debug help refresh" "$@" do - if [ $OPTOPT = "h" ]; then # print help - echo "$HELP" + if [ $OPTOPT = "h" ]; then + short_help exit elif [ $OPTOPT = "l" ]; then RELEASE_LOVE=true @@ -272,25 +228,24 @@ do RELEASE_WIN_32=true RELEASE_WIN_64=true fi - elif [ $OPTOPT = "d"]; then - RELEASE_DEBIAN=true + elif [ $OPTOPT = "n" ]; then + PROJECT_NAME=$OPTARG elif [ $OPTOPT = "r" ]; then RELEASE_DIR=$OPTARG elif [ $OPTOPT = "u" ]; then COMPANY_NAME=$OPTARG elif [ $OPTOPT = "v" ]; then LOVE_VERSION=$OPTARG - if [ $LOVE_VERSION = "dev" ]; then - LOVE_VERSION_MAJOR="dev" - LOVE_SUPPORT_WIN_64="1" - else - LOVE_VERSION_MAJOR=`echo "$LOVE_VERSION" | grep -Eo '^[0-9]+\.?[0-9]*'` - LOVE_SUPPORT_WIN_64=`echo "$LOVE_VERSION_MAJOR>=0.8" | bc` - fi - elif [ $OPTOPT = "refresh" ]; then - rm -rf $CACHE_DIR + LOVE_VERSION_MAJOR=`echo "$LOVE_VERSION" | grep -Eo '^[0-9]+\.?[0-9]*'` + LOVE_GT_080=`echo "$LOVE_VERSION_MAJOR>=0.8" | bc` + LOVE_GT_090=`echo "$LOVE_VERSION_MAJOR>=0.9" | bc` elif [ $OPTOPT = "debug" ]; then DEBUG=true + elif [ $OPTOPT = "help" ]; then + long_help + exit + elif [ $OPTOPT = "refresh" ]; then + rm -rf $CACHE_DIR fi done shift $[OPTIND-1] @@ -298,13 +253,15 @@ for file in "$@" do PROJECT_FILES="$PROJECT_FILES $file" done -if [ $RELEASE_LOVE = false ] && [ $RELEASE_OSX = false ] && [ $RELEASE_WIN_32 = false ] && [ $RELEASE_WIN_64 = false ] && [ $RELEASE_DEBIAN = false ] && [ $CONFIG_FOUND = false ]; then +if [ $RELEASE_LOVE = false ] && [ $RELEASE_OSX = false ] && [ $RELEASE_WIN_32 = false ] && [ $RELEASE_WIN_64 = false ]; then RELEASE_LOVE=true RELEASE_OSX=true RELEASE_WIN_32=true RELEASE_WIN_64=true - RELEASE_DEBIAN=true fi +MAIN_RELEASE_DIR=${RELEASE_DIR##/*/} +RELEASE_DIR=$RELEASE_DIR/$LOVE_VERSION +CACHE_DIR=$CACHE_DIR/$LOVE_VERSION ## Debug log ## @@ -314,101 +271,184 @@ if [ $DEBUG = true ]; then fi -## Releases generation ## -MAIN_RELEASE_DIR=${RELEASE_DIR##/*/} -RELEASE_DIR=$RELEASE_DIR/$LOVE_VERSION -CACHE_DIR=$CACHE_DIR/$LOVE_VERSION +## Zipping ## mkdir -p $RELEASE_DIR $CACHE_DIR - rm -rf $RELEASE_DIR/$PROJECT_NAME.love 2> /dev/null if [ -z $PROJECT_FILES ]; then - zip -r $RELEASE_DIR/$PROJECT_NAME.love -x $0 $MAIN_RELEASE_DIR/ $MAIN_RELEASE_DIR/* $MAIN_RELEASE_DIR/${RELEASE_DIR##/*/}/ $MAIN_RELEASE_DIR/${RELEASE_DIR##/*/}/* @ * + zip -r $RELEASE_DIR/$PROJECT_NAME.love -x $0 $MAIN_RELEASE_DIR/\* @ * else - zip -r $RELEASE_DIR/$PROJECT_NAME.love -x $0 $MAIN_RELEASE_DIR/ $MAIN_RELEASE_DIR/* $MAIN_RELEASE_DIR/${RELEASE_DIR##/*/}/ $MAIN_RELEASE_DIR/${RELEASE_DIR##/*/}/* @ $PROJECT_FILES + zip -r $RELEASE_DIR/$PROJECT_NAME.love -x $0 $MAIN_RELEASE_DIR/\* @ $PROJECT_FILES fi cd $RELEASE_DIR ## Windows 32-bits ## if [ $RELEASE_WIN_32 = true ]; then - if [ -f $CACHE_DIR/love-$LOVE_VERSION-win-x86.zip ]; then - cp $CACHE_DIR/love-$LOVE_VERSION-win-x86.zip ./ - else - if [ $LOVE_VERSION = "dev" ]; then - curl -C - -o $CACHE_DIR/love-$LOVE_VERSION-win-x86.zip https://bitbucket.org/Boolsheet/love_winbin/get/dev-x86.zip + if [ $LOVE_GT_090 = "1" ]; then + if [ -f $CACHE_DIR/love-$LOVE_VERSION-win32.zip ]; then + cp $CACHE_DIR/love-$LOVE_VERSION-win32.zip ./ else - curl -C - -o $CACHE_DIR/love-$LOVE_VERSION-win-x86.zip https://bitbucket.org/rude/love/downloads/love-$LOVE_VERSION-win-x86.zip + curl -L -C - -o $CACHE_DIR/love-$LOVE_VERSION-win32.zip https://bitbucket.org/rude/love/downloads/love-$LOVE_VERSION-win32.zip + cp $CACHE_DIR/love-$LOVE_VERSION-win32.zip ./ fi - cp $CACHE_DIR/love-$LOVE_VERSION-win-x86.zip ./ + unzip -qq love-$LOVE_VERSION-win32.zip + rm -rf $PROJECT_NAME-win32.zip 2> /dev/null + cat love-$LOVE_VERSION-win32/love.exe $PROJECT_NAME.love > love-$LOVE_VERSION-win32/$PROJECT_NAME.exe + rm love-$LOVE_VERSION-win32/love.exe + zip -qr $PROJECT_NAME-win32.zip love-$LOVE_VERSION-win32 + rm -rf love-$LOVE_VERSION-win32.zip love-$LOVE_VERSION-win32 + else + if [ -f $CACHE_DIR/love-$LOVE_VERSION-win-x86.zip ]; then + cp $CACHE_DIR/love-$LOVE_VERSION-win-x86.zip ./ + else + curl -L -C - -o $CACHE_DIR/love-$LOVE_VERSION-win-x86.zip https://bitbucket.org/rude/love/downloads/love-$LOVE_VERSION-win-x86.zip + cp $CACHE_DIR/love-$LOVE_VERSION-win-x86.zip ./ + fi + unzip -qq love-$LOVE_VERSION-win-x86.zip + rm -rf $PROJECT_NAME-win-x86.zip 2> /dev/null + cat love-$LOVE_VERSION-win-x86/love.exe $PROJECT_NAME.love > love-$LOVE_VERSION-win-x86/$PROJECT_NAME.exe + rm love-$LOVE_VERSION-win-x86/love.exe + zip -qr $PROJECT_NAME-win-x86.zip love-$LOVE_VERSION-win-x86 + rm -rf love-$LOVE_VERSION-win-x86.zip love-$LOVE_VERSION-win-x86 fi - unzip -qq love-$LOVE_VERSION-win-x86.zip - mv `/bin/ls -1 | grep -Eo '^Boolsheet-love_winbin-[0-9a-f]{12}$'` love-$LOVE_VERSION-win-x86 2> /dev/null - rm -rf $PROJECT_NAME-win-x86.zip 2> /dev/null - cat love-$LOVE_VERSION-win-x86/love.exe $PROJECT_NAME.love > love-$LOVE_VERSION-win-x86/$PROJECT_NAME.exe - rm love-$LOVE_VERSION-win-x86/love.exe - zip -qr $PROJECT_NAME-win-x86.zip love-$LOVE_VERSION-win-x86 - rm -rf love-$LOVE_VERSION-win-x86.zip love-$LOVE_VERSION-win-x86 fi ## Windows 64-bits ## -if [ $LOVE_SUPPORT_WIN_64 = "1" ] && [ $RELEASE_WIN_64 = true ]; then - if [ -f $CACHE_DIR/love-$LOVE_VERSION-win-x64.zip ]; then - cp $CACHE_DIR/love-$LOVE_VERSION-win-x64.zip ./ - else - if [ $LOVE_VERSION = "dev" ]; then - curl -C - -o $CACHE_DIR/love-$LOVE_VERSION-win-x64.zip https://bitbucket.org/Boolsheet/love_winbin/get/dev-x64.zip +if [ $RELEASE_WIN_64 = true ] && [ $LOVE_GT_080 = "1" ]; then + if [ $LOVE_GT_090 = "1" ]; then + if [ -f $CACHE_DIR/love-$LOVE_VERSION-win64.zip ]; then + cp $CACHE_DIR/love-$LOVE_VERSION-win64.zip ./ else - curl -C - -o $CACHE_DIR/love-$LOVE_VERSION-win-x64.zip https://bitbucket.org/rude/love/downloads/love-$LOVE_VERSION-win-x64.zip + curl -L -C - -o $CACHE_DIR/love-$LOVE_VERSION-win64.zip https://bitbucket.org/rude/love/downloads/love-$LOVE_VERSION-win64.zip + cp $CACHE_DIR/love-$LOVE_VERSION-win64.zip ./ fi - cp $CACHE_DIR/love-$LOVE_VERSION-win-x64.zip ./ + unzip -qq love-$LOVE_VERSION-win64.zip + rm -rf $PROJECT_NAME-win64.zip 2> /dev/null + cat love-$LOVE_VERSION-win64/love.exe $PROJECT_NAME.love > love-$LOVE_VERSION-win64/$PROJECT_NAME.exe + rm love-$LOVE_VERSION-win64/love.exe + zip -qr $PROJECT_NAME-win64.zip love-$LOVE_VERSION-win64 + rm -rf love-$LOVE_VERSION-win64.zip love-$LOVE_VERSION-win64 + else + if [ -f $CACHE_DIR/love-$LOVE_VERSION-win-x64.zip ]; then + cp $CACHE_DIR/love-$LOVE_VERSION-win-x64.zip ./ + else + curl -L -C - -o $CACHE_DIR/love-$LOVE_VERSION-win-x64.zip https://bitbucket.org/rude/love/downloads/love-$LOVE_VERSION-win-x64.zip + fi + unzip -qq love-$LOVE_VERSION-win-x64.zip + rm -rf $PROJECT_NAME-win-x64.zip 2> /dev/null + cat love-$LOVE_VERSION-win-x64/love.exe $PROJECT_NAME.love > love-$LOVE_VERSION-win-x64/$PROJECT_NAME.exe + rm love-$LOVE_VERSION-win-x64/love.exe + zip -qr $PROJECT_NAME-win-x64.zip love-$LOVE_VERSION-win-x64 + rm -rf love-$LOVE_VERSION-win-x64.zip love-$LOVE_VERSION-win-x64 fi - unzip -qq love-$LOVE_VERSION-win-x64.zip - mv `/bin/ls -1 | grep -Eo '^Boolsheet-love_winbin-[0-9a-f]{12}$'` love-$LOVE_VERSION-win-x64 2> /dev/null - rm -rf $PROJECT_NAME-win-x64.zip 2> /dev/null - cat love-$LOVE_VERSION-win-x64/love.exe $PROJECT_NAME.love > love-$LOVE_VERSION-win-x64/$PROJECT_NAME.exe - rm love-$LOVE_VERSION-win-x64/love.exe - zip -qr $PROJECT_NAME-win-x64.zip love-$LOVE_VERSION-win-x64 - rm -rf love-$LOVE_VERSION-win-x64.zip love-$LOVE_VERSION-win-x64 fi -## Debian package ## -if [ $RELEASE_DEBIAN = true ]; then - mkdir -p $PROJECT_NAME/{DEBIAN,usr/{bin,share/games}} - echo "Package: $PROJECT -Version: -Architecture: all -Maintainer: $COMPANY_NAME -Installed-Size: -Depends: love (>= $LOVE_VERSION) -Section: games -Priority: extra -Homepage: -Description: " > $PROJECT_NAME/DEBIAN/control - echo "#!/bin/bash -set -e -love /usr/share/games/$PROJECT_NAME/$PROJECT_NAME.love" > $PROJECT_NAME/usr/bin/$PROJECT_NAME - chmod +x $PROJECT_NAME/usr/bin/$PROJECT_NAME -fi - -## Mac OS X ## +## MacOS ## if [ $RELEASE_OSX = true ]; then - if [ -f $CACHE_DIR/love-$LOVE_VERSION-macosx-ub.zip ]; then - cp $CACHE_DIR/love-$LOVE_VERSION-macosx-ub.zip ./ - else - if [ $LOVE_VERSION = "dev" ]; then - curl -C - -o $CACHE_DIR/love-$LOVE_VERSION-macosx-ub.zip https://bitbucket.org/slime73/love_macbin/get/tip.zip + + ## MacOS 64-bits ## + if [ $LOVE_GT_090 = "1" ]; then + if [ -f $CACHE_DIR/love-$LOVE_VERSION-macosx-x64.zip ]; then + cp $CACHE_DIR/love-$LOVE_VERSION-macosx-x64.zip ./ else - curl -C - -o $CACHE_DIR/love-$LOVE_VERSION-macosx-ub.zip https://bitbucket.org/rude/love/downloads/love-$LOVE_VERSION-macosx-ub.zip + curl -L -C - -o $CACHE_DIR/love-$LOVE_VERSION-macosx-x64.zip https://bitbucket.org/rude/love/downloads/love-$LOVE_VERSION-macosx-x64.zip + cp $CACHE_DIR/love-$LOVE_VERSION-macosx-x64.zip ./ fi - cp $CACHE_DIR/love-$LOVE_VERSION-macosx-ub.zip ./ - fi - unzip -qq love-$LOVE_VERSION-macosx-ub.zip - mv `/bin/ls -1 | grep -Eo '^slime73-love_macbin-[0-9a-f]{12}$'`/love.app ./love.app 2> /dev/null - rm -rf `/bin/ls -1 | grep -Eo '^slime73-love_macbin-[0-9a-f]{12}$'` 2> /dev/null - rm -rf $PROJECT_NAME-osx.zip 2> /dev/null - mv love.app $PROJECT_NAME.app - cp $PROJECT_NAME.love $PROJECT_NAME.app/Contents/Resources - echo " + unzip -qq love-$LOVE_VERSION-macosx-x64.zip + rm -rf $PROJECT_NAME-macosx-x64.zip 2> /dev/null + mv love.app $PROJECT_NAME.app + cp $PROJECT_NAME.love $PROJECT_NAME.app/Contents/Resources +echo " + + + + BuildMachineOSBuild + 13A603 + CFBundleDevelopmentRegion + English + CFBundleDocumentTypes + + + CFBundleTypeIconFile + LoveDocument.icns + CFBundleTypeName + LÖVE Project + CFBundleTypeRole + Viewer + LSHandlerRank + Owner + LSItemContentTypes + + org.love2d.love-game + + + + CFBundleTypeName + Folder + CFBundleTypeOSTypes + + fold + + CFBundleTypeRole + Viewer + LSHandlerRank + None + + + CFBundleExecutable + love + CFBundleIconFile + Love.icns + CFBundleIdentifier + org.$COMPANY_NAME.$PROJECT_NAME + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $PROJECT_NAME + CFBundlePackageType + APPL + CFBundleShortVersionString + $LOVE_VERSION + CFBundleSignature + LoVe + DTCompiler + com.apple.compilers.llvm.clang.1_0 + DTPlatformBuild + 5A3005 + DTPlatformVersion + GM + DTSDKBuild + 13A595 + DTSDKName + macosx10.9 + DTXcode + 0502 + DTXcodeBuild + 5A3005 + LSApplicationCategoryType + public.app-category.games + NSHumanReadableCopyright + © 2006-2013 LÖVE Development Team + NSPrincipalClass + NSApplication + +" > $PROJECT_NAME.app/Contents/Info.plist + zip -qr $PROJECT_NAME-macosx-x64.zip $PROJECT_NAME.app + rm -rf love-$LOVE_VERSION-macosx-x64.zip $PROJECT_NAME.app + + ## MacOS 32-bits ## + else + if [ -f $CACHE_DIR/love-$LOVE_VERSION-macosx-ub.zip ]; then + cp $CACHE_DIR/love-$LOVE_VERSION-macosx-ub.zip ./ + else + curl -L -C - -o $CACHE_DIR/love-$LOVE_VERSION-macosx-ub.zip https://bitbucket.org/rude/love/downloads/love-$LOVE_VERSION-macosx-ub.zip + cp $CACHE_DIR/love-$LOVE_VERSION-macosx-ub.zip ./ + fi + unzip -qq love-$LOVE_VERSION-macosx-ub.zip + rm -rf $PROJECT_NAME-macosx-ub.zip 2> /dev/null + mv love.app $PROJECT_NAME.app + cp $PROJECT_NAME.love $PROJECT_NAME.app/Contents/Resources +echo " @@ -463,7 +503,7 @@ if [ $RELEASE_OSX = true ]; then LoVe DTCompiler - DTPlatformBuild + DTPlatformBuildx 4E2002 DTPlatformVersion GM @@ -483,8 +523,9 @@ if [ $RELEASE_OSX = true ]; then NSApplication " > $PROJECT_NAME.app/Contents/Info.plist - zip -qr $PROJECT_NAME-osx.zip $PROJECT_NAME.app - rm -rf love-$LOVE_VERSION-macosx-ub.zip $PROJECT_NAME.app + zip -qr $PROJECT_NAME-macosx-ub.zip $PROJECT_NAME.app + rm -rf love-$LOVE_VERSION-macosx-ub.zip $PROJECT_NAME.app + fi fi ## Love file ## @@ -493,4 +534,4 @@ then rm $PROJECT_NAME.love fi -echo "Done !" +echo "Done !" \ No newline at end of file