mirror of
https://github.com/TangentFoxy/love-release.git
synced 2025-10-02 07:12:29 +00:00
Rewrite Mac OS X module
This commit is contained in:
@@ -4,152 +4,97 @@ OPTIONS="M"
|
|||||||
LONG_OPTIONS=""
|
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 [[ -z $AUTHOR ]]; then
|
||||||
if [ "$CONFIG" = true ]; then
|
exit_module "options" "Missing maintainer's name. Use -a or --Mauthor."
|
||||||
if [ -n "${INI__macosx__maintainer_name}" ]; then
|
fi
|
||||||
MAINTAINER_NAME=${INI__macosx__maintainer_name}
|
if [[ -z $GAME_VERSION ]]; then
|
||||||
fi
|
GAME_VERSION="$LOVE_VERSION"
|
||||||
if [ -n "${INI__macosx__icon}" ]; then
|
|
||||||
PROJECT_ICNS=${INI__macosx__icon}
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [[ -n $ICON ]]; then
|
||||||
# Options
|
if [[ -d $ICON ]]; then
|
||||||
while getoptex "$SCRIPT_ARGS" "$@"
|
for file in $ICON/*.icns; do
|
||||||
do
|
if [[ -f $file ]]; then
|
||||||
if [ "$OPTOPT" = "osx-icon" ]; then
|
ICON="$file"
|
||||||
PROJECT_ICNS=$OPTARG
|
break
|
||||||
elif [ "$OPTOPT" = "osx-maintainer-name" ]; then
|
else
|
||||||
MAINTAINER_NAME=$OPTARG
|
found=false
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
fi
|
||||||
|
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
|
create_love_file 9
|
||||||
|
cd "$RELEASE_DIR"
|
||||||
|
|
||||||
# Info.plist
|
|
||||||
## TODO: Remove this and replace it by parsing the file instead of overwriting
|
|
||||||
INFO_PLIST="<?xml version=\"1.0\" encoding=\"UTF-8\"?>
|
|
||||||
<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">
|
|
||||||
<plist version=\"1.0\">
|
|
||||||
<dict>
|
|
||||||
<key>BuildMachineOSBuild</key>
|
|
||||||
<string>13D65</string>
|
|
||||||
<key>CFBundleDevelopmentRegion</key>
|
|
||||||
<string>English</string>
|
|
||||||
<key>CFBundleDocumentTypes</key>
|
|
||||||
<array>
|
|
||||||
<dict>
|
|
||||||
<key>CFBundleTypeIconFile</key>
|
|
||||||
<string>LoveDocument.icns</string>
|
|
||||||
<key>CFBundleTypeName</key>
|
|
||||||
<string>LÖVE Project</string>
|
|
||||||
<key>CFBundleTypeRole</key>
|
|
||||||
<string>Viewer</string>
|
|
||||||
<key>LSHandlerRank</key>
|
|
||||||
<string>Owner</string>
|
|
||||||
<key>LSItemContentTypes</key>
|
|
||||||
<array>
|
|
||||||
<string>org.love2d.love-game</string>
|
|
||||||
</array>
|
|
||||||
</dict>
|
|
||||||
<dict>
|
|
||||||
<key>CFBundleTypeName</key>
|
|
||||||
<string>Folder</string>
|
|
||||||
<key>CFBundleTypeOSTypes</key>
|
|
||||||
<array>
|
|
||||||
<string>fold</string>
|
|
||||||
</array>
|
|
||||||
<key>CFBundleTypeRole</key>
|
|
||||||
<string>Viewer</string>
|
|
||||||
<key>LSHandlerRank</key>
|
|
||||||
<string>None</string>
|
|
||||||
</dict>
|
|
||||||
</array>
|
|
||||||
<key>CFBundleExecutable</key>
|
|
||||||
<string>love</string>
|
|
||||||
<key>CFBundleIconFile</key>
|
|
||||||
<string>${PROJECT_ICNS##/*/}</string>
|
|
||||||
<key>CFBundleIdentifier</key>
|
|
||||||
<string>org.$MAINTAINER_NAME.$PACKAGE_NAME</string>
|
|
||||||
<key>CFBundleInfoDictionaryVersion</key>
|
|
||||||
<string>6.0</string>
|
|
||||||
<key>CFBundleName</key>
|
|
||||||
<string>$PROJECT_NAME</string>
|
|
||||||
<key>CFBundlePackageType</key>
|
|
||||||
<string>APPL</string>
|
|
||||||
<key>CFBundleShortVersionString</key>
|
|
||||||
<string>$LOVE_VERSION</string>
|
|
||||||
<key>CFBundleSignature</key>
|
|
||||||
<string>LoVe</string>
|
|
||||||
<key>DTCompiler</key>
|
|
||||||
<string>com.apple.compilers.llvm.clang.1_0</string>
|
|
||||||
<key>DTPlatformBuild</key>
|
|
||||||
<string>5B1008</string>
|
|
||||||
<key>DTPlatformVersion</key>
|
|
||||||
<string>GM</string>
|
|
||||||
<key>DTSDKBuild</key>
|
|
||||||
<string>13C64</string>
|
|
||||||
<key>DTSDKName</key>
|
|
||||||
<string>macosx10.9</string>
|
|
||||||
<key>DTXcode</key>
|
|
||||||
<string>0511</string>
|
|
||||||
<key>DTXcodeBuild</key>
|
|
||||||
<string>5B1008</string>
|
|
||||||
<key>LSApplicationCategoryType</key>
|
|
||||||
<string>public.app-category.games</string>
|
|
||||||
<key>NSHumanReadableCopyright</key>
|
|
||||||
<string>© 2006-2014 LÖVE Development Team</string>
|
|
||||||
<key>NSPrincipalClass</key>
|
|
||||||
<string>NSApplication</string>
|
|
||||||
</dict>
|
|
||||||
</plist>"
|
|
||||||
|
|
||||||
|
|
||||||
## MacOS 64-bits ##
|
## MacOS 64-bits ##
|
||||||
if [ "$LOVE_GT_090" = true ]; then
|
if compare_version "$LOVE_VERSION" '>=' '0.9.0'; then
|
||||||
if [ -f "$CACHE_DIR/love-$LOVE_VERSION-macosx-x64.zip" ]; then
|
if [[ ! -f "$CACHE_DIR/love-$LOVE_VERSION-macosx-x64.zip" ]]; then
|
||||||
cp $CACHE_DIR/love-$LOVE_VERSION-macosx-x64.zip ./
|
|
||||||
else
|
|
||||||
curl -L -C - -o $CACHE_DIR/love-$LOVE_VERSION-macosx-x64.zip https://bitbucket.org/rude/love/downloads/love-$LOVE_VERSION-macosx-x64.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
|
fi
|
||||||
unzip -qq love-$LOVE_VERSION-macosx-x64.zip
|
unzip -qq "$CACHE_DIR/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
|
|
||||||
|
|
||||||
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
|
sed -i.bak -e '/<key>UTExportedTypeDeclarations<\/key>/,/^\t<\/array>/d' \
|
||||||
rm -rf love-$LOVE_VERSION-macosx-x64.zip "$PROJECT_NAME".app __MACOSX
|
-e "s/>org.love2d.love</>org.${AUTHOR}.$IDENTITY</" \
|
||||||
|
-e "s/$LOVE_VERSION/$GAME_VERSION/" \
|
||||||
|
-e "s/Love.icns/$icon/" \
|
||||||
|
-e "s/>LÖVE</>$TITLE</" \
|
||||||
|
"${TITLE}.app/Contents/Info.plist"
|
||||||
|
rm "${TITLE}.app/Contents/Info.plist.bak"
|
||||||
|
|
||||||
|
zip -9 -qyr "${TITLE}-macosx-x64.zip" "${TITLE}.app"
|
||||||
|
rm -rf love-$LOVE_VERSION-macosx-x64.zip "${TITLE}.app" __MACOSX
|
||||||
|
|
||||||
## MacOS 32-bits ##
|
## MacOS 32-bits ##
|
||||||
else
|
else
|
||||||
if [ -f "$CACHE_DIR/love-$LOVE_VERSION-macosx-ub.zip" ]; then
|
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
|
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
|
fi
|
||||||
unzip -qq love-$LOVE_VERSION-macosx-ub.zip
|
unzip -qq "$CACHE_DIR/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
|
|
||||||
cp "$PROJECT_ICNS" "$PROJECT_NAME".app/Contents/Resources 2> /dev/null
|
|
||||||
|
|
||||||
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
|
sed -i.bak -e '/<key>UTExportedTypeDeclarations<\/key>/,/^\t<\/array>/d' \
|
||||||
rm -rf love-$LOVE_VERSION-macosx-ub.zip "$PROJECT_NAME".app __MACOSX
|
-e "s/>org.love2d.love</>org.${AUTHOR}.$IDENTITY</" \
|
||||||
|
-e "s/$LOVE_VERSION/$GAME_VERSION/" \
|
||||||
|
-e "s/Love.icns/$icon/" \
|
||||||
|
-e "s/>LÖVE</>$TITLE</" \
|
||||||
|
"${TITLE}.app/Contents/Info.plist"
|
||||||
|
rm "${TITLE}.app/Contents/Info.plist.bak"
|
||||||
|
|
||||||
|
zip -9 -qyr "${TITLE}-macosx-ub.zip" "${TITLE}.app"
|
||||||
|
rm -rf love-$LOVE_VERSION-macosx-ub.zip "${TITLE}.app" __MACOSX
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
unset PROJECT_ICNS
|
|
||||||
exit_module
|
exit_module
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user