From b3d3372abf46ee1ec308c77201c00ab6d8bfeff2 Mon Sep 17 00:00:00 2001 From: joe Date: Fri, 11 Apr 2014 21:31:43 -0400 Subject: keyring home globals --- KeyRing.hs | 24 ++++++++++++++++-------- kiki.hs | 2 +- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/KeyRing.hs b/KeyRing.hs index 4058585..089b25a 100644 --- a/KeyRing.hs +++ b/KeyRing.hs @@ -11,6 +11,18 @@ import Data.Char import System.Directory ( getHomeDirectory, doesFileExist ) import Control.Arrow ( first, second ) +data HomeDir = + HomeDir { homevar :: String + , appdir :: String + , optfile_alts :: [String] + } + +home = HomeDir + { homevar = "GNUPGHOME" + , appdir = ".gnupg" + , optfile_alts = ["keys.conf","gpg.conf-2","gpg.conf"] + } + data KeyRing todo = error "unimplemented" @@ -37,11 +49,11 @@ getHomeDir protohome = do return (homedir,secring,pubring,workingkey) where envhomedir opt = do - gnupghome <- lookupEnv homevar >>= + gnupghome <- lookupEnv (homevar home) >>= \d -> return $ d >>= guard . (/="") >> d - home <- flip fmap getHomeDirectory $ + homed <- flip fmap getHomeDirectory $ \d -> fmap (const d) $ guard (d/="") - let homegnupg = (++('/':appdir)) <$> home + let homegnupg = (++('/':(appdir home))) <$> homed let val = (opt `mplus` gnupghome `mplus` homegnupg) return $ val @@ -52,7 +64,7 @@ getHomeDir protohome = do ofile <- fmap listToMaybe . flip (maybe (return [])) h $ \h -> let optfiles = map (second ((h++"/")++)) (maybe optfile_alts' (:[]) o') - optfile_alts' = zip (False:repeat True) optfile_alts + optfile_alts' = zip (False:repeat True) (optfile_alts home) o' = fmap (False,) o in filterM (doesFileExist . snd) optfiles args <- flip (maybe $ return []) ofile $ @@ -61,10 +73,6 @@ getHomeDir protohome = do where topair (x:xs) = (x,xs) return $ lookup "default-key" config >>= listToMaybe -homevar = "GNUPGHOME" -appdir = ".gnupg" -optfile_alts = ["keys.conf","gpg.conf-2","gpg.conf"] - #if MIN_VERSION_base(4,6,0) #else lookupEnv var = diff --git a/kiki.hs b/kiki.hs index d903b0f..9c88f6c 100644 --- a/kiki.hs +++ b/kiki.hs @@ -2407,7 +2407,7 @@ main = do let keypairs = catMaybes keypairs0 btcpairs = catMaybes btcpairs0 - (homedir,secring,pubring,grip0) <- getHomeDir ( concat <$> Map.lookup "--homedir" margs) + (homedir,secring,pubring,grip0) <- getHomeDir ( join . take 1 <$> Map.lookup "--homedir" margs) let keyrings = secring:pubring:keyrings_ -- cgit v1.2.3