git-annex/Assistant/Install/Menu.hs

48 lines
1.3 KiB
Haskell
Raw Normal View History

2013-04-20 23:27:36 +00:00
{- Assistant menu installation.
-
- Copyright 2013 Joey Hess <id@joeyh.name>
2013-04-20 23:27:36 +00:00
-
- Licensed under the GNU GPL version 3 or higher.
-}
{-# LANGUAGE CPP #-}
module Assistant.Install.Menu where
2013-07-10 00:50:41 +00:00
import Common
2013-04-20 23:27:36 +00:00
import Utility.FreeDesktop
2013-07-10 00:50:41 +00:00
installMenu :: FilePath -> FilePath -> FilePath -> FilePath -> IO ()
2013-04-22 15:24:48 +00:00
#ifdef darwin_HOST_OS
2013-12-15 21:10:24 +00:00
installMenu _command _menufile _iconsrcdir _icondir = return ()
2013-04-22 15:24:48 +00:00
#else
2013-12-15 21:10:24 +00:00
installMenu command menufile iconsrcdir icondir = do
2013-07-10 00:50:41 +00:00
writeDesktopMenuFile (fdoDesktopMenu command) menufile
installIcon (iconsrcdir </> "logo.svg") $
iconFilePath (iconBaseName ++ ".svg") "scalable" icondir
installIcon (iconsrcdir </> "logo_16x16.png") $
2013-07-10 00:50:41 +00:00
iconFilePath (iconBaseName ++ ".png") "16x16" icondir
2013-04-20 23:27:36 +00:00
#endif
{- The command can be either just "git-annex", or the full path to use
- to run it. -}
fdoDesktopMenu :: FilePath -> DesktopEntry
fdoDesktopMenu command = genDesktopEntry
"Git Annex"
"Track and sync the files in your Git Annex"
False
(command ++ " webapp")
2013-07-10 00:50:41 +00:00
(Just iconBaseName)
2013-04-20 23:27:36 +00:00
["Network", "FileTransfer"]
2013-07-10 00:50:41 +00:00
installIcon :: FilePath -> FilePath -> IO ()
installIcon src dest = do
createDirectoryIfMissing True (parentDir dest)
2013-07-10 00:50:41 +00:00
withBinaryFile src ReadMode $ \hin ->
withBinaryFile dest WriteMode $ \hout ->
hGetContents hin >>= hPutStr hout
iconBaseName :: String
iconBaseName = "git-annex"