-
Notifications
You must be signed in to change notification settings - Fork 2
/
Update.hs
107 lines (101 loc) · 4.58 KB
/
Update.hs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE ViewPatterns #-}
module Update (main) where
import Control.Monad (unless)
import qualified Data.Aeson as A
import Data.Default (def)
import Data.Map (Map)
import Data.Maybe (fromJust)
import qualified Data.Map as Map
import Data.Text (Text)
import qualified Data.Text as T
import Development.Shake
import NeatInterpolation (trimming)
import NvFetcher
import NvFetcher.Config (Config (actionAfterBuild))
main :: IO ()
main = runNvFetcher' def {actionAfterBuild = generateReadme >> processAutoCommit} packageSet
packageSet :: PackageSet ()
packageSet = do
-----------------------------------------------------------------------------
define $ package "apple-emoji"
`sourceGitHub` ("samuelngs", "apple-emoji-linux")
`fetchGitHubRelease` ("samuelngs", "apple-emoji-linux", "AppleColorEmoji.ttf")
-----------------------------------------------------------------------------
define $ package "fastocr" `fromPypi` "fastocr"
-----------------------------------------------------------------------------
define $ package "feeluown-core" `fromPypi` "feeluown"
let fuoPlugins = mapM_ $ \x -> define $ package ("feeluown-" <> x) `fromPypi` ("fuo_" <> x)
fuoPlugins ["netease", "qqmusic"]
define $ package "feeluown-bilibili" `fromPypi` "feeluown-bilibili"
define $ package "feeluown-ytmusic" `fromPypi` "fuo-ytmusic"
define $ package "feeluown-kuwo" `fromPypi` "fuo-kuwo"
-----------------------------------------------------------------------------
define $ package "pypinyin" `fromPypi` "pypinyin"
-----------------------------------------------------------------------------
define $ package "qbittorrent-enhanced" `fromGitHub` ("c0re100", "qBittorrent-Enhanced-Edition")
-----------------------------------------------------------------------------
-- define $ package "qliveplayer" `fromGitHub'` ("THMonster", "QLivePlayer", fetchSubmodules .~ True) `hasCargoLock` "src/QLivePlayer-Lib/Cargo.lock"
-----------------------------------------------------------------------------
define $
package "fcitx5-pinyin-moegirl"
`sourceGitHub` ("outloudvi", "mw2fcitx")
`fetchGitHubRelease` ("outloudvi", "mw2fcitx", "moegirl.dict")
-----------------------------------------------------------------------------
define $
package "fcitx5-pinyin-zhwiki"
`sourceArchLinux` "fcitx5-pinyin-zhwiki"
`fetchUrl` \(coerce -> v) ->
let dictVer = T.takeWhileEnd (/= '.') v
converterVer = fromJust $ T.stripSuffix ("." <> dictVer) v
in
[trimming|https://github.com/felixonmars/fcitx5-pinyin-zhwiki/releases/download/$converterVer/zhwiki-$dictVer.dict|]
-----------------------------------------------------------------------------
define $ package "fcitx5-material-color" `fromGitHub` ("hosxy", "fcitx5-material-color")
-----------------------------------------------------------------------------
define $ package "zydra"
`sourceGit` "https://github.com/hamedA2/Zydra"
`fetchGitHub` ("hamedA2", "Zydra")
-----------------------------------------------------------------------------
define $ package "py-term" `fromPypi` "py-term"
-----------------------------------------------------------------------------
define $
package "luoxu"
`sourceManual` "a46c8435428f94116d6164d8fcd6226c5126c0a5"
`fetchGitHub` ("lilydjwg", "luoxu")
`hasCargoLocks` ["querytrans/Cargo.lock", "luoxu-cutwords/Cargo.lock"]
processAutoCommit :: Action ()
processAutoCommit =
getEnv "GITHUB_ENV" >>= \case
Just env -> do
changes <- getVersionChanges
liftIO $
unless (null changes) $
appendFile env $
"COMMIT_MSG<<EOF\n"
<> case show <$> changes of
[x] -> x <> "\n"
xs -> "Auto update:\n" <> unlines xs
<> "EOF\n"
_ -> pure ()
generateReadme :: Action ()
generateReadme = do
-- we need use generated files in flakes
command [] "git" ["add", "."] :: Action ()
(A.decode @(Map Text Text) -> Just (Map.elems -> out)) <-
fromStdout
<$> command
[]
"nix"
[ "eval",
"./#packages.x86_64-linux",
"--apply",
T.unpack [trimming|with builtins; mapAttrs (key: value: "[$${key}](${value.meta.homepage or ""}) - ${value.version}")|],
"--json"
]
template <- T.pack <$> readFile' "README_template.md"
writeFileChanged "README.md" $ T.unpack $ template <> "\n" <> (T.unlines $ map ("* " <>) out)
putInfo "Generate README.md"