updo-1.0.0: project-dhall/pkgs-upgrade-partition.hs
#!/usr/bin/env stack
-- stack script --resolver=lts-18.27 --package=base --package=dhall --package=text
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE ScopedTypeVariables #-}
-- | Description: Partition the packages into those that have been upgraded and
-- those that have not.
module Main where
import Data.List (intersect, (\\))
import qualified Data.Text as T (pack)
import qualified Data.Text.IO as T (putStrLn)
import Dhall (FromDhall, Generic, Text, ToDhall, auto, embed, inject, input)
import Dhall.Core (pretty)
import System.Environment (getArgs)
data PkgUpgrade = PkgUpgrade
{ pkgs :: [Text]
, done :: [Text]
, todo :: [Text]
}
deriving (Show, Generic, ToDhall, FromDhall)
main :: IO ()
main = do
file : _ <- getArgs
pkgs :: [Text] <- input auto (T.pack file)
remaining :: [Text] <- input auto "./project-dhall/pkgs-upgrade-todo.dhall"
let todo = pkgs `intersect` remaining
let done = pkgs \\ todo
T.putStrLn . pretty $ embed inject PkgUpgrade{..}