diff --git a/love-release.sh b/love-release.sh index e5bdcad..e4e8893 100755 --- a/love-release.sh +++ b/love-release.sh @@ -14,12 +14,18 @@ LOVE_VERSION=0.9.1 ## - a colon ":" if it requires an argument ## SCRIPT_ARGS="a; osname:" -SCRIPT_ARGS="l; " +SCRIPT_ARGS="l; w." + +## Windows +SCRIPT_ARGS="icon: $SCRIPT_ARGS" ## Add a short summary of your platform script here ## SHORT_HELP=" -a Create an executable for a ## --osname Create an executable for osname" -SHORT_HELP=" -l Create a plain Love file" +SHORT_HELP=" -l Create a plain Love file + -w, Create a Windows application + -w32 Create a Windows x86 application + -w64 Create a Windows x64 application" ## Don't forget to source the corresponding file at the bottom of the script ! @@ -85,6 +91,7 @@ Options: -v Set the Love version $SHORT_HELP" + # Parsing options source "$INCLUDE_DIR"/getopt.sh while getoptex "$SCRIPT_ARGS" "$@" @@ -133,11 +140,11 @@ init_module () create_love_file () { cd "$PROJECT_DIR" - rm -rf "$RELEASE_DIR"/"$PROJECT_NAME".love + rm -rf "$RELEASE_DIR"/"$PROJECT_NAME".love 2> /dev/null if [ -z "$PROJECT_FILES" ]; then - zip -9 -r "$RELEASE_DIR"/"$PROJECT_NAME".love -x "$0" "$MAIN_RELEASE_DIR"/\* "$EXCLUDE_FILES" @ * + zip -9 -r "$RELEASE_DIR"/"$PROJECT_NAME".love -x "$0" "$MAIN_RELEASE_DIR"/\* $EXCLUDE_FILES @ * else - zip -9 -r "$RELEASE_DIR"/"$PROJECT_NAME".love -x "$0" "$MAIN_RELEASE_DIR"/\* "$EXCLUDE_FILES" @ "$PROJECT_FILES" + zip -9 -r "$RELEASE_DIR"/"$PROJECT_NAME".love -x "$0" "$MAIN_RELEASE_DIR"/\* $EXCLUDE_FILES @ $PROJECT_FILES fi cd "$RELEASE_DIR" LOVE_FILE="$PROJECT_NAME".love @@ -176,7 +183,17 @@ do ## source "$PLATFORMS_DIR/os.sh" ## fi if [ "$OPTOPT" = "l" ]; then - source $PLATFORMS_DIR/love.sh + source "$PLATFORMS_DIR"/love.sh + elif [ "$OPTOPT" = "w" ]; then + if [ "$OPTARG" = "32" ]; then + RELEASE_WIN_32=true + elif [ "$OPTARG" = "64" ]; then + RELEASE_WIN_64=true + else + RELEASE_WIN_32=true + RELEASE_WIN_64=true + fi + source "$PLATFORMS_DIR"/windows.sh fi done diff --git a/scripts/windows.sh b/scripts/windows.sh new file mode 100644 index 0000000..1830bec --- /dev/null +++ b/scripts/windows.sh @@ -0,0 +1,99 @@ +# Windows +init_module "Windows" + + +# Options +while getoptex "$SCRIPT_ARGS" "$@" +do + if [ "$OPTOPT" = "icon" ]; then + PROJECT_ICO=$OPTARG + fi +done +EXCLUDE_FILES="$EXCLUDE_FILES $PROJECT_ICO test" + +# Wine +FOUND_WINE=true +command -v wine >/dev/null 2>&1 || { FOUND_WINE=false; } +if [ "$FOUND_WINE" = true ] && [ -n "$PROJECT_ICO" ]; then + WINEPREFIX="$MAIN_CACHE_DIR"/wine + mkdir -p "$WINEPREFIX"/drive_c + RESHACKER="$WINEPREFIX"/drive_c/"Program Files (x86)"/"Resource Hacker"/ResHacker.exe + if [ -f "$RESHACKER" ]; then + : + else + curl -L -C - -o "$WINEPREFIX"/drive_c/reshack_setup.exe http://www.angusj.com/resourcehacker/reshack_setup.exe + WINEPREFIX="$WINEPREFIX" wine "$WINEPREFIX/drive_c/reshack_setup.exe" + fi +fi + + +create_love_file + + +# Windows 32-bits +if [ "$RELEASE_WIN_32" = true ]; then + + if [ "$LOVE_GT_090" = true ]; then + if [ -f "$CACHE_DIR"/love-$LOVE_VERSION-win32.zip ]; then + cp "$CACHE_DIR"/love-$LOVE_VERSION-win32.zip ./ + else + 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 + else + if [ -f "$CACHE_DIR"/love-$LOVE_VERSION-win-x86.zip ]; then + cp "$CACHE_DIR"/love-$LOVE_VERSION-win-x86.zip ./love-$LOVE_VERSION-win32.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 ./love-$LOVE_VERSION-win32.zip + fi + fi + + unzip -qq love-$LOVE_VERSION-win32.zip + rm -rf "$PROJECT_NAME"-win32.zip 2> /dev/null + + if [ "$FOUND_WINE" = true ] && [ -n "$PROJECT_ICO" ]; then + WINEPREFIX="$WINEPREFIX" wine "$RESHACKER" -addoverwrite "love-$LOVE_VERSION-win32/love.exe,love-$LOVE_VERSION-win32/love.exe,"$PROJECT_ICO",ICONGROUP,MAINICON,0" 2> /dev/null + fi + + cat love-$LOVE_VERSION-win32/love.exe "$LOVE_FILE" > love-$LOVE_VERSION-win32/"$PROJECT_NAME".exe + rm love-$LOVE_VERSION-win32/love.exe + zip -9 -qr "$PROJECT_NAME"-win32.zip love-$LOVE_VERSION-win32 + rm -rf love-$LOVE_VERSION-win32.zip love-$LOVE_VERSION-win32 +fi + +## Windows 64-bits ## +if [ "$RELEASE_WIN_64" = true ] && [ "$LOVE_GT_080" = true ]; then + + if [ "$LOVE_GT_090" = true ]; then + if [ -f "$CACHE_DIR"/love-$LOVE_VERSION-win64.zip ]; then + cp "$CACHE_DIR"/love-$LOVE_VERSION-win64.zip ./ + else + 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 + else + if [ -f "$CACHE_DIR"/love-$LOVE_VERSION-win-x64.zip ]; then + cp "$CACHE_DIR"/love-$LOVE_VERSION-win-x64.zip ./love-$LOVE_VERSION-win64.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 + cp "$CACHE_DIR"/love-$LOVE_VERSION-win-x64.zip ./love-$LOVE_VERSION-win64.zip + fi + fi + + unzip -qq love-$LOVE_VERSION-win64.zip + rm -rf "$PROJECT_NAME"-win64.zip 2> /dev/null + + if [ "$FOUND_WINE" = true ] && [ -n "$PROJECT_ICO" ]; then + WINEPREFIX="$WINEPREFIX" wine "$RESHACKER" -addoverwrite "love-$LOVE_VERSION-win32/love.exe,love-$LOVE_VERSION-win32/love.exe,"$PROJECT_ICO",ICONGROUP,MAINICON,0" 2> /dev/null + fi + + cat love-$LOVE_VERSION-win64/love.exe "$LOVE_FILE" > love-$LOVE_VERSION-win64/"$PROJECT_NAME".exe + rm love-$LOVE_VERSION-win64/love.exe + zip -9 -qr "$PROJECT_NAME"-win64.zip love-$LOVE_VERSION-win64 + rm -rf love-$LOVE_VERSION-win64.zip love-$LOVE_VERSION-win64 +fi + +remove_love_file +exit_module +