packages feed

pfile-0.1.0.0: src/PFile/Main/Which.hs

{- |
Module:      PFile.Main.Which
Copyright:   (c) 2024 Illia Shkroba
License:     BSD3
Maintainer:  Illia Shkroba <is@pjwstk.edu.pl>
Stability:   unstable
Portability: non-portable (Non-Unix systems are not supported)

Main for `pfile which`.
-}

{-# LANGUAGE FlexibleContexts  #-}
{-# LANGUAGE LambdaCase        #-}
{-# LANGUAGE OverloadedStrings #-}

module PFile.Main.Which
  ( main
  ) where

import           PFile.CLI.Which (Options (..))
import           PFile.Env       (Env)
import qualified PFile.Log       as Log
import qualified PFile.Profile   as Profile
import           Protolude

main :: (MonadReader Env m, MonadIO m) => Options -> m ()
main Options =
  Profile.loadCurrent & runExceptT >>= \case
    Left error -> do
      Log.info $ Profile.showLoadCurrentError error
      Log.panic
        $  "No current profile set. Use `pfile new` to create a profile and"
        <> " `pfile switch` to switch to it."
    Right Profile.Profile {Profile.name = Profile.Name name} -> putStrLn name