nixpkgs-update/src/Main.hs

99 lines
2.5 KiB
Haskell
Raw Normal View History

2018-03-31 06:07:46 +03:00
{-# LANGUAGE ExtendedDefaultRules #-}
{-# LANGUAGE NamedFieldPuns #-}
2018-04-04 12:24:55 +03:00
{-# LANGUAGE OverloadedStrings #-}
2018-03-31 06:07:46 +03:00
{-# OPTIONS_GHC -fno-warn-type-defaults #-}
2018-04-04 12:24:55 +03:00
module Main where
import OurPrelude
import Control.Applicative ((<**>))
2018-03-31 06:07:46 +03:00
import qualified Data.Text as T
2018-07-11 05:30:34 +03:00
import qualified Data.Text.IO as T
2018-09-06 16:47:09 +03:00
import DeleteMerged (deleteDone)
2019-09-06 16:25:48 +03:00
import NVD (updateVulnDB)
import qualified Nix
import qualified Options.Applicative as O
import System.Posix.Env (setEnv)
2018-04-04 12:24:55 +03:00
import Update (updateAll)
2018-12-02 06:59:55 +03:00
import Utils (Options(..), setupNixpkgs)
2018-04-04 02:03:46 +03:00
2018-03-31 06:07:46 +03:00
default (T.Text)
2019-09-26 16:56:49 +03:00
newtype UpdateOptions =
UpdateOptions
{ dry :: Bool
}
data Command
= Update UpdateOptions
| DeleteDone
| Version
2019-09-08 02:53:01 +03:00
| UpdateVulnDB
2018-04-04 02:03:46 +03:00
updateOptionsParser :: O.Parser Command
updateOptionsParser =
2019-09-26 16:56:49 +03:00
Update . UpdateOptions <$>
O.switch
(O.long "dry-run" <>
O.help
"Do everything except actually pushing the updates to the remote repository")
commandParser :: O.Parser Command
commandParser =
O.hsubparser
2019-09-26 16:56:49 +03:00
(O.command
"update"
(O.info updateOptionsParser (O.progDesc "Update packages")) <>
O.command
"delete-done"
(O.info
(pure DeleteDone)
(O.progDesc "Deletes branches from PRs that were merged or closed")) <>
O.command
"version"
(O.info
(pure Version)
(O.progDesc
"Displays version information for nixpkgs-update and dependencies")) <>
O.command
"update-vulnerability-db"
(O.info
(pure UpdateVulnDB)
(O.progDesc "Updates the vulnerability database")))
programInfo :: O.ParserInfo Command
2018-04-06 18:17:22 +03:00
programInfo =
O.info
(commandParser <**> O.helper)
2019-09-26 16:56:49 +03:00
(O.fullDesc <>
O.progDesc "Update packages in the Nixpkgs repository" <>
O.header "nixpkgs-update")
2018-03-31 06:07:46 +03:00
getGithubToken :: IO Text
getGithubToken = T.strip <$> T.readFile "github_token.txt"
2018-03-31 06:07:46 +03:00
main :: IO ()
2018-07-11 05:30:34 +03:00
main = do
command <- O.execParser programInfo
case command of
DeleteDone -> do
token <- getGithubToken
setupNixpkgs token
setEnv "GITHUB_TOKEN" (T.unpack token) True
deleteDone token
2019-09-26 16:56:49 +03:00
Update UpdateOptions {dry} -> do
token <- getGithubToken
updates <- T.readFile "packages-to-update.txt"
setupNixpkgs token
setEnv "PAGER" "" True
setEnv "GITHUB_TOKEN" (T.unpack token) True
setEnv "GC_INITIAL_HEAP_SIZE" "10g" True
updateAll (Options dry token) updates
Version -> do
2019-09-26 16:56:49 +03:00
v <- runExceptT Nix.version
case v of
Left t -> T.putStrLn ("error:" <> t)
Right t -> T.putStrLn t
2019-09-08 02:53:01 +03:00
UpdateVulnDB -> updateVulnDB