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
cachixoptions, command :: CachixCommand
command) <- IO (CachixOptions, CachixCommand)
getOpts
  Env
env <- CachixOptions -> IO Env
mkEnv CachixOptions
cachixoptions
  case CachixCommand
command of
    AuthToken token :: Text
token -> Env -> Text -> IO ()
Commands.authtoken Env
env Text
token
    Create name :: Text
name -> Env -> Text -> IO ()
Commands.create Env
env Text
name
    GenerateKeypair name :: Text
name -> Env -> Text -> IO ()
Commands.generateKeypair Env
env Text
name
    Push pushArgs :: PushArguments
pushArgs -> Env -> PushArguments -> IO ()
Commands.push Env
env PushArguments
pushArgs
    Use name :: Text
name useOptions :: UseOptions
useOptions -> Env -> Text -> UseOptions -> IO ()
Commands.use Env
env Text
name UseOptions
useOptions
    Version -> Text -> IO ()
forall (m :: * -> *). MonadIO m => Text -> m ()
putText Text
cachixVersion