{- Copyright (C) 2022 Yuchen Pei. This file is part of fsd. fsd is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. fsd is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with fsd. If not, see . -} {-# LANGUAGE ImportQualifiedPost #-} module FSD.PackageInfo where import Data.Generics import Data.Maybe import Data.Text qualified as T import Data.Text (Text) import Data.Char import Data.Time import FSD.Types makePackageInfo :: Source -> Package -> Translation -> FSDChangeLogEntry -> Upstream -> Copyright -> IO (Maybe PackageInfo) makePackageInfo source package trans change upstream copyright = if or [ sPackage source /= pPackage package, sPackage source /= tPackage trans, sPackage source /= clPackage change, sPackage source /= uPackage upstream, sPackage source /= crPackage copyright, sVersion source /= pVersion package, sVersion source /= clVersion change ] then return Nothing else do time <- getCurrentTime return $ Just PackageInfo { piPackage = sPackage source, piVersion = sVersion source, piTimestamp = time, piFile = sFile source, piHomepage = orElse (sHomepage source) (pHomepage package), piTags = unTags $ pTags package, piShortDesc = tShortDesc trans, piFullDesc = tFullDesc trans, piUpstreamName = uName upstream, piContacts = uContacts upstream, piSources = unSources $ uSources upstream, piLicenses = crLicenses copyright, piCLAuthor = clAuthor change, piCLTimestamp = clTimestamp change }