diff options
Diffstat (limited to 'kiki.hs')
-rw-r--r-- | kiki.hs | 13 |
1 files changed, 10 insertions, 3 deletions
@@ -23,6 +23,7 @@ import Data.Maybe | |||
23 | import Data.OpenPGP | 23 | import Data.OpenPGP |
24 | import Data.Ord | 24 | import Data.Ord |
25 | import Data.String | 25 | import Data.String |
26 | import Text.Show.Pretty as PP ( ppShow ) | ||
26 | import Data.Text.Encoding | 27 | import Data.Text.Encoding |
27 | import System.Posix.Files | 28 | import System.Posix.Files |
28 | import Foreign.C.Types (CTime(..)) | 29 | import Foreign.C.Types (CTime(..)) |
@@ -1309,6 +1310,8 @@ kiki "merge" [] = do | |||
1309 | , " HOMEDIR/{secring.gpg,pubring.gpg}" | 1310 | , " HOMEDIR/{secring.gpg,pubring.gpg}" |
1310 | , " HOMEDIR defaults to your GnuPG home directory." | 1311 | , " HOMEDIR defaults to your GnuPG home directory." |
1311 | , "" | 1312 | , "" |
1313 | , " --agent Use gpg-agent." | ||
1314 | , "" | ||
1312 | , " FILE A path to a key file to read or update." | 1315 | , " FILE A path to a key file to read or update." |
1313 | , "" | 1316 | , "" |
1314 | , "MODIFIERS" | 1317 | , "MODIFIERS" |
@@ -1335,15 +1338,19 @@ kiki "merge" args | "--help" `elem` args = do | |||
1335 | kiki "merge" [] | 1338 | kiki "merge" [] |
1336 | -- TODO: more help | 1339 | -- TODO: more help |
1337 | kiki "merge" args = do | 1340 | kiki "merge" args = do |
1338 | hPutStrLn stderr $ show op | 1341 | hPutStrLn stderr $ ppShow op |
1339 | KikiResult rt report <- runKeyRing op | 1342 | KikiResult rt report <- runKeyRing (mbAgent op) |
1340 | case rt of | 1343 | case rt of |
1341 | KikiSuccess rt -> return () | 1344 | KikiSuccess rt -> return () |
1342 | err -> putStrLn $ errorString err | 1345 | err -> putStrLn $ errorString err |
1343 | forM_ report $ \(fname,act) -> do | 1346 | forM_ report $ \(fname,act) -> do |
1344 | putStrLn $ fname ++ ": " ++ reportString act | 1347 | putStrLn $ fname ++ ": " ++ reportString act |
1345 | where | 1348 | where |
1346 | (_,(_,op)) = foldl' buildOp (True,(flow0,noop)) args | 1349 | (_,(_,op)) = foldl' buildOp (True,(flow0,noop)) args' |
1350 | (args',mbAgent) = case break (=="--agent") args of | ||
1351 | (as,[]) -> (args, id) | ||
1352 | (as,_:bs) -> ( as++bs | ||
1353 | , \op -> op { opPassphrases = withAgent (opPassphrases op) }) | ||
1347 | noop = KeyRingOperation | 1354 | noop = KeyRingOperation |
1348 | { opFiles = Map.empty | 1355 | { opFiles = Map.empty |
1349 | , opTransforms = [] | 1356 | , opTransforms = [] |