From d0d40950d49d06b8ef7eb112b43f3b04ededef66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antonin=20D=C3=A9cimo?= Date: Fri, 26 Jun 2015 14:50:14 +0200 Subject: [PATCH] Rewrite Mac OS X module --- scripts/macosx.sh | 191 +++++++++++++++++----------------------------- 1 file changed, 68 insertions(+), 123 deletions(-) diff --git a/scripts/macosx.sh b/scripts/macosx.sh index 647f760..87d6851 100644 --- a/scripts/macosx.sh +++ b/scripts/macosx.sh @@ -4,152 +4,97 @@ OPTIONS="M" LONG_OPTIONS="" -PACKAGE_NAME=$(echo $PROJECT_NAME | sed -e 's/[^-a-zA-Z0-9_]/-/g' | tr '[:upper:]' '[:lower:]') +IDENTITY=$(echo $TITLE | sed -e 's/[^-a-zA-Z0-9_]/-/g' | tr '[:upper:]' '[:lower:]') -# Configuration -if [ "$CONFIG" = true ]; then - if [ -n "${INI__macosx__maintainer_name}" ]; then - MAINTAINER_NAME=${INI__macosx__maintainer_name} - fi - if [ -n "${INI__macosx__icon}" ]; then - PROJECT_ICNS=${INI__macosx__icon} - fi +if [[ -z $AUTHOR ]]; then + exit_module "options" "Missing maintainer's name. Use -a or --Mauthor." +fi +if [[ -z $GAME_VERSION ]]; then + GAME_VERSION="$LOVE_VERSION" fi - -# Options -while getoptex "$SCRIPT_ARGS" "$@" -do - if [ "$OPTOPT" = "osx-icon" ]; then - PROJECT_ICNS=$OPTARG - elif [ "$OPTOPT" = "osx-maintainer-name" ]; then - MAINTAINER_NAME=$OPTARG +if [[ -n $ICON ]]; then + if [[ -d $ICON ]]; then + for file in $ICON/*.icns; do + if [[ -f $file ]]; then + ICON="$file" + break + else + found=false + fi + done fi -done + if [[ $found == false || ! -f $ICON ]]; then + >&2 echo "OS X icon was not found in ${ICON}." + icon=Love.icns + ICON= + else + icon="${IDENTITY}.icns" + fi +fi create_love_file 9 - - -# Info.plist -## TODO: Remove this and replace it by parsing the file instead of overwriting -INFO_PLIST=" - - - - BuildMachineOSBuild - 13D65 - 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 - ${PROJECT_ICNS##/*/} - CFBundleIdentifier - org.$MAINTAINER_NAME.$PACKAGE_NAME - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $PROJECT_NAME - CFBundlePackageType - APPL - CFBundleShortVersionString - $LOVE_VERSION - CFBundleSignature - LoVe - DTCompiler - com.apple.compilers.llvm.clang.1_0 - DTPlatformBuild - 5B1008 - DTPlatformVersion - GM - DTSDKBuild - 13C64 - DTSDKName - macosx10.9 - DTXcode - 0511 - DTXcodeBuild - 5B1008 - LSApplicationCategoryType - public.app-category.games - NSHumanReadableCopyright - © 2006-2014 LÖVE Development Team - NSPrincipalClass - NSApplication - -" +cd "$RELEASE_DIR" ## MacOS 64-bits ## -if [ "$LOVE_GT_090" = true ]; then - if [ -f "$CACHE_DIR/love-$LOVE_VERSION-macosx-x64.zip" ]; then - cp $CACHE_DIR/love-$LOVE_VERSION-macosx-x64.zip ./ - else +if compare_version "$LOVE_VERSION" '>=' '0.9.0'; then + if [[ ! -f "$CACHE_DIR/love-$LOVE_VERSION-macosx-x64.zip" ]]; then 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 - 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 - cp "$PROJECT_ICNS" "$PROJECT_NAME".app/Contents/Resources 2> /dev/null + unzip -qq "$CACHE_DIR/love-$LOVE_VERSION-macosx-x64.zip" - echo "$INFO_PLIST" > "$PROJECT_NAME".app/Contents/Info.plist + rm -rf "$TITLE-macosx-x64.zip" 2> /dev/null + mv love.app "${TITLE}.app" + cp "$LOVE_FILE" "${TITLE}.app/Contents/Resources" + if [[ -n $ICON ]]; then + cd "$PROJECT_DIR" + cp "$ICON" "$RELEASE_DIR/$icon" + cd "$RELEASE_DIR" + mv "$icon" "${TITLE}.app/Contents/Resources" + fi - zip -9 -qyr "$PROJECT_NAME"-macosx-x64.zip "$PROJECT_NAME".app - rm -rf love-$LOVE_VERSION-macosx-x64.zip "$PROJECT_NAME".app __MACOSX + sed -i.bak -e '/UTExportedTypeDeclarations<\/key>/,/^\t<\/array>/d' \ + -e "s/>org.love2d.loveorg.${AUTHOR}.$IDENTITYLÖVE$TITLE /dev/null - mv love.app "$PROJECT_NAME".app - cp "$PROJECT_NAME".love "$PROJECT_NAME".app/Contents/Resources - cp "$PROJECT_ICNS" "$PROJECT_NAME".app/Contents/Resources 2> /dev/null + unzip -qq "$CACHE_DIR/love-$LOVE_VERSION-macosx-ub.zip" - echo "$INFO_PLIST" > "$PROJECT_NAME".app/Contents/Info.plist + rm -rf "$TITLE-macosx-ub.zip" 2> /dev/null + mv love.app "${TITLE}.app" + cp "$LOVE_FILE" "${TITLE}.app/Contents/Resources" + if [[ -n $ICON ]]; then + cd "$PROJECT_DIR" + cp "$ICON" "$RELEASE_DIR/$icon" + cd "$RELEASE_DIR" + mv "$icon" "${TITLE}.app/Contents/Resources" + fi - zip -9 -qyr "$PROJECT_NAME"-macosx-ub.zip "$PROJECT_NAME".app - rm -rf love-$LOVE_VERSION-macosx-ub.zip "$PROJECT_NAME".app __MACOSX + sed -i.bak -e '/UTExportedTypeDeclarations<\/key>/,/^\t<\/array>/d' \ + -e "s/>org.love2d.loveorg.${AUTHOR}.$IDENTITYLÖVE$TITLE