hopenpgp-tools 0.9 → 0.9.1
raw patch · 5 files changed
+40/−33 lines, 5 filesdep ~hOpenPGPdep ~optparse-applicative
Dependency ranges changed: hOpenPGP, optparse-applicative
Files
- HOpenPGP/Tools/ExpressionParsing.hs +1/−1
- hkt.hs +7/−6
- hokey.hs +6/−6
- hopenpgp-tools.cabal +7/−6
- hot.hs +19/−14
HOpenPGP/Tools/ExpressionParsing.hs view
@@ -64,7 +64,7 @@ <|> (A.asciiCI "dsa" *> pure (PKPPKA DSA)) <|> (A.asciiCI "elgamal" *> pure (PKPPKA ElgamalEncryptOnly)) <|> (A.asciiCI "ecdsa" *> pure (PKPPKA ECDSA))- <|> (A.asciiCI "ec" *> pure (PKPPKA EC))+ <|> (A.asciiCI "ecdh" *> pure (PKPPKA ECDH)) <|> (A.asciiCI "dh" *> pure (PKPPKA DH)) <|> (PKPInt <$> hexordec)
hkt.hs view
@@ -59,7 +59,7 @@ import Data.Tuple (swap) import System.Directory (getHomeDirectory) -import Options.Applicative.Builder (argument, command, footer, header, help, info, long, metavar, option, prefs, progDesc, showDefault, showHelpOnError, str, strOption, subparser, switch, value)+import Options.Applicative.Builder (argument, auto, command, footer, header, help, info, long, metavar, option, prefs, progDesc, showDefault, showHelpOnError, str, strOption, subparser, switch, value) import Options.Applicative.Extra (customExecParser, helper) import Options.Applicative.Types (Parser) @@ -117,7 +117,7 @@ ( long "keyring" <> metavar "FILE" <> help "file containing keyring" )))- <*> option+ <*> option auto ( long "output-format" <> metavar "FORMAT" <> value GraphViz@@ -134,7 +134,7 @@ ( long "keyring" <> metavar "FILE" <> help "file containing keyring" )))- <*> option+ <*> option auto ( long "output-format" <> metavar "FORMAT" <> value GraphViz@@ -159,10 +159,11 @@ cmd :: String -> Parser Command cmd homedir = subparser- ( command "list" (info ( CmdList <$> listO homedir) ( progDesc "list matching keys" ))- <> command "export-pubkeys" (info ( CmdExportPubkeys <$> listO homedir) ( progDesc "export matching keys to stdout" ))+ ( command "export-pubkeys" (info ( CmdExportPubkeys <$> listO homedir) ( progDesc "export matching keys to stdout" ))+ <> command "findpaths" (info ( CmdFindPaths <$> findPathsO homedir) ( progDesc "find short paths between keys" )) <> command "graph" (info ( CmdGraph <$> graphO homedir) ( progDesc "graph certifications" ))- <> command "findpaths" (info ( CmdFindPaths <$> findPathsO homedir) ( progDesc "find short paths between keys" )))+ <> command "list" (info ( CmdList <$> listO homedir) ( progDesc "list matching keys" ))+ ) banner' :: Handle -> IO () banner' h = hPutStrLn h (banner "hkt" ++ "\n" ++ warranty "hkt")
hokey.hs view
@@ -42,7 +42,7 @@ import Data.Conduit.Cereal (conduitGet, conduitPut) import qualified Data.Conduit.List as CL import Data.Conduit.OpenPGP.Keyring (conduitToTKsDropping)-import Data.List (unfoldr, elemIndex, findIndex, sort, sortBy, intercalate)+import Data.List (unfoldr, elemIndex, findIndex, nub, sort, sortBy, intercalate) import qualified Data.Map as Map import Data.Maybe (fromMaybe, mapMaybe, listToMaybe) import Data.Monoid ((<>), mconcat, Monoid(..))@@ -53,7 +53,7 @@ import qualified Data.Yaml as Y import GHC.Generics -import Options.Applicative.Builder (command, footer, header, help, info, long, metavar, prefs, progDesc, showDefault, showHelpOnError, option, subparser, value)+import Options.Applicative.Builder (auto, command, footer, header, help, info, long, metavar, prefs, progDesc, showDefault, showHelpOnError, option, subparser, value) import Options.Applicative.Extra (customExecParser, helper) import Options.Applicative.Types (Parser) @@ -234,7 +234,7 @@ lintO :: Parser LintOptions lintO = LintOptions- <$> option+ <$> option auto ( long "output-format" <> metavar "FORMAT" <> value Pretty@@ -252,8 +252,8 @@ cmd :: Parser Command cmd = subparser- ( command "lint" (info ( CmdLint <$> lintO) ( progDesc "check key(s) for 'best practices'" ))- <> command "canonicalize" (info ( pure CmdCanonicalize) ( progDesc "arrange key components in a canonical ordering" ))+ ( command "canonicalize" (info ( pure CmdCanonicalize) ( progDesc "arrange key components in a canonical ordering" ))+ <> command "lint" (info ( CmdLint <$> lintO) ( progDesc "check key(s) for 'best practices'" )) ) doLint :: LintOptions -> IO ()@@ -278,7 +278,7 @@ (indepthsort ua) (indepthsort s) indepthsort :: (Ord a, Ord b) => [(a,[b])] -> [(a,[b])]- indepthsort = sort . over (mapped._2) sort+ indepthsort = nub . sort . over (mapped._2) sort banner' :: Handle -> IO () banner' h = hPutStrLn h (banner "hokey" ++ "\n" ++ warranty "hokey")
hopenpgp-tools.cabal view
@@ -1,5 +1,5 @@ name: hopenpgp-tools-version: 0.9+version: 0.9.1 synopsis: hOpenPGP-based command-line tools description: command-line tools for performing some OpenPGP-related operations homepage: http://floss.scru.org/hopenpgp-tools@@ -24,10 +24,11 @@ , cereal-conduit , conduit >= 1.1 , conduit-extra >= 1.1- , hOpenPGP >= 1.0.1+ , errors+ , hOpenPGP >= 1.5.2 , lens , openpgp-asciiarmor >= 0.1- , optparse-applicative >= 0.7+ , optparse-applicative >= 0.10.0 , resourcet , text , transformers@@ -55,7 +56,7 @@ , ixset , lens , old-locale- , optparse-applicative >= 0.5.0+ , optparse-applicative >= 0.10.0 , resourcet , text , time@@ -83,7 +84,7 @@ , hOpenPGP >= 1.4 , ixset , lens- , optparse-applicative >= 0.5.0+ , optparse-applicative >= 0.10.0 , resourcet , text , time@@ -98,4 +99,4 @@ source-repository this type: git location: git://git.debian.org/users/clint/hopenpgp-tools.git- tag: hopenpgp-tools/0.9+ tag: hopenpgp-tools/0.9.1
hot.hs view
@@ -26,6 +26,7 @@ import Codec.Encryption.OpenPGP.Serialize () import Codec.Encryption.OpenPGP.Types import Control.Applicative ((<$>), (<*>), (*>), (<|>), optional, pure)+import Control.Error.Util (note) import Control.Monad.IO.Class (MonadIO, liftIO) import Control.Monad.Trans.Resource (runResourceT) import qualified Data.Attoparsec.Text as A@@ -44,9 +45,9 @@ import System.IO (stdin, stderr, stdout, Handle, hFlush, hPutStrLn, hSetBuffering, BufferMode(..)) -import Options.Applicative.Builder (command, footer, header, help, info, long, metavar, nullOption, reader, prefs, progDesc, showHelpOnError, strOption, subparser, ParseError(..))+import Options.Applicative.Builder (command, footer, header, help, info, long, metavar, option, eitherReader, prefs, progDesc, showHelpOnError, strOption, subparser) import Options.Applicative.Extra (customExecParser, helper)-import Options.Applicative.Types (Parser, ReadM(..))+import Options.Applicative.Types (Parser) data Command = DumpC | DeArmorC | ArmorC ArmoringOptions | FilterC FilteringOptions @@ -81,22 +82,26 @@ let a = Armor armortype (("Version", "hot " ++ showVersion version):maybe [] (\x -> [("Comment", x)]) comment ) (BL.fromChunks m) BL.putStr $ AA.encodeLazy [a] -armorTypeReader :: String -> ReadM ArmorType-armorTypeReader = ReadM . armorTypeReader'- where- armorTypeReader' "message" = Right ArmorMessage - armorTypeReader' "pubkeyblock" = Right ArmorPublicKeyBlock - armorTypeReader' "privkeyblock" = Right ArmorPrivateKeyBlock - armorTypeReader' "signature" = Right ArmorSignature- armorTypeReader' _ = Left (ErrorMsg "unknown armor type")+armorTypes :: [(String, ArmorType)]+armorTypes = [+ ("message", ArmorMessage)+ , ("pubkeyblock", ArmorPublicKeyBlock)+ , ("privkeyblock", ArmorPrivateKeyBlock)+ , ("signature", ArmorSignature)+ ] +armorTypeReader :: String -> Either String ArmorType+armorTypeReader = note "unknown armor type" . flip lookup armorTypes+ doFilter :: FilteringOptions -> IO () doFilter fo = runResourceT $ CB.sourceHandle stdin $= conduitGet (get :: Get Pkt) $= conduitFilter (parseExpressions fo) $= conduitPut put $$ CB.sinkHandle stdout aoP :: Parser ArmoringOptions aoP = ArmoringOptions <$> optional (strOption (long "comment" <> metavar "COMMENT" <> help "ASCII armor Comment field"))- <*> nullOption (long "armor-type" <> reader armorTypeReader <> metavar "ARMORTYPE" <> help "ASCII armor type")+ <*> option (eitherReader armorTypeReader) (long "armor-type" <> metavar "ARMORTYPE" <> armortypeHelp)+ where+ armortypeHelp = help $ "ASCII armor type " ++ show (map fst armorTypes) foP :: Parser FilteringOptions foP = FilteringOptions@@ -119,9 +124,9 @@ cmd :: Parser Command cmd = subparser- ( command "dump" (info ( pure DumpC ) ( progDesc "Dump OpenPGP packets from stdin" ))+ ( command "armor" (info ( ArmorC <$> aoP ) ( progDesc "Armor stdin to stdout" )) <> command "dearmor" (info ( pure DeArmorC ) ( progDesc "Dearmor stdin to stdout" ))- <> command "armor" (info ( ArmorC <$> aoP ) ( progDesc "Armor stdin to stdout" ))+ <> command "dump" (info ( pure DumpC ) ( progDesc "Dump OpenPGP packets from stdin" )) <> command "filter" (info ( FilterC <$> foP ) ( progDesc "Filter some packets from stdin to stdout" )) ) @@ -182,7 +187,7 @@ <|> (A.asciiCI "dsa" *> pure (SPPKA DSA)) <|> (A.asciiCI "elgamal" *> pure (SPPKA ElgamalEncryptOnly)) <|> (A.asciiCI "ecdsa" *> pure (SPPKA ECDSA))- <|> (A.asciiCI "ec" *> pure (SPPKA EC))+ <|> (A.asciiCI "ecdh" *> pure (SPPKA ECDH)) <|> (A.asciiCI "dh" *> pure (SPPKA DH)) <|> (A.asciiCI "binary" *> pure (SPSigType BinarySig)) <|> (A.asciiCI "canonicaltext" *> pure (SPSigType CanonicalTextSig))