module Reanimate.Driver.Magick
  ( magickCmd
  ) where

import System.IO.Unsafe (unsafePerformIO)
import System.Directory (findExecutable)

-- |The name of the ImageMagick command. On Unix-like operating systems, the
-- command \'convert\' does not conflict with the name of other commands. On
-- Windows, ImageMagick version 7 is readily available, the command \'magick\'
-- should be present, and is preferred over \'convert\'. If it is not present,
-- \'convert\' is assumed to be the relevant command.
magickCmd :: String
-- The use of 'unsafeperformIO' is justified on the basis that if \'magick\' is
-- found once, it will always be present.
magickCmd = unsafePerformIO $ do
  mPath <- findExecutable "magick"
  pure $ maybe "convert" (const "magick") mPath