packages feed

hash-addressed-cli-2.1.0.0: library/HashAddressed/App/HashFunction/Options.hs

module HashAddressed.App.HashFunction.Options
  (
    hashFunctionRead,
    hashFunctionInstructions,
  )
  where

import Essentials
import HashAddressed.App.HashFunction.Naming

import Prelude (String)

import qualified Control.Monad as Monad
import qualified Data.List as List
import qualified Options.Applicative as Options

hashFunctionRead :: Options.ReadM HashFunctionName
hashFunctionRead = do
    string <- Options.str
    case List.lookup (normalizeHashFunction string) hashFunctions of
        Just x -> pure x
        Nothing -> Monad.fail $ "Unsupported hash function. Choices are: " <> choices

choices :: String
choices = "[ SHA-256 ]"

hashFunctionInstructions :: String
hashFunctionInstructions = "Choices: " <> choices <>
    "; space, dash, underscore, and letter case are ignored"