summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEugen Wissner <belka@caraus.de>2023-12-11 08:14:55 +0100
committerEugen Wissner <belka@caraus.de>2023-12-11 08:14:55 +0100
commit6a063b2cc450b6ac90b38bc5c9ea348430794aa7 (patch)
treeeb5ba320c173f806a8a59046aed7007aa35f81ad /src
parente9504fb8e56fe93e4e23c52b45a620432b11570b (diff)
downloadslackbuilder-6a063b2cc450b6ac90b38bc5c9ea348430794aa7.tar.gz
Accept up2date package parameter
Diffstat (limited to 'src')
-rw-r--r--src/Main.hs14
-rw-r--r--src/SlackBuilder/CommandLine.hs13
2 files changed, 17 insertions, 10 deletions
diff --git a/src/Main.hs b/src/Main.hs
index 0b67b5d..848d992 100644
--- a/src/Main.hs
+++ b/src/Main.hs
@@ -6,6 +6,7 @@ import Data.Char (isNumber)
import Control.Applicative (Applicative(liftA2))
import Data.List.NonEmpty (NonEmpty(..))
import qualified Data.List.NonEmpty as NonEmpty
+import Control.Monad.Catch (MonadThrow(..))
import Control.Monad.IO.Class (MonadIO(..))
import Data.Maybe (fromJust)
import qualified Data.Map as Map
@@ -250,8 +251,13 @@ autoUpdatable =
}
]
-up2Date :: SlackBuilderT ()
-up2Date = for_ autoUpdatable go
+up2Date :: Maybe Text -> SlackBuilderT ()
+up2Date = \case
+ Nothing -> for_ autoUpdatable go
+ Just packageName
+ | Just foundPackage <- find ((packageName ==) . getField @"name") autoUpdatable ->
+ go foundPackage
+ | otherwise -> throwM $ UpdaterNotFound packageName
where
go package = getAndLogLatest package
>>= mapM_ (updatePackageIfRequired package)
@@ -427,10 +433,10 @@ main = do
maybe (pure ()) Text.IO.putStrLn latestVersion
where
executeCommand = \case
- CategoryCommand _packageName -> do
+ CategoryCommand -> do
repository' <- SlackBuilderT $ asks repository
categories <- liftIO $ findCategory repository'
liftIO $ print $ splitFileName . makeRelative repository' <$> categories
pure Nothing
CheckCommand -> check >> pure Nothing
- Up2DateCommand -> up2Date >> pure Nothing
+ Up2DateCommand packageName -> up2Date packageName >> pure Nothing
diff --git a/src/SlackBuilder/CommandLine.hs b/src/SlackBuilder/CommandLine.hs
index 7da036a..2a6c2fc 100644
--- a/src/SlackBuilder/CommandLine.hs
+++ b/src/SlackBuilder/CommandLine.hs
@@ -16,13 +16,14 @@ import Options.Applicative
, info
, fullDesc
, subparser
- , command,
+ , command
+ , optional
)
data SlackBuilderCommand
- = CategoryCommand Text
+ = CategoryCommand
| CheckCommand
- | Up2DateCommand
+ | Up2DateCommand (Maybe Text)
data PackagistArguments = PackagistArguments
{ vendor :: Text
@@ -49,7 +50,7 @@ slackBuilderCommand = subparser
<> command "check" (info checkCommand mempty)
<> command "up2date" (info up2DateCommand mempty)
where
- categoryCommand = CategoryCommand
- <$> argument str (metavar "PKGNAM")
+ categoryCommand = pure CategoryCommand
checkCommand = pure CheckCommand
- up2DateCommand = pure Up2DateCommand
+ up2DateCommand = Up2DateCommand
+ <$> optional (argument str (metavar "PKGNAM"))