debian-build 0.5.0.1 → 0.5.0.2
raw patch · 2 files changed
+32/−19 lines, 2 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
Files
- debian-build.cabal +1/−1
- src/Debian/Package/Data/Source.hs +31/−18
debian-build.cabal view
@@ -1,5 +1,5 @@ name: debian-build-version: 0.5.0.1+version: 0.5.0.2 synopsis: Debian package build sequence tools description: This package provides build sequence functions for debian package, and includes on-the-fly
src/Debian/Package/Data/Source.hs view
@@ -23,10 +23,9 @@ , haskellPackageDefault, haskellPackageFromPackage ) where -import Control.Arrow (second)-import Control.Applicative ((<$>), pure, (<*>), (*>), empty, (<|>), many, some, optional)+import Control.Applicative ((<$>), pure, (<*>), (*>), (<*), empty, (<|>), many, some, optional) import Control.Monad.Trans.State (StateT, runStateT, get, put)-import Data.Maybe (listToMaybe, maybeToList)+import Data.Maybe (listToMaybe, maybeToList, mapMaybe) import Data.Char (isSpace, isDigit) import Data.Version (Version (Version, versionBranch), showVersion) import Data.List.Split (splitOn)@@ -48,14 +47,11 @@ else empty [] -> empty -char :: Char -> Parser Char-char x = satisfy (== x)- _look :: Parser String _look = get -_eof :: Parser ()-_eof = do+eof :: Parser ()+eof = do s <- get case s of [] -> pure ()@@ -64,14 +60,26 @@ runParser :: Parser a -> String -> Maybe (a, String) runParser = runStateT +anyChar :: Parser Char+anyChar = satisfy (const True)++char :: Char -> Parser Char+char x = satisfy (== x)++notChar :: Char -> Parser Char+notChar x = satisfy (/= x)++space :: Parser Char+space = char ' '+ digit :: Parser Char digit = satisfy isDigit int :: Parser Int int = read <$> some digit -string' :: String -> Parser String-string' = mapM char+string :: String -> Parser String+string = mapM char -- | Version type for Debian@@ -110,16 +118,16 @@ <$> ((:) <$> int <*> many (char '.' *> int)) <*> pure [] -parseDebianVersion' :: Parser DebianVersion-parseDebianVersion' = do+parseDebianVersion :: Parser DebianVersion+parseDebianVersion = do v <- parseVersion' (DebianNonNative v <$> (char '-' *> some (satisfy (not . isSpace))) <|>- DebianNative v <$> optional (string' "+nmu" *> int))+ DebianNative v <$> optional (string "+nmu" *> int)) _testParseDebianVersion :: [Maybe (DebianVersion, String)] _testParseDebianVersion =- [ runParser parseDebianVersion' s | s <- [ "1.23.3-4", "1.23", "12.3+nmu2" ] ]+ [ runParser parseDebianVersion s | s <- [ "1.23.3-4", "1.23", "12.3+nmu2" ] ] instance Show DebianVersion where show = d where@@ -127,7 +135,7 @@ d (DebianNonNative v r) = showVersion v ++ '-': r instance Read DebianVersion where- readsPrec _ = maybeToList . runParser parseDebianVersion'+ readsPrec _ = maybeToList . runParser parseDebianVersion readMaybe' :: Read a => String -> Maybe a readMaybe' = fmap fst . listToMaybe . filter ((== "") . snd) . reads@@ -175,6 +183,11 @@ deriveHackageVersion :: Source -> HackageVersion deriveHackageVersion = mkHackageVersion' . versionBranch . origVersion where +parseLine :: String -> Maybe (String, String)+parseLine =+ (fmap fst .) . runParser $+ (,) <$> some (notChar ':') <*> (char ':' *> many space *> many anyChar <* eof)+ -- | Try to generate 'Source' from debian changelog string parseChangeLog :: String -- ^ dpkg-parsechangelog result string -> Maybe Source -- ^ Source structure@@ -183,11 +196,11 @@ dver <- mayDebVer return $ mkSource deb dver where- pairs = map (second tail . break (== ' ')) . lines $ log'+ pairs = mapMaybe parseLine . lines $ log' lookup' = (`lookup` pairs)- mayDebSrc = lookup' "Source:"+ mayDebSrc = lookup' "Source" mayDebVer = do- dverS <- lookup' "Version:"+ dverS <- lookup' "Version" readDebianVersion dverS -- | Debian .changes file types