diff --git a/build.ps1 b/build.ps1 index 948a4c402..6c45ad7f1 100644 --- a/build.ps1 +++ b/build.ps1 @@ -2,6 +2,7 @@ $msBuild = 'C:\Windows\Microsoft.NET\Framework64\v4.0.30319\msbuild.exe' $outputFolder = '.\_output' $outputFolderMono = '.\_output_mono' $outputFolderOsx = '.\_output_osx' +$outputFolderOsxApp = '.\_output_osx_app' $testPackageFolder = '.\_tests\' $testSearchPattern = '*.Test\bin\x86\Release' $sourceFolder = '.\src' @@ -154,6 +155,22 @@ Function PackageOsx() Write-Host "##teamcity[progressFinish 'Creating OS X Package']" } + +Function PackageOsxApp() +{ + Write-Host "##teamcity[progressStart 'Creating OS X App Package']" + + if(Test-Path $outputFolderOsxApp) + { + Remove-Item -Recurse -Force $outputFolderOsxApp -ErrorAction Continue + } + + Copy-Item .\osx-app $outputFolderOsxApp\ -recurse + Copy-Item $outputFolderOsx\* $outputFolderOsxApp\Sonarr.app\Contents\MacOS -recurse + + Write-Host "##teamcity[progressFinish 'Creating OS X App Package']" +} + Function AddJsonNet() { get-childitem $outputFolder -File -Filter Newtonsoft.Json.* -Recurse | foreach ($_) {remove-item $_.fullname} @@ -235,5 +252,6 @@ Build RunGulp PackageMono PackageOsx +PackageOsxApp PackageTests CleanupWindowsPackage diff --git a/osx-app/Sonarr.app/Contents/Info.plist b/osx-app/Sonarr.app/Contents/Info.plist new file mode 100644 index 000000000..eeae50f41 --- /dev/null +++ b/osx-app/Sonarr.app/Contents/Info.plist @@ -0,0 +1,34 @@ + + + + + LSUIElement + + NSHumanReadableCopyright + GNU GPL v3 + LSApplicationCategoryType + public.app-category.entertainment + CFBundleDevelopmentRegion + English + CFBundleExecutable + Sonarr + CFBundleIconFile + sonarr.icns + CFBundleIdentifier + com.osx.sonarr.tv + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + Sonarr + CFBundlePackageType + APPL + CFBundleShortVersionString + 2.0 + CFBundleSignature + xmmd + CFBundleVersion + 2.0 + NSAppleScriptEnabled + YES + + diff --git a/osx-app/Sonarr.app/Contents/MacOS/Sonarr b/osx-app/Sonarr.app/Contents/MacOS/Sonarr new file mode 100755 index 000000000..377ab3469 --- /dev/null +++ b/osx-app/Sonarr.app/Contents/MacOS/Sonarr @@ -0,0 +1,41 @@ +#!/bin/sh + +#get the bundle's MacOS directory full path +DIR=$(cd "$(dirname "$0")"; pwd) + +#change these values to match your app +EXE_PATH="$DIR/nzbdrone.exe" +APPNAME="Sonarr" + +#set up environment +MONO_FRAMEWORK_PATH=/Library/Frameworks/Mono.framework/Versions/Current +export DYLD_FALLBACK_LIBRARY_PATH="$DIR:$MONO_FRAMEWORK_PATH/lib:/lib:/usr/lib" +export PATH="$MONO_FRAMEWORK_PATH/bin:$PATH" + +#mono version check +REQUIRED_MAJOR=3 +REQUIRED_MINOR=10 + +VERSION_TITLE="Cannot launch $APPNAME" +VERSION_MSG="$APPNAME requires Mono Runtime Environment(MRE) $REQUIRED_MAJOR.$REQUIRED_MINOR or later." +DOWNLOAD_URL="http://www.mono-project.com/download/#download-mac" + +MONO_VERSION="$(mono --version | grep 'Mono JIT compiler version ' | cut -f5 -d\ )" +MONO_VERSION_MAJOR="$(echo $MONO_VERSION | cut -f1 -d.)" +MONO_VERSION_MINOR="$(echo $MONO_VERSION | cut -f2 -d.)" +if [ -z "$MONO_VERSION" ] \ + || [ $MONO_VERSION_MAJOR -lt $REQUIRED_MAJOR ] \ + || [ $MONO_VERSION_MAJOR -eq $REQUIRED_MAJOR -a $MONO_VERSION_MINOR -lt $REQUIRED_MINOR ] +then + osascript \ + -e "set question to display dialog \"$VERSION_MSG\" with title \"$VERSION_TITLE\" buttons {\"Cancel\", \"Download...\"} default button 2" \ + -e "if button returned of question is equal to \"Download...\" then open location \"$DOWNLOAD_URL\"" + echo "$VERSION_TITLE" + echo "$VERSION_MSG" + exit 1 +fi + +MONO_EXEC="exec mono --debug" + +#run app using mono +$MONO_EXEC "$EXE_PATH" \ No newline at end of file diff --git a/osx-app/Sonarr.app/Contents/Resources/sonarr.icns b/osx-app/Sonarr.app/Contents/Resources/sonarr.icns new file mode 100644 index 000000000..884633ff3 Binary files /dev/null and b/osx-app/Sonarr.app/Contents/Resources/sonarr.icns differ