{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE FlexibleContexts, MonoLocalBinds #-}
{-# LANGUAGE TypeApplications, DataKinds #-}
module Aura.Commands.O ( displayOrphans, adoptPkg ) where
import Aura.Core (orphans, sudo, liftEitherM)
import Aura.Pacman (pacman)
import Aura.Settings (Settings)
import Aura.Types
import BasePrelude
import Control.Monad.Freer
import Control.Monad.Freer.Error
import Control.Monad.Freer.Reader
import Data.Generics.Product (field)
import Data.Set.NonEmpty (NonEmptySet)
import qualified Data.Text.IO as T
import Lens.Micro.Extras (view)
displayOrphans :: IO ()
displayOrphans = orphans >>= traverse_ (T.putStrLn . view (field @"name"))
adoptPkg :: (Member (Reader Settings) r, Member (Error Failure) r, Member IO r) => NonEmptySet PkgName -> Eff r ()
adoptPkg pkgs = sudo . liftEitherM . pacman $ ["-D", "--asexplicit"] <> asFlag pkgs