packages feed

hsinstall-2.7: src/app/HSInstall/Common.hs

{-# LANGUAGE DeriveGeneric #-}

module HSInstall.Common
  ( ExeFile (..)
  , TmplDir (..)
  , dumpStockIcon
  , tmplDir
  )
  where

import Control.Newtype.Generics
import Data.Maybe ( fromMaybe )
import GHC.Generics
import HSInstall.Paths ( getShareDir )
import Paths_hsinstall ( getDataDir )
import System.Directory ( copyFile )
import System.FilePath ( (</>), (<.>) )


newtype TmplDir = TmplDir FilePath
  deriving Generic

instance Newtype TmplDir

tmplDir :: TmplDir
tmplDir = pack $ "." </> "hsinstall"


newtype ExeFile = ExeFile FilePath
  deriving Generic

instance Newtype ExeFile


dumpStockIcon :: Maybe FilePath -> IO ()
dumpStockIcon mbDestPath = do
  shareDir <- getShareDir getDataDir
  let iconFilename = "unix-terminal" <.> "svg"
  let iconSourcePath = shareDir </> "resources" </> iconFilename
  let destPath = fromMaybe iconFilename mbDestPath
  copyFile iconSourcePath destPath