packages feed

aws-secrets-0.0.0.0: library/AWS/Secrets/Config.hs

{- |

This library uses the AWS Command Line Interface. By default, this is
expected to be found as an executable called "aws" on the binary PATH.
This can be customized using 'setAwsCli'.

-}
module AWS.Secrets.Config
  ( SecretsConfig,
    secretsConfig,

    -- ** Region
    AwsRegion (..),
    getAwsRegion,
    getAwsRegionText,

    -- ** AWS command-line tool
    getAwsCli,
    setAwsCli,
    AwsCli (..),
    getAwsCliFilePath,
  )
where

import Data.Text (Text)
import System.IO (FilePath)

data SecretsConfig = SecretConfig
  { secretsConfigAwsCli :: AwsCli,
    secretsConfigAwsRegion :: AwsRegion
  }

newtype AwsCli = AwsCli FilePath

newtype AwsRegion = AwsRegion Text

defaultAwsCli :: AwsCli
defaultAwsCli = AwsCli "aws"

secretsConfig :: AwsRegion -> SecretsConfig
secretsConfig secretsConfigAwsRegion =
  SecretConfig {secretsConfigAwsCli = defaultAwsCli, secretsConfigAwsRegion}

setAwsCli :: AwsCli -> SecretsConfig -> SecretsConfig
setAwsCli secretsConfigAwsCli config = config {secretsConfigAwsCli}

getAwsCli :: SecretsConfig -> AwsCli
getAwsCli = secretsConfigAwsCli

getAwsRegion :: SecretsConfig -> AwsRegion
getAwsRegion = secretsConfigAwsRegion

getAwsCliFilePath :: AwsCli -> FilePath
getAwsCliFilePath (AwsCli x) = x

getAwsRegionText :: AwsRegion -> Text
getAwsRegionText (AwsRegion x) = x