module Cachix.Client
  ( main,
  )
where

import Cachix.Client.Commands as Commands
import Cachix.Client.Env (cachixVersion, mkEnv)
import Cachix.Client.OptionsParser (CachixCommand (..), getOpts)
import Protolude

main :: IO ()
main :: IO ()
main = do
  (CachixOptions
cachixoptions, CachixCommand
command) <- IO (CachixOptions, CachixCommand)
getOpts
  Env
env <- CachixOptions -> IO Env
mkEnv CachixOptions
cachixoptions
  case CachixCommand
command of
    AuthToken Maybe Text
token -> Env -> Maybe Text -> IO ()
Commands.authtoken Env
env Maybe Text
token
    GenerateKeypair Text
name -> Env -> Text -> IO ()
Commands.generateKeypair Env
env Text
name
    Push PushArguments
pushArgs -> Env -> PushArguments -> IO ()
Commands.push Env
env PushArguments
pushArgs
    WatchStore PushOptions
watchArgs Text
name -> Env -> PushOptions -> Text -> IO ()
Commands.watchStore Env
env PushOptions
watchArgs Text
name
    WatchExec PushOptions
pushArgs Text
name Text
cmd [Text]
args -> Env -> PushOptions -> Text -> Text -> [Text] -> IO ()
Commands.watchExec Env
env PushOptions
pushArgs Text
name Text
cmd [Text]
args
    Use Text
name UseOptions
useOptions -> Env -> Text -> UseOptions -> IO ()
Commands.use Env
env Text
name UseOptions
useOptions
    CachixCommand
Version -> Text -> IO ()
forall (m :: * -> *). MonadIO m => Text -> m ()
putText Text
cachixVersion