diff options
| author | Eugen Wissner <belka@caraus.de> | 2023-12-11 08:14:55 +0100 |
|---|---|---|
| committer | Eugen Wissner <belka@caraus.de> | 2023-12-11 08:14:55 +0100 |
| commit | 6a063b2cc450b6ac90b38bc5c9ea348430794aa7 (patch) | |
| tree | eb5ba320c173f806a8a59046aed7007aa35f81ad /src | |
| parent | e9504fb8e56fe93e4e23c52b45a620432b11570b (diff) | |
| download | slackbuilder-6a063b2cc450b6ac90b38bc5c9ea348430794aa7.tar.gz | |
Accept up2date package parameter
Diffstat (limited to 'src')
| -rw-r--r-- | src/Main.hs | 14 | ||||
| -rw-r--r-- | src/SlackBuilder/CommandLine.hs | 13 |
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")) |
