Add --list-fields to list a host's currently set privdata fields.

This commit is contained in:
Joey Hess 2014-06-19 14:56:50 -04:00
parent 42594d6b4c
commit f674c56119
4 changed files with 12 additions and 0 deletions

1
debian/changelog vendored
View File

@ -1,6 +1,7 @@
propellor (0.7.1) UNRELEASED; urgency=medium
* Add --edit to edit a privdata value in $EDITOR.
* Add --list-fields to list a host's currently set privdata fields.
-- Joey Hess <joeyh@debian.org> Thu, 19 Jun 2014 14:27:21 -0400

View File

@ -30,6 +30,7 @@ usage = do
, " propellor --set hostname field"
, " propellor --dump hostname field"
, " propellor --edit hostname field"
, " propellor --list-fields hostname"
]
exitFailure
@ -43,6 +44,7 @@ processCmdLine = go =<< getArgs
go ("--set":h:f:[]) = withprivfield f (return . Set h)
go ("--dump":h:f:[]) = withprivfield f (return . Dump h)
go ("--edit":h:f:[]) = withprivfield f (return . Edit h)
go ("--list-fields":h:[]) = return $ ListFields h
go ("--continue":s:[]) = case readish s of
Just cmdline -> return $ Continue cmdline
Nothing -> errorMessage "--continue serialization failure"
@ -74,6 +76,7 @@ defaultMain hostlist = do
go _ (Set hn field) = setPrivData hn field
go _ (Dump hn field) = dumpPrivData hn field
go _ (Edit hn field) = editPrivData hn field
go _ (ListFields hn) = listPrivDataFields hn
go _ (AddKey keyid) = addKey keyid
go _ (Chain hn) = withhost hn $ \h -> do
r <- runPropellor h $ ensureProperties $ hostProperties h

View File

@ -68,6 +68,13 @@ editPrivData host field = do
readFile f
setPrivDataTo host field v'
listPrivDataFields :: HostName -> IO ()
listPrivDataFields host = do
putStrLn (host ++ "'s currently set privdata fields:")
mapM_ list . M.keys =<< decryptPrivData host
where
list = putStrLn . ("\t" ++) . shellEscape . show
setPrivDataTo :: HostName -> PrivDataField -> String -> IO ()
setPrivDataTo host field value = do
makePrivDataDir

View File

@ -138,6 +138,7 @@ data CmdLine
| Set HostName PrivDataField
| Dump HostName PrivDataField
| Edit HostName PrivDataField
| ListFields HostName
| AddKey String
| Continue CmdLine
| Chain HostName