{- Generating and installing a desktop menu entry file. - - Copyright 2012 Joey Hess - - Licensed under the GNU GPL version 3 or higher. -} module Build.InstallDesktopFile where import Utility.Exception import Utility.FreeDesktop import Control.Applicative import System.Environment import System.Posix.User {- The command can be either just "git-annex", or the full path to use - to run it. -} desktop :: FilePath -> DesktopEntry desktop command = genDesktopEntry "Git Annex" "Track and sync the files in your Git Annex" False (command ++ " webapp") ["Network", "FileTransfer"] writeDesktop :: DesktopEntry -> IO () writeDesktop d = do destdir <- catchDefaultIO (getEnv "DESTDIR") "" uid <- fromIntegral <$> getRealUserID dest <- if uid /= 0 then userDesktopMenuFilePath "git-annex" else return $ systemDesktopMenuFilePath "git-annex" writeDesktopMenuFile d dest main = getArgs >>= go where go [] = error "specify git-annex command" go (command:_) = writeDesktop $ desktop command