From 6290be859dc9641a7f83231778e786b60a8d0d2e Mon Sep 17 00:00:00 2001 From: Eugen Wissner Date: Tue, 1 Oct 2024 19:54:32 +0200 Subject: Wrap common downloader fields into a record --- src/Main.hs | 52 ++++++++++++++++++++++++++++------------------------ 1 file changed, 28 insertions(+), 24 deletions(-) (limited to 'src') diff --git a/src/Main.hs b/src/Main.hs index 8501d0f..eac6b2a 100644 --- a/src/Main.hs +++ b/src/Main.hs @@ -33,12 +33,16 @@ import System.Console.ANSI ) import Data.Maybe (fromJust) +findUpdatable :: Text -> [PackageSettings] -> DownloaderSettings +findUpdatable packageName = getField @"downloader" . fromJust + . find ((== packageName) . getField @"name" . getField @"downloader") + autoUpdatable :: [PackageSettings] -> [PackageDescription] autoUpdatable packageSettings = [ PackageDescription { latest = - let ghArguments = uncurry PackageOwner $ fromJust $ getField @"github" setting - setting = fromJust $ find ((== "universal-ctags") . getField @"name") packageSettings + 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) @@ -50,8 +54,8 @@ autoUpdatable packageSettings = } , PackageDescription { latest = - let packagistArguments = uncurry PackageOwner $ fromJust $ getField @"packagist" setting - setting = fromJust $ find ((== "composer") . getField @"name") packageSettings + let setting = findUpdatable "composer" packageSettings + packagistArguments = uncurry PackageOwner $ fromJust $ getField @"packagist" setting template = Package.DownloadTemplate $ getField @"template" setting in Package.Updater { detectLatest = latestPackagist packagistArguments @@ -63,8 +67,8 @@ autoUpdatable packageSettings = } , PackageDescription { latest = - let ghArguments = uncurry PackageOwner $ fromJust $ getField @"github" setting - setting = fromJust $ find ((== "jitsi-meet-desktop") . getField @"name") packageSettings + 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) @@ -76,8 +80,8 @@ autoUpdatable packageSettings = } , PackageDescription { latest = - let ghArguments = uncurry PackageOwner $ fromJust $ getField @"github" setting - setting = fromJust $ find ((== "php82") . getField @"name") packageSettings + 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) @@ -89,8 +93,8 @@ autoUpdatable packageSettings = } , PackageDescription { latest = - let ghArguments = uncurry PackageOwner $ fromJust $ getField @"github" setting - setting = fromJust $ find ((== "kitty") . getField @"name") packageSettings + 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) @@ -102,8 +106,8 @@ autoUpdatable packageSettings = } , PackageDescription { latest = - let ghArguments = uncurry PackageOwner $ fromJust $ getField @"github" setting - setting = fromJust $ find ((== "rdiff-backup") . getField @"name") packageSettings + 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) @@ -115,8 +119,8 @@ autoUpdatable packageSettings = } , PackageDescription { latest = - let textArguments = uncurry TextArguments $ fromJust $ getField @"text" setting - setting = fromJust $ find ((== "webex") . getField @"name") packageSettings + let setting = findUpdatable "webex" packageSettings + textArguments = uncurry TextArguments $ fromJust $ getField @"text" setting template = Package.DownloadTemplate $ getField @"template" setting in Package.Updater { detectLatest = latestText textArguments (getField @"version" setting) @@ -128,8 +132,8 @@ autoUpdatable packageSettings = } , PackageDescription { latest = - let ghArguments = uncurry PackageOwner $ fromJust $ getField @"github" setting - setting = fromJust $ find ((== "librsync") . getField @"name") packageSettings + 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) @@ -141,8 +145,8 @@ autoUpdatable packageSettings = } , PackageDescription { latest = - let textArguments = uncurry TextArguments $ fromJust $ getField @"text" setting - setting = fromJust $ find ((== "dmd") . getField @"name") packageSettings + let setting = findUpdatable "dmd" packageSettings + textArguments = uncurry TextArguments $ fromJust $ getField @"text" setting template = Package.DownloadTemplate $ getField @"template" setting in Package.Updater { detectLatest = latestText textArguments (getField @"version" setting) @@ -154,8 +158,8 @@ autoUpdatable packageSettings = } , PackageDescription { latest = - let textArguments = uncurry TextArguments $ fromJust $ getField @"text" setting - setting = fromJust $ find ((== "d-tools") . getField @"name") packageSettings + let setting = findUpdatable "d-tools" packageSettings + textArguments = uncurry TextArguments $ fromJust $ getField @"text" setting template = Package.DownloadTemplate $ getField @"template" setting in Package.Updater { detectLatest = latestText textArguments (getField @"version" setting) @@ -193,8 +197,8 @@ autoUpdatable packageSettings = } , PackageDescription { latest = - let ghArguments = uncurry PackageOwner $ fromJust $ getField @"github" setting - setting = fromJust $ find ((== "simde") . getField @"name") packageSettings + 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) @@ -206,8 +210,8 @@ autoUpdatable packageSettings = } , PackageDescription { latest = - let ghArguments = uncurry PackageOwner $ fromJust $ getField @"github" setting - setting = fromJust $ find ((== "nginx") . getField @"name") packageSettings + 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) -- cgit v1.2.3