@hackage simple-cmd-args0.1.6
Simple command args parsing and execution
Categories
License
BSD-3-Clause
Maintainer
juhpetersen@gmail.com
Links
Versions
Installation
Tested Compilers
Dependencies (3)
- base >=4 && <5
- optparse-applicative >=0.14.1
- semigroups Show all…
Dependents (27)
@hackage/koji-install, @hackage/stackage-query, @hackage/rhbzquery, @hackage/fedora-img-dl, @hackage/http-directory, @hackage/pagure-cli, Show all…
simple-cmd-args
A thin layer over optparse-applicative that avoids type plumbing for
subcommands by using Parser (IO ()).
Usage
import SimpleCmdArgs
import Control.Applicative (some)
import System.Directory
main =
simpleCmdArgs Nothing "example-tool" "Longer description..." $
subcommands
[ Subcommand "echo" "Print words" $
putStrLn . unwords <$> some (strArg "STR...")
, Subcommand "ls" "List directory" $
ls <$> strArg "DIR"
, Subcommand "mkdir" "Create directory" $
mkdir <$> parentsOpt <*> strArg "DIR"
]
where
parentsOpt = switchWith 'p' "parents" "Make missing directories"
ls :: FilePath -> IO ()
ls dir =
listDirectory dir >>= mapM_ putStrLn
mkdir :: Bool -> FilePath -> IO ()
mkdir parents =
if parents then createDirectoryIfMissing True else createDirectory
See more examples.