From 4baaab02cf33c6539d12aa9a76b0b6949f3783f3 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 23 Sep 2012 11:42:44 -0400 Subject: install Jimmy's .app on OS X I'm guessing that ~/Desktop/git-annex.app will be visiable. For the system-wide installation, I don't know where to put it, though somewhere in /Library seems likely. --- Build/InstallDesktopFile.hs | 71 ++++++++++++++++++++++++++++----------------- 1 file changed, 45 insertions(+), 26 deletions(-) (limited to 'Build') diff --git a/Build/InstallDesktopFile.hs b/Build/InstallDesktopFile.hs index 3f8b980cc..9c721f968 100644 --- a/Build/InstallDesktopFile.hs +++ b/Build/InstallDesktopFile.hs @@ -21,6 +21,7 @@ import Control.Monad import System.Directory import System.Environment import System.Posix.User +import System.Posix.Types import System.Posix.Files import System.FilePath @@ -73,38 +74,56 @@ writeFDODesktop command = do writeOSXDesktop :: FilePath -> IO () writeOSXDesktop command = do home <- myHomeDir + let base = "Library" "LaunchAgents" label ++ ".plist" autostart <- ifM isRoot ( inDestDir $ "/" base , inDestDir $ home base) createDirectoryIfMissing True (parentDir autostart) - writeFile autostart $ unlines - [ "" - , "" - , "" - , "" - , "Label" - , "" ++ label ++ "" - , "ProgramArguments" - , "" - , "" ++ command ++ "" - , "assistant" - , "--autostart" - , "" - , "RunAtLoad" - , "" - , "" - ] + writeFile autostart $ genOSXAutoStartFile label command - ifM isRoot - ( return () - , do - let commandfile = home "Desktop" "git-annex-webapp.command" - writeFile commandfile $ unwords [command, "webapp"] - mode <- fileMode <$> getFileStatus commandfile - setFileMode commandfile $ mode `unionFileModes` ownerExecuteMode - ) - + let appdir = "git-annex.app" + installOSXAppFile appdir "Contents/Info.plist" Nothing + installOSXAppFile appdir "Contents/Resources/git-annex.icns" Nothing + installOSXAppFile appdir "Contents/MacOS/git-annex" (Just webappscript) where label = "com.branchable.git-annex.assistant" + webappscript = unlines + [ "#!/bin/sh" + , command ++ " webapp" + ] + +installOSXAppFile :: FilePath -> FilePath -> Maybe String -> IO () +installOSXAppFile appdir appfile mcontent = do + let src = "ui-macos" appdir appfile + home <- myHomeDir + dest <- ifM isRoot + -- no idea where to install as root + ( return $ "/Library/git-annex" appdir appfile + , return $ home "Desktop" appdir appfile + ) + content <- maybe (readFile src) return mcontent + createDirectoryIfMissing True (parentDir dest) + writeFile dest content + mode <- fileMode <$> getFileStatus src + setFileMode dest mode + +genOSXAutoStartFile :: String -> String -> String +genOSXAutoStartFile label command = unlines + [ "" + , "" + , "" + , "" + , "Label" + , "" ++ label ++ "" + , "ProgramArguments" + , "" + , "" ++ command ++ "" + , "assistant" + , "--autostart" + , "" + , "RunAtLoad" + , "" + , "" + ] writeDesktop :: FilePath -> IO () #ifdef darwin_HOST_OS -- cgit v1.2.3