From 3db93bc6f7b46bc322694e6658b8f559433a03c6 Mon Sep 17 00:00:00 2001 From: Yuchen Pei Date: Thu, 19 May 2022 22:23:10 +1000 Subject: Replacing the files with a haskell rewrite. --- src/FSD/Source.hs | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 src/FSD/Source.hs (limited to 'src/FSD/Source.hs') diff --git a/src/FSD/Source.hs b/src/FSD/Source.hs new file mode 100644 index 0000000..751ac31 --- /dev/null +++ b/src/FSD/Source.hs @@ -0,0 +1,45 @@ +{- +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 #-} +{-# LANGUAGE OverloadedStrings #-} + +module FSD.Source where + +import FSD.Control +import Data.List.Extra +import Data.Maybe +import Data.Text qualified as T +import Debian.Control +import FSD.Types + +getSource :: Paragraph -> Maybe Source +getSource para = do + package <- simpleFV <$> fieldValue "Package" para + version <- simpleFV <$> fieldValue "Version" para + fileLines <- lbListFV <$> fieldValue "Files" para + -- normally the 2nd file is the orig one + fileLine <- fileLines !? 2 + file <- (T.splitOn " " fileLine) !? 2 + let homepage = simpleFV <$> fieldValue "Homepage" para + return $ Source package version file homepage + +getSources :: Control -> [Source] +getSources = catMaybes . fmap getSource . unControl -- cgit v1.2.3