summaryrefslogtreecommitdiff
path: root/src/Propellor/Gpg.hs
diff options
context:
space:
mode:
authorJoey Hess2015-09-23 13:59:59 -0400
committerJoey Hess2015-09-23 14:00:42 -0400
commit72713cadcc4ff1b6594f2e648e5672764326cdd7 (patch)
treebbc54ade33aec69cc83b50abcf39e5b127247cbc /src/Propellor/Gpg.hs
parent96047530cac80061156776af613d60ea02dbb0e6 (diff)
Added --rm-key.
Diffstat (limited to 'src/Propellor/Gpg.hs')
-rw-r--r--src/Propellor/Gpg.hs56
1 files changed, 36 insertions, 20 deletions
diff --git a/src/Propellor/Gpg.hs b/src/Propellor/Gpg.hs
index f2ae8f9a..46f2c7d9 100644
--- a/src/Propellor/Gpg.hs
+++ b/src/Propellor/Gpg.hs
@@ -41,10 +41,10 @@ useKeyringOpts =
addKey :: KeyId -> IO ()
addKey keyid = exitBool =<< allM (uncurry actionMessage)
[ ("adding key to propellor's keyring", addkeyring)
- , ("staging propellor's keyring", gitadd keyring)
- , ("updating encryption of any privdata", reencryptprivdata)
+ , ("staging propellor's keyring", gitAdd keyring)
+ , ("updating encryption of any privdata", reencryptPrivData)
, ("configuring git signing to use key", gitconfig)
- , ("committing changes", gitcommit)
+ , ("committing changes", gitCommitKeyRing "add-key")
]
where
addkeyring = do
@@ -55,18 +55,6 @@ addKey keyid = exitBool =<< allM (uncurry actionMessage)
unwords (useKeyringOpts ++ ["--import"])
]
- reencryptprivdata = ifM (doesFileExist privDataFile)
- ( do
- gpgEncrypt privDataFile =<< gpgDecrypt privDataFile
- gitadd privDataFile
- , return True
- )
-
- gitadd f = boolSystem "git"
- [ Param "add"
- , File f
- ]
-
gitconfig = ifM (snd <$> processTranscript "gpg" ["--list-secret-keys", keyid] Nothing)
( boolSystem "git"
[ Param "config"
@@ -78,11 +66,39 @@ addKey keyid = exitBool =<< allM (uncurry actionMessage)
return True
)
- gitcommit = gitCommit
- [ File keyring
- , Param "-m"
- , Param "propellor addkey"
- ]
+rmKey :: KeyId -> IO ()
+rmKey keyid = exitBool =<< allM (uncurry actionMessage)
+ [ ("removing key from propellor's keyring", rmkeyring)
+ , ("staging propellor's keyring", gitAdd keyring)
+ , ("updating encryption of any privdata", reencryptPrivData)
+ , ("committing changes", gitCommitKeyRing "rm-key")
+ ]
+ where
+ rmkeyring = boolSystem "gpg" $
+ (map Param useKeyringOpts) ++
+ [Param "--delete-key", Param keyid]
+
+reencryptPrivData :: IO Bool
+reencryptPrivData = ifM (doesFileExist privDataFile)
+ ( do
+ gpgEncrypt privDataFile =<< gpgDecrypt privDataFile
+ gitAdd privDataFile
+ , return True
+ )
+
+gitAdd :: FilePath -> IO Bool
+gitAdd f = boolSystem "git"
+ [ Param "add"
+ , File f
+ ]
+
+gitCommitKeyRing :: String -> IO Bool
+gitCommitKeyRing action = gitCommit
+ [ File keyring
+ , File privDataFile
+ , Param "-m"
+ , Param ("propellor " ++ action)
+ ]
-- Adds --gpg-sign if there's a keyring.
gpgSignParams :: [CommandParam] -> IO [CommandParam]