arch-hs-0.9.0.0: sync/Args.hs
module Args
( CommonOptions (..),
SubmitOptions (..),
CheckOptions (..),
Mode (..),
runArgsParser,
)
where
import Distribution.ArchHs.Options
import Distribution.ArchHs.Utils (archHsVersion)
-----------------------------------------------------------------------------
data CommonOptions = CommonOptions
{ optHackage :: HackageDBOptions,
optCommunityDB :: CommunityDBOptions
}
commonOptionsParser :: Parser CommonOptions
commonOptionsParser =
CommonOptions <$> hackageDBOptionsParser <*> communityDBOptionsParser
-----------------------------------------------------------------------------
data SubmitOptions = SubmitOptions
{ optOutput :: FilePath,
optUpload :: Bool
}
submitOptionsParser :: Parser SubmitOptions
submitOptionsParser =
SubmitOptions
<$> option
str
( long "output"
<> metavar "PATH"
<> short 'o'
<> help "Output path of generated .csv file"
<> value ""
)
<*> switch
( long "upload"
<> short 'u'
<> help "Upload to hackage"
)
-----------------------------------------------------------------------------
newtype CheckOptions = CheckOptions
{ optShowGHCLibs :: Bool
}
checkOptionsParser :: Parser CheckOptions
checkOptionsParser =
CheckOptions
<$> switch (long "show-ghc-libs" <> help "Include GHC and GHC libs")
-----------------------------------------------------------------------------
data Mode = Submit CommonOptions SubmitOptions | Check CommonOptions CheckOptions
runArgsParser :: IO Mode
runArgsParser =
snd <$> do
simpleOptions
archHsVersion
"arch-hs-sync - sync metadata of Haskell packages between [community] and Hackage"
"arch-hs-sync is designed to be used by Hackage distribution maintainers"
(pure ())
$ do
addCommand
"submit"
"submit distribution information to Hackage"
id
(Submit <$> commonOptionsParser <*> submitOptionsParser)
addCommand
"check"
"check inconsistencies of Haskell packages version"
id
(Check <$> commonOptionsParser <*> checkOptionsParser)