From 3a6d17952b247682f1cb794ef27b26c9b007f00d Mon Sep 17 00:00:00 2001 From: Eugen Wissner Date: Fri, 20 Oct 2023 15:53:48 +0200 Subject: Allow looking on the text page for the latest version --- app/SlackBuilder/CommandLine.hs | 11 +++++++---- app/SlackBuilder/Updater.hs | 6 +++--- 2 files changed, 10 insertions(+), 7 deletions(-) (limited to 'app/SlackBuilder') diff --git a/app/SlackBuilder/CommandLine.hs b/app/SlackBuilder/CommandLine.hs index 1375b6e..53a6bfb 100644 --- a/app/SlackBuilder/CommandLine.hs +++ b/app/SlackBuilder/CommandLine.hs @@ -7,6 +7,7 @@ module SlackBuilder.CommandLine ) where import Data.Text (Text) +import qualified Data.Text as Text import Options.Applicative ( Parser , ParserInfo(..) @@ -29,7 +30,6 @@ data SlackBuilderCommand | CloneCommand Text Text Text | DownloadAndDeployCommand Text Text | Up2DateCommand - deriving (Eq, Show) data PackagistArguments = PackagistArguments { vendor :: Text @@ -42,11 +42,14 @@ data GhArguments = GhArguments , transform :: Maybe Text } deriving (Eq, Show) -newtype TextArguments = TextArguments Text - deriving (Eq, Show) +data TextArguments = TextArguments + { versionPicker :: Text -> Text + , textURL :: Text + } textArguments :: Parser TextArguments -textArguments = TextArguments <$> argument str (metavar "URL") +textArguments = TextArguments Text.strip + <$> argument str (metavar "URL") slackBuilderParser :: ParserInfo SlackBuilderCommand slackBuilderParser = info slackBuilderCommand fullDesc diff --git a/app/SlackBuilder/Updater.hs b/app/SlackBuilder/Updater.hs index 864e466..1ebf7fe 100644 --- a/app/SlackBuilder/Updater.hs +++ b/app/SlackBuilder/Updater.hs @@ -107,11 +107,11 @@ latestPackagist PackagistArguments{..} = do >>= fmap (version . fst) . Vector.uncons latestText :: TextArguments -> SlackBuilderT (Maybe Text) -latestText (TextArguments textArguments) = do - uri <- liftIO $ useHttpsURI <$> mkURI textArguments +latestText TextArguments{..} = do + uri <- liftIO $ useHttpsURI <$> mkURI textURL packagistResponse <- traverse (runReq defaultHttpConfig . go . fst) uri - pure $ Text.strip . Text.Encoding.decodeASCII . responseBody + pure $ versionPicker . Text.Encoding.decodeUtf8 . responseBody <$> packagistResponse where go uri = req GET uri NoReqBody bsResponse mempty -- cgit v1.2.3