summaryrefslogtreecommitdiff
path: root/src/Propellor/PrivData.hs
diff options
context:
space:
mode:
authorJoey Hess2014-06-01 16:58:05 -0400
committerJoey Hess2014-06-01 16:58:05 -0400
commit740740d21553e45447259c3a21e95e94b1e59a42 (patch)
tree40d91a31b776de6b3143b713900c5ea03bc2739d /src/Propellor/PrivData.hs
parentd224463dcd45b798c532d75ed84d9b1282b83e85 (diff)
Added --dump to dump out a field of a host's privdata. Useful for editing it.
Diffstat (limited to 'src/Propellor/PrivData.hs')
-rw-r--r--src/Propellor/PrivData.hs12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/Propellor/PrivData.hs b/src/Propellor/PrivData.hs
index 54f67d73..5ddbdcff 100644
--- a/src/Propellor/PrivData.hs
+++ b/src/Propellor/PrivData.hs
@@ -49,7 +49,7 @@ setPrivData host field = do
value <- chomp <$> hGetContentsStrict stdin
makePrivDataDir
let f = privDataFile host
- m <- fromMaybe M.empty . readish <$> gpgDecrypt f
+ m <- decryptPrivData host
let m' = M.insert field value m
gpgEncrypt f (show m')
putStrLn "Private data set."
@@ -59,6 +59,16 @@ setPrivData host field = do
| end s == "\n" = chomp (beginning s)
| otherwise = s
+dumpPrivData :: HostName -> PrivDataField -> IO ()
+dumpPrivData host field = go . M.lookup field =<< decryptPrivData host
+ where
+ go Nothing = error "Requested privdata is not set."
+ go (Just s) = putStrLn s
+
+decryptPrivData :: HostName -> IO (M.Map PrivDataField String)
+decryptPrivData host = fromMaybe M.empty . readish
+ <$> gpgDecrypt (privDataFile host)
+
makePrivDataDir :: IO ()
makePrivDataDir = createDirectoryIfMissing False privDataDir