3125da54f6
Since optparse-applicative display "FOO" as "[FOO]", the paramOptional modifier which wrapped it in square brackets was removed from most places.
119 lines
2.7 KiB
Haskell
119 lines
2.7 KiB
Haskell
{- git-annex usage messages
|
|
-
|
|
- Copyright 2010-2011 Joey Hess <id@joeyh.name>
|
|
-
|
|
- Licensed under the GNU GPL version 3 or higher.
|
|
-}
|
|
|
|
module CmdLine.Usage where
|
|
|
|
import Common.Annex
|
|
|
|
import Types.Command
|
|
|
|
import System.Console.GetOpt
|
|
|
|
usageMessage :: String -> String
|
|
usageMessage s = "Usage: " ++ s
|
|
|
|
{- Usage message with lists of commands by section. -}
|
|
usage :: String -> [Command] -> String
|
|
usage header cmds = unlines $ usageMessage header : concatMap go [minBound..]
|
|
where
|
|
go section
|
|
| null cs = []
|
|
| otherwise =
|
|
[ ""
|
|
, descSection section ++ ":"
|
|
, ""
|
|
] ++ map cmdline cs
|
|
where
|
|
cs = filter (\c -> cmdsection c == section) scmds
|
|
cmdline c = concat
|
|
[ cmdname c
|
|
, namepad (cmdname c)
|
|
, cmdparamdesc c
|
|
, descpad (cmdparamdesc c)
|
|
, cmddesc c
|
|
]
|
|
pad n s = replicate (n - length s) ' '
|
|
namepad = pad $ longest cmdname + 1
|
|
descpad = pad $ longest cmdparamdesc + 2
|
|
longest f = foldl max 0 $ map (length . f) cmds
|
|
scmds = sort cmds
|
|
|
|
{- Usage message for a single command. -}
|
|
commandUsage :: Command -> String
|
|
commandUsage cmd = unlines
|
|
[ usageInfo header (cmdoptions cmd)
|
|
, "To see additional options common to all commands, run: git annex help options"
|
|
]
|
|
where
|
|
header = usageMessage $ unwords
|
|
[ "git-annex"
|
|
, cmdname cmd
|
|
, cmdparamdesc cmd
|
|
, "[option ...]"
|
|
]
|
|
|
|
{- Descriptions of params used in usage messages. -}
|
|
paramPaths :: String
|
|
paramPaths = paramRepeating paramPath -- most often used
|
|
paramPath :: String
|
|
paramPath = "PATH"
|
|
paramKey :: String
|
|
paramKey = "KEY"
|
|
paramDesc :: String
|
|
paramDesc = "DESC"
|
|
paramUrl :: String
|
|
paramUrl = "URL"
|
|
paramNumber :: String
|
|
paramNumber = "NUMBER"
|
|
paramNumRange :: String
|
|
paramNumRange = "NUM|RANGE"
|
|
paramRemote :: String
|
|
paramRemote = "REMOTE"
|
|
paramField :: String
|
|
paramField = "FIELD"
|
|
paramGlob :: String
|
|
paramGlob = "GLOB"
|
|
paramName :: String
|
|
paramName = "NAME"
|
|
paramValue :: String
|
|
paramValue = "VALUE"
|
|
paramUUID :: String
|
|
paramUUID = "UUID"
|
|
paramType :: String
|
|
paramType = "TYPE"
|
|
paramDate :: String
|
|
paramDate = "DATE"
|
|
paramTime :: String
|
|
paramTime = "TIME"
|
|
paramFormat :: String
|
|
paramFormat = "FORMAT"
|
|
paramFile :: String
|
|
paramFile = "FILE"
|
|
paramRef :: String
|
|
paramRef = "REF"
|
|
paramRefSpec :: String
|
|
paramRefSpec = "REFSPEC"
|
|
paramGroup :: String
|
|
paramGroup = "GROUP"
|
|
paramExpression :: String
|
|
paramExpression = "EXPR"
|
|
paramSize :: String
|
|
paramSize = "SIZE"
|
|
paramAddress :: String
|
|
paramAddress = "ADDRESS"
|
|
paramItem :: String
|
|
paramItem = "ITEM"
|
|
paramKeyValue :: String
|
|
paramKeyValue = "K=V"
|
|
paramNothing :: String
|
|
paramNothing = ""
|
|
paramRepeating :: String -> String
|
|
paramRepeating s = s ++ " ..."
|
|
paramOptional :: String -> String
|
|
paramOptional s = s
|
|
paramPair :: String -> String -> String
|
|
paramPair a b = a ++ " " ++ b
|