summaryrefslogtreecommitdiff
path: root/src/Main.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Main.hs')
-rw-r--r--src/Main.hs153
1 files changed, 34 insertions, 119 deletions
diff --git a/src/Main.hs b/src/Main.hs
index eac6b2a..9c28456 100644
--- a/src/Main.hs
+++ b/src/Main.hs
@@ -31,93 +31,47 @@ import System.Console.ANSI
, Color(..)
, ConsoleLayer(..)
)
-import Data.Maybe (fromJust)
+import Data.Maybe (fromJust, mapMaybe)
findUpdatable :: Text -> [PackageSettings] -> DownloaderSettings
findUpdatable packageName = getField @"downloader" . fromJust
. find ((== packageName) . getField @"name" . getField @"downloader")
-autoUpdatable :: [PackageSettings] -> [PackageDescription]
-autoUpdatable packageSettings =
- [ PackageDescription
- { latest =
- let setting = findUpdatable "universal-ctags" packageSettings
- ghArguments = uncurry PackageOwner $ fromJust $ getField @"github" setting
- template = Package.DownloadTemplate $ getField @"template" setting
- in Package.Updater
- { detectLatest = latestGitHub ghArguments (getField @"version" setting)
- , getVersion = repackageWithTemplate (getField @"repackage" setting) template
- , is64 = getField @"is64" setting
- }
- , name = "universal-ctags"
- , downloaders = mempty
- }
- , PackageDescription
- { latest =
- let setting = findUpdatable "composer" packageSettings
- packagistArguments = uncurry PackageOwner $ fromJust $ getField @"packagist" setting
- template = Package.DownloadTemplate $ getField @"template" setting
- in Package.Updater
- { detectLatest = latestPackagist packagistArguments
- , getVersion = repackageWithTemplate (getField @"repackage" setting) template
- , is64 = getField @"is64" setting
- }
- , name = "composer"
- , downloaders = mempty
- }
- , PackageDescription
- { latest =
- let setting = findUpdatable "jitsi-meet-desktop" packageSettings
- ghArguments = uncurry PackageOwner $ fromJust $ getField @"github" setting
- template = Package.DownloadTemplate $ getField @"template" setting
- in Package.Updater
- { detectLatest = latestGitHub ghArguments (getField @"version" setting)
- , getVersion = repackageWithTemplate (getField @"repackage" setting) template
- , is64 = getField @"is64" setting
- }
- , name = "jitsi-meet-desktop"
- , downloaders = mempty
- }
- , PackageDescription
- { latest =
- let setting = findUpdatable "php82" packageSettings
- ghArguments = uncurry PackageOwner $ fromJust $ getField @"github" setting
- template = Package.DownloadTemplate $ getField @"template" setting
- in Package.Updater
- { detectLatest = latestGitHub ghArguments (getField @"version" setting)
- , getVersion = repackageWithTemplate (getField @"repackage" setting) template
- , is64 = getField @"is64" setting
- }
- , name = "php82"
- , downloaders = mempty
- }
- , PackageDescription
- { latest =
- let setting = findUpdatable "kitty" packageSettings
- ghArguments = uncurry PackageOwner $ fromJust $ getField @"github" setting
- template = Package.DownloadTemplate $ getField @"template" setting
- in Package.Updater
- { detectLatest = latestGitHub ghArguments (getField @"version" setting)
- , getVersion = repackageWithTemplate (getField @"repackage" setting) template
- , is64 = getField @"is64" setting
+githubAutoUpdatables :: [PackageSettings] -> [PackageDescription]
+githubAutoUpdatables = mapMaybe go
+ where
+ go PackageSettings{ downloader = setting }
+ | Just githubSettings <- getField @"github" setting = Just
+ $ PackageDescription
+ { latest =
+ let ghArguments = uncurry PackageOwner githubSettings
+ template = Package.DownloadTemplate $ getField @"template" setting
+ in Package.Updater
+ { detectLatest = latestGitHub ghArguments (getField @"version" setting)
+ , getVersion = repackageWithTemplate (getField @"repackage" setting) template
+ , is64 = getField @"is64" setting
+ }
+ , name = getField @"name" setting
+ , downloaders = mempty
}
- , name = "kitty"
- , downloaders = mempty
- }
- , PackageDescription
- { latest =
- let setting = findUpdatable "rdiff-backup" packageSettings
- ghArguments = uncurry PackageOwner $ fromJust $ getField @"github" setting
- template = Package.DownloadTemplate $ getField @"template" setting
- in Package.Updater
- { detectLatest = latestGitHub ghArguments (getField @"version" setting)
- , getVersion = repackageWithTemplate (getField @"repackage" setting) template
- , is64 = getField @"is64" setting
+ | Just packagistSettings <- getField @"packagist" setting = Just
+ $ PackageDescription
+ { latest =
+ let packagistArguments = uncurry PackageOwner packagistSettings
+ template = Package.DownloadTemplate $ getField @"template" setting
+ in Package.Updater
+ { detectLatest = latestPackagist packagistArguments
+ , getVersion = repackageWithTemplate (getField @"repackage" setting) template
+ , is64 = getField @"is64" setting
+ }
+ , name = getField @"name" setting
+ , downloaders = mempty
}
- , name = "rdiff-backup"
- , downloaders = mempty
- }
- , PackageDescription
+ | otherwise = Nothing
+
+autoUpdatable :: [PackageSettings] -> [PackageDescription]
+autoUpdatable packageSettings = githubAutoUpdatables packageSettings ++
+ [ PackageDescription
{ latest =
let setting = findUpdatable "webex" packageSettings
textArguments = uncurry TextArguments $ fromJust $ getField @"text" setting
@@ -132,19 +86,6 @@ autoUpdatable packageSettings =
}
, PackageDescription
{ latest =
- let setting = findUpdatable "librsync" packageSettings
- ghArguments = uncurry PackageOwner $ fromJust $ getField @"github" setting
- template = Package.DownloadTemplate $ getField @"template" setting
- in Package.Updater
- { detectLatest = latestGitHub ghArguments (getField @"version" setting)
- , getVersion = repackageWithTemplate (getField @"repackage" setting) template
- , is64 = getField @"is64" setting
- }
- , name = "librsync"
- , downloaders = mempty
- }
- , PackageDescription
- { latest =
let setting = findUpdatable "dmd" packageSettings
textArguments = uncurry TextArguments $ fromJust $ getField @"text" setting
template = Package.DownloadTemplate $ getField @"template" setting
@@ -195,32 +136,6 @@ autoUpdatable packageSettings =
, ("DCD", latestDcd)
]
}
- , PackageDescription
- { latest =
- let setting = findUpdatable "simde" packageSettings
- ghArguments = uncurry PackageOwner $ fromJust $ getField @"github" setting
- template = Package.DownloadTemplate $ getField @"template" setting
- in Package.Updater
- { detectLatest = latestGitHub ghArguments (getField @"version" setting)
- , getVersion = repackageWithTemplate (getField @"repackage" setting) template
- , is64 = getField @"is64" setting
- }
- , name = "simde"
- , downloaders = mempty
- }
- , PackageDescription
- { latest =
- let setting = findUpdatable "nginx" packageSettings
- ghArguments = uncurry PackageOwner $ fromJust $ getField @"github" setting
- template = Package.DownloadTemplate $ getField @"template" setting
- in Package.Updater
- { detectLatest = latestGitHub ghArguments (getField @"version" setting)
- , getVersion = repackageWithTemplate (getField @"repackage" setting) template
- , is64 = getField @"is64" setting
- }
- , name = "nginx"
- , downloaders = mempty
- }
]
up2Date :: Maybe Text -> SlackBuilderT ()