packages feed

taffybar-2.0.0: src/System/Taffybar/Auth.hs

{-# LANGUAGE OverloadedStrings #-}
module System.Taffybar.Auth where

import           Control.Arrow
import           Control.Monad.Trans
import           Data.Maybe
import           System.Taffybar.Util
import           Text.Regex

fieldRegex :: Regex
fieldRegex = mkRegexWithOpts "^(.*?): *(.*?)$" True True

passGet :: MonadIO m => String -> m (Either String (String, [(String, String)]))
passGet credentialName =
  right (getPassComponents . lines) <$> runCommandFromPath ["pass", "show", credentialName]
  where getPassComponents passLines =
          let entries = map buildEntry $ catMaybes $ matchRegex fieldRegex <$> tail passLines
              buildEntry [fieldName, fieldValue] = (fieldName, fieldValue)
              buildEntry _ = ("", "")
          in (head passLines, entries)