From 3414a69bc8e589a0fbfc52f932f6b7df8d05f365 Mon Sep 17 00:00:00 2001 From: Eugen Wissner Date: Tue, 7 Nov 2023 19:36:40 +0100 Subject: Support GHC 9.4 --- src/SlackBuilder/CommandLine.hs | 58 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 src/SlackBuilder/CommandLine.hs (limited to 'src/SlackBuilder/CommandLine.hs') diff --git a/src/SlackBuilder/CommandLine.hs b/src/SlackBuilder/CommandLine.hs new file mode 100644 index 0000000..7cfe747 --- /dev/null +++ b/src/SlackBuilder/CommandLine.hs @@ -0,0 +1,58 @@ +module SlackBuilder.CommandLine + ( GhArguments(..) + , SlackBuilderCommand(..) + , PackagistArguments(..) + , TextArguments(..) + , slackBuilderParser + ) where + +import Data.Text (Text) +import Options.Applicative + ( Parser + , ParserInfo(..) + , metavar + , argument + , str + , info + , fullDesc + , subparser + , command, + ) + +data SlackBuilderCommand + = CategoryCommand Text + | CloneCommand Text Text Text + | Up2DateCommand + +data PackagistArguments = PackagistArguments + { vendor :: Text + , name :: Text + } deriving (Eq, Show) + +data GhArguments = GhArguments + { owner :: Text + , name :: Text + , transform :: Maybe Text + } deriving (Eq, Show) + +data TextArguments = TextArguments + { versionPicker :: Text -> Text + , textURL :: Text + } + +slackBuilderParser :: ParserInfo SlackBuilderCommand +slackBuilderParser = info slackBuilderCommand fullDesc + +slackBuilderCommand :: Parser SlackBuilderCommand +slackBuilderCommand = subparser + $ command "category" (info categoryCommand mempty) + <> command "clone" (info cloneCommand mempty) + <> command "up2date" (info up2DateCommand mempty) + where + categoryCommand = CategoryCommand + <$> argument str (metavar "PKGNAM") + cloneCommand = CloneCommand + <$> argument str (metavar "REPO") + <*> argument str (metavar "TARBALL") + <*> argument str (metavar "TAG_PREFIX") + up2DateCommand = pure Up2DateCommand -- cgit v1.2.3