Support modifying reuploaded tarballs
This commit is contained in:
parent
f3beee3e19
commit
5e161c3dad
1
Rakefile
1
Rakefile
@ -85,7 +85,6 @@ end
|
|||||||
|
|
||||||
AUTO_UPDATABLE = {
|
AUTO_UPDATABLE = {
|
||||||
'rdiff-backup' => [SlackBuilder::GitHub.new('rdiff-backup', 'rdiff-backup', 'rdiff-backup')],
|
'rdiff-backup' => [SlackBuilder::GitHub.new('rdiff-backup', 'rdiff-backup', 'rdiff-backup')],
|
||||||
'librsync' => [SlackBuilder::GitHub.new('librsync', 'librsync')],
|
|
||||||
'dmd' => [SlackBuilder::LatestText.new('https://downloads.dlang.org/releases/LATEST')]
|
'dmd' => [SlackBuilder::LatestText.new('https://downloads.dlang.org/releases/LATEST')]
|
||||||
}.freeze
|
}.freeze
|
||||||
|
|
||||||
|
100
app/Main.hs
100
app/Main.hs
@ -15,19 +15,26 @@ import qualified Toml
|
|||||||
import qualified Data.ByteString as ByteString
|
import qualified Data.ByteString as ByteString
|
||||||
import Data.Text (Text)
|
import Data.Text (Text)
|
||||||
import qualified Data.Text as Text
|
import qualified Data.Text as Text
|
||||||
import qualified Data.Text.Encoding as Text.Encoding
|
|
||||||
import qualified Data.Text.IO as Text.IO
|
import qualified Data.Text.IO as Text.IO
|
||||||
import Control.Monad.Trans.Reader (ReaderT(..), asks)
|
import Control.Monad.Trans.Reader (ReaderT(..), asks)
|
||||||
import SlackBuilder.Download
|
import SlackBuilder.Download
|
||||||
import SlackBuilder.Package (Package(..))
|
import SlackBuilder.Package (Package(..))
|
||||||
import qualified SlackBuilder.Package as Package
|
import qualified SlackBuilder.Package as Package
|
||||||
import Text.URI (mkURI)
|
import Text.URI (mkURI)
|
||||||
import Text.URI.QQ (uri)
|
|
||||||
import Data.Foldable (for_)
|
import Data.Foldable (for_)
|
||||||
import qualified Text.URI as URI
|
import qualified Text.URI as URI
|
||||||
import System.FilePath ((</>), (<.>))
|
import System.FilePath ((</>), (<.>), dropExtension, takeBaseName)
|
||||||
import SlackBuilder.Info
|
import SlackBuilder.Info
|
||||||
import Text.Megaparsec (parse, errorBundlePretty)
|
import Text.Megaparsec (parse, errorBundlePretty)
|
||||||
|
import GHC.Records (HasField(..))
|
||||||
|
import System.Process
|
||||||
|
( CmdSpec(..)
|
||||||
|
, CreateProcess(..)
|
||||||
|
, StdStream(..)
|
||||||
|
, callProcess
|
||||||
|
, withCreateProcess
|
||||||
|
, waitForProcess
|
||||||
|
)
|
||||||
|
|
||||||
autoUpdatable :: [Package]
|
autoUpdatable :: [Package]
|
||||||
autoUpdatable =
|
autoUpdatable =
|
||||||
@ -47,9 +54,7 @@ autoUpdatable =
|
|||||||
in Package.Updater latest' template
|
in Package.Updater latest' template
|
||||||
, category = "development"
|
, category = "development"
|
||||||
, name = "universal-ctags"
|
, name = "universal-ctags"
|
||||||
, homepage = [uri|https://ctags.io/|]
|
, reupload = Just []
|
||||||
, requires = pure "%README%"
|
|
||||||
, reupload = True
|
|
||||||
}
|
}
|
||||||
, Package
|
, Package
|
||||||
{ latest =
|
{ latest =
|
||||||
@ -61,9 +66,7 @@ autoUpdatable =
|
|||||||
in Package.Updater latest' template
|
in Package.Updater latest' template
|
||||||
, category = "development"
|
, category = "development"
|
||||||
, name = "composer"
|
, name = "composer"
|
||||||
, homepage = [uri|https://getcomposer.org/|]
|
, reupload = Nothing
|
||||||
, requires = mempty
|
|
||||||
, reupload = False
|
|
||||||
}
|
}
|
||||||
, Package
|
, Package
|
||||||
{ latest =
|
{ latest =
|
||||||
@ -80,9 +83,7 @@ autoUpdatable =
|
|||||||
in Package.Updater latest' template
|
in Package.Updater latest' template
|
||||||
, category = "network"
|
, category = "network"
|
||||||
, name = "jitsi-meet-desktop"
|
, name = "jitsi-meet-desktop"
|
||||||
, homepage = [uri|https://jitsi.org/|]
|
, reupload = Nothing
|
||||||
, requires = mempty
|
|
||||||
, reupload = False
|
|
||||||
}
|
}
|
||||||
, Package
|
, Package
|
||||||
{ latest =
|
{ latest =
|
||||||
@ -102,9 +103,29 @@ autoUpdatable =
|
|||||||
in Package.Updater latest' template
|
in Package.Updater latest' template
|
||||||
, category = "development"
|
, category = "development"
|
||||||
, name = "php82"
|
, name = "php82"
|
||||||
, homepage = [uri|https://www.php.net/|]
|
, reupload = Nothing
|
||||||
, requires = ["postgresql"]
|
}
|
||||||
, reupload = False
|
, Package
|
||||||
|
{ latest =
|
||||||
|
let ghArguments = GhArguments
|
||||||
|
{ owner = "kovidgoyal"
|
||||||
|
, name = "kitty"
|
||||||
|
, transform = Nothing
|
||||||
|
}
|
||||||
|
latest' = latestGitHub ghArguments $ Text.stripPrefix "v"
|
||||||
|
templateTail =
|
||||||
|
[ Package.StaticPlaceholder "/kitty-"
|
||||||
|
, Package.VersionPlaceholder
|
||||||
|
, Package.StaticPlaceholder ".tar.xz"
|
||||||
|
]
|
||||||
|
template = Package.DownloadTemplate
|
||||||
|
$ Package.StaticPlaceholder "https://github.com/kovidgoyal/kitty/releases/download/v"
|
||||||
|
:| Package.VersionPlaceholder
|
||||||
|
: templateTail
|
||||||
|
in Package.Updater latest' template
|
||||||
|
, category = "system"
|
||||||
|
, name = "kitty"
|
||||||
|
, reupload = Just [RawCommand "go" ["mod", "vendor"]]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -123,7 +144,11 @@ updatePackageIfRequired package@Package{..} version = do
|
|||||||
infoContents <- liftIO $ ByteString.readFile $ repository' </> packagePath
|
infoContents <- liftIO $ ByteString.readFile $ repository' </> packagePath
|
||||||
|
|
||||||
case parse parseInfoFile packagePath infoContents of
|
case parse parseInfoFile packagePath infoContents of
|
||||||
Right parsedInfoFile -> updatePackage package parsedInfoFile version
|
Right parsedInfoFile
|
||||||
|
| version == getField @"version" parsedInfoFile ->
|
||||||
|
liftIO $ Text.IO.putStrLn
|
||||||
|
$ name <> " is up to date (Version " <> version <> ")."
|
||||||
|
| otherwise -> updatePackage package parsedInfoFile version
|
||||||
Left errorBundle -> liftIO $ putStr $ errorBundlePretty errorBundle
|
Left errorBundle -> liftIO $ putStr $ errorBundlePretty errorBundle
|
||||||
|
|
||||||
updatePackage :: Package -> PackageInfo -> Text -> SlackBuilderT ()
|
updatePackage :: Package -> PackageInfo -> Text -> SlackBuilderT ()
|
||||||
@ -145,8 +170,6 @@ updatePackage Package{..} info version = do
|
|||||||
</> (Text.unpack name <.> "info")
|
</> (Text.unpack name <.> "info")
|
||||||
package' = info
|
package' = info
|
||||||
{ version = version
|
{ version = version
|
||||||
, requires = Text.Encoding.encodeUtf8 <$> requires
|
|
||||||
, homepage = URI.render homepage
|
|
||||||
, downloads = [download']
|
, downloads = [download']
|
||||||
, checksums = [checksum]
|
, checksums = [checksum]
|
||||||
}
|
}
|
||||||
@ -156,12 +179,41 @@ updatePackage Package{..} info version = do
|
|||||||
|
|
||||||
commit packagePath version
|
commit packagePath version
|
||||||
where
|
where
|
||||||
handleReupload uri' relativeTarball downloadFileName
|
handleReupload uri' relativeTarball downloadFileName = do
|
||||||
| reupload =
|
repository' <- SlackBuilderT $ asks repository
|
||||||
liftIO (putStrLn $ "Upload the source tarball " <> Text.unpack relativeTarball)
|
case reupload of
|
||||||
>> uploadCommand relativeTarball ("/" <> name)
|
Just [] -> uploadTarball relativeTarball downloadFileName
|
||||||
>> liftIO (mkURI $ "https://download.dlackware.com/hosted-sources/" <> name <> "/" <> downloadFileName)
|
Just commands ->
|
||||||
| otherwise = pure uri'
|
let tarballPath = repository' </> Text.unpack relativeTarball
|
||||||
|
packedDirectory = takeBaseName $ dropExtension tarballPath
|
||||||
|
in liftIO (callProcess "tar" ["xvf", tarballPath])
|
||||||
|
>> liftIO (traverse (defaultCreateProcess packedDirectory) commands)
|
||||||
|
>> liftIO (callProcess "tar" ["Jcvf", tarballPath, packedDirectory])
|
||||||
|
>> uploadTarball relativeTarball downloadFileName
|
||||||
|
Nothing -> pure uri'
|
||||||
|
uploadTarball relativeTarball downloadFileName
|
||||||
|
= liftIO (putStrLn $ "Upload the source tarball " <> Text.unpack relativeTarball)
|
||||||
|
>> uploadCommand relativeTarball ("/" <> name)
|
||||||
|
>> liftIO (mkURI $ "https://download.dlackware.com/hosted-sources/" <> name <> "/" <> downloadFileName)
|
||||||
|
defaultCreateProcess cwd' cmdSpec
|
||||||
|
= flip withCreateProcess (const . const . const waitForProcess)
|
||||||
|
$ CreateProcess
|
||||||
|
{ use_process_jobs = False
|
||||||
|
, std_out = Inherit
|
||||||
|
, std_in = NoStream
|
||||||
|
, std_err = Inherit
|
||||||
|
, new_session = False
|
||||||
|
, env = Nothing
|
||||||
|
, detach_console = False
|
||||||
|
, delegate_ctlc = False
|
||||||
|
, cwd = Just cwd'
|
||||||
|
, create_new_console = False
|
||||||
|
, create_group = False
|
||||||
|
, cmdspec = cmdSpec
|
||||||
|
, close_fds = True
|
||||||
|
, child_user = Nothing
|
||||||
|
, child_group = Nothing
|
||||||
|
}
|
||||||
|
|
||||||
main :: IO ()
|
main :: IO ()
|
||||||
main = do
|
main = do
|
||||||
|
@ -5,6 +5,4 @@ download_url = "https://example.com/some/path"
|
|||||||
remote_path = "example.com:/srv/httpd/some/path"
|
remote_path = "example.com:/srv/httpd/some/path"
|
||||||
|
|
||||||
[maintainer]
|
[maintainer]
|
||||||
name = "Maintainer Name"
|
|
||||||
email = "maintainer@example.com"
|
|
||||||
signature = false
|
signature = false
|
||||||
|
@ -17,10 +17,8 @@ data Settings = Settings
|
|||||||
, maintainer :: MaintainerSettings
|
, maintainer :: MaintainerSettings
|
||||||
} deriving (Eq, Show)
|
} deriving (Eq, Show)
|
||||||
|
|
||||||
data MaintainerSettings = MaintainerSettings
|
newtype MaintainerSettings = MaintainerSettings
|
||||||
{ name :: !Text
|
{ signature :: Bool
|
||||||
, email :: !Text
|
|
||||||
, signature :: !Bool
|
|
||||||
} deriving (Eq, Show)
|
} deriving (Eq, Show)
|
||||||
|
|
||||||
settingsCodec :: Toml.TomlCodec Settings
|
settingsCodec :: Toml.TomlCodec Settings
|
||||||
@ -34,6 +32,4 @@ settingsCodec = Settings
|
|||||||
|
|
||||||
maintainerSettingsCodec :: Toml.TomlCodec MaintainerSettings
|
maintainerSettingsCodec :: Toml.TomlCodec MaintainerSettings
|
||||||
maintainerSettingsCodec = MaintainerSettings
|
maintainerSettingsCodec = MaintainerSettings
|
||||||
<$> Toml.text "name" .= name
|
<$> Toml.bool "signature" .= signature
|
||||||
<*> Toml.text "email" .= email
|
|
||||||
<*> Toml.bool "signature" .= signature
|
|
||||||
|
@ -174,8 +174,8 @@ generate pkg = Lazy.Text.toStrict $ Text.Builder.toLazyText builder
|
|||||||
<> "HOMEPAGE=\"" <> Text.Builder.fromText (homepage pkg) <> "\"\n"
|
<> "HOMEPAGE=\"" <> Text.Builder.fromText (homepage pkg) <> "\"\n"
|
||||||
<> generateMultiEntry "DOWNLOAD" (render <$> downloads pkg)
|
<> generateMultiEntry "DOWNLOAD" (render <$> downloads pkg)
|
||||||
<> generateMultiEntry "MD5SUM" (digestToText <$> checksums pkg)
|
<> generateMultiEntry "MD5SUM" (digestToText <$> checksums pkg)
|
||||||
<> generateMultiEntry "DOWNLOAD_x86_64" (render <$> downloads pkg)
|
<> generateMultiEntry "DOWNLOAD_x86_64" (render <$> downloadX64 pkg)
|
||||||
<> generateMultiEntry "MD5SUM_x86_64" (digestToText <$> checksums pkg)
|
<> generateMultiEntry "MD5SUM_x86_64" (digestToText <$> checksumX64 pkg)
|
||||||
<> "REQUIRES=\"" <> fromByteStringWords (requires pkg) <> "\"\n"
|
<> "REQUIRES=\"" <> fromByteStringWords (requires pkg) <> "\"\n"
|
||||||
<> "MAINTAINER=\"" <> Text.Builder.fromText (maintainer pkg) <> "\"\n"
|
<> "MAINTAINER=\"" <> Text.Builder.fromText (maintainer pkg) <> "\"\n"
|
||||||
<> "EMAIL=\"" <> Text.Builder.fromText (email pkg) <> "\"\n"
|
<> "EMAIL=\"" <> Text.Builder.fromText (email pkg) <> "\"\n"
|
||||||
|
@ -17,15 +17,14 @@ import qualified Text.URI as URI
|
|||||||
import Crypto.Hash (Digest, MD5)
|
import Crypto.Hash (Digest, MD5)
|
||||||
import SlackBuilder.Trans
|
import SlackBuilder.Trans
|
||||||
import Control.Monad.Catch (MonadThrow)
|
import Control.Monad.Catch (MonadThrow)
|
||||||
|
import System.Process (CmdSpec(..))
|
||||||
|
|
||||||
-- | Contains information how a package can be updated.
|
-- | Contains information how a package can be updated.
|
||||||
data Package = Package
|
data Package = Package
|
||||||
{ latest :: Updater
|
{ latest :: Updater
|
||||||
, category :: Text
|
, category :: Text
|
||||||
, name :: Text
|
, name :: Text
|
||||||
, homepage :: URI
|
, reupload :: Maybe [CmdSpec]
|
||||||
, requires :: [Text]
|
|
||||||
, reupload :: Bool
|
|
||||||
}
|
}
|
||||||
|
|
||||||
-- | Download URI with the MD5 checksum of the target.
|
-- | Download URI with the MD5 checksum of the target.
|
||||||
|
@ -25,6 +25,7 @@ common dependencies
|
|||||||
modern-uri ^>= 0.3.6,
|
modern-uri ^>= 0.3.6,
|
||||||
memory ^>= 0.18,
|
memory ^>= 0.18,
|
||||||
parser-combinators ^>= 1.3,
|
parser-combinators ^>= 1.3,
|
||||||
|
process ^>= 1.6.18,
|
||||||
text ^>= 2.0,
|
text ^>= 2.0,
|
||||||
tomland ^>= 1.3.3,
|
tomland ^>= 1.3.3,
|
||||||
transformers ^>= 0.5.6,
|
transformers ^>= 0.5.6,
|
||||||
@ -69,7 +70,6 @@ executable slackbuilder
|
|||||||
conduit ^>= 1.3.5,
|
conduit ^>= 1.3.5,
|
||||||
http-client ^>= 0.7,
|
http-client ^>= 0.7,
|
||||||
optparse-applicative ^>= 0.18.1,
|
optparse-applicative ^>= 0.18.1,
|
||||||
process ^>= 1.6.17,
|
|
||||||
req ^>= 3.13,
|
req ^>= 3.13,
|
||||||
slackbuilder,
|
slackbuilder,
|
||||||
unordered-containers ^>= 0.2.19,
|
unordered-containers ^>= 0.2.19,
|
||||||
|
@ -21,18 +21,28 @@ parseInfoFile'
|
|||||||
parseInfoFile' = parse parseInfoFile ""
|
parseInfoFile' = parse parseInfoFile ""
|
||||||
|
|
||||||
infoDownload0 :: ByteString
|
infoDownload0 :: ByteString
|
||||||
infoDownload0 = "PKGNAM=\"pkgnam\"\n\
|
infoDownload0 = "PRGNAM=\"pkgnam\"\n\
|
||||||
\VERSION=\"1.2.3\"\n\
|
\VERSION=\"1.2.3\"\n\
|
||||||
\HOMEPAGE=\"homepage\"\n\
|
\HOMEPAGE=\"homepage\"\n\
|
||||||
\DOWNLOAD=\"\"\n\
|
\DOWNLOAD=\"\"\n\
|
||||||
\MD5SUM=\"\"\n"
|
\MD5SUM=\"\"\n\
|
||||||
|
\DOWNLOAD_x86_64=\"\"\n\
|
||||||
|
\MD5SUM_x86_64=\"\"\n\
|
||||||
|
\REQUIRES=\"\"\n\
|
||||||
|
\MAINTAINER=\"Z\"\n\
|
||||||
|
\EMAIL=\"test@example.com\"\n"
|
||||||
|
|
||||||
infoDownload1 :: ByteString
|
infoDownload1 :: ByteString
|
||||||
infoDownload1 = "PKGNAM=\"pkgnam\"\n\
|
infoDownload1 = "PRGNAM=\"pkgnam\"\n\
|
||||||
\VERSION=\"1.2.3\"\n\
|
\VERSION=\"1.2.3\"\n\
|
||||||
\HOMEPAGE=\"homepage\"\n\
|
\HOMEPAGE=\"homepage\"\n\
|
||||||
\DOWNLOAD=\"https://dlackware.com/download.tar.gz\"\n\
|
\DOWNLOAD=\"https://dlackware.com/download.tar.gz\"\n\
|
||||||
\MD5SUM=\"0102030405060708090a0b0c0d0e0f10\"\n"
|
\MD5SUM=\"0102030405060708090a0b0c0d0e0f10\"\n\
|
||||||
|
\DOWNLOAD_x86_64=\"\"\n\
|
||||||
|
\MD5SUM_x86_64=\"\"\n\
|
||||||
|
\REQUIRES=\"\"\n\
|
||||||
|
\MAINTAINER=\"Z\"\n\
|
||||||
|
\EMAIL=\"test@example.com\"\n"
|
||||||
|
|
||||||
maybeToDoubleList :: forall a. Maybe a -> [a]
|
maybeToDoubleList :: forall a. Maybe a -> [a]
|
||||||
maybeToDoubleList xs = [y | x <- maybeToList xs, y <- [x, x]]
|
maybeToDoubleList xs = [y | x <- maybeToList xs, y <- [x, x]]
|
||||||
@ -60,7 +70,7 @@ spec = do
|
|||||||
|
|
||||||
describe "generate" $ do
|
describe "generate" $ do
|
||||||
it "generates an .info file without downloads" $
|
it "generates an .info file without downloads" $
|
||||||
let given = PackageInfo "pkgnam" "1.2.3" "homepage" [] []
|
let given = PackageInfo "pkgnam" "1.2.3" "homepage" [] [] [] [] [] "Z" "test@example.com"
|
||||||
in generate given `shouldBe` Text.decodeUtf8 infoDownload0
|
in generate given `shouldBe` Text.decodeUtf8 infoDownload0
|
||||||
|
|
||||||
it "splits multiple downloads into multiple lines" $
|
it "splits multiple downloads into multiple lines" $
|
||||||
@ -69,21 +79,26 @@ spec = do
|
|||||||
checksums' = maybeToDoubleList
|
checksums' = maybeToDoubleList
|
||||||
$ digestFromByteString (ByteString.pack [1.. 16])
|
$ digestFromByteString (ByteString.pack [1.. 16])
|
||||||
given = PackageInfo
|
given = PackageInfo
|
||||||
"pkgnam" "1.2.3" "homepage" downloads' checksums'
|
"pkgnam" "1.2.3" "homepage" downloads' checksums' [] [] [] "Z" "test@example.com"
|
||||||
expected = "PKGNAM=\"pkgnam\"\n\
|
expected = "PRGNAM=\"pkgnam\"\n\
|
||||||
\VERSION=\"1.2.3\"\n\
|
\VERSION=\"1.2.3\"\n\
|
||||||
\HOMEPAGE=\"homepage\"\n\
|
\HOMEPAGE=\"homepage\"\n\
|
||||||
\DOWNLOAD=\"https://dlackware.com/download.tar.gz \\\n\
|
\DOWNLOAD=\"https://dlackware.com/download.tar.gz \\\n\
|
||||||
\ https://dlackware.com/download.tar.gz\"\n\
|
\ https://dlackware.com/download.tar.gz\"\n\
|
||||||
\MD5SUM=\"0102030405060708090a0b0c0d0e0f10 \\\n\
|
\MD5SUM=\"0102030405060708090a0b0c0d0e0f10 \\\n\
|
||||||
\ 0102030405060708090a0b0c0d0e0f10\"\n"
|
\ 0102030405060708090a0b0c0d0e0f10\"\n\
|
||||||
|
\DOWNLOAD_x86_64=\"\"\n\
|
||||||
|
\MD5SUM_x86_64=\"\"\n\
|
||||||
|
\REQUIRES=\"\"\n\
|
||||||
|
\MAINTAINER=\"Z\"\n\
|
||||||
|
\EMAIL=\"test@example.com\"\n"
|
||||||
in generate given `shouldBe` expected
|
in generate given `shouldBe` expected
|
||||||
|
|
||||||
it "prints the checksum as a sequence of hexadecimal numbers" $
|
it "prints the checksum as a sequence of hexadecimal numbers" $
|
||||||
let downloads' = maybeToList
|
let downloads' = maybeToList
|
||||||
$ mkURI "https://dlackware.com/download.tar.gz"
|
$ mkURI "https://dlackware.com/download.tar.gz"
|
||||||
given = PackageInfo
|
given = PackageInfo
|
||||||
"pkgnam" "1.2.3" "homepage" downloads' checksumSample
|
"pkgnam" "1.2.3" "homepage" downloads' checksumSample [] [] [] "Z" "test@example.com"
|
||||||
in generate given `shouldBe` Text.decodeUtf8 infoDownload1
|
in generate given `shouldBe` Text.decodeUtf8 infoDownload1
|
||||||
|
|
||||||
describe "updateDownloadVersion" $ do
|
describe "updateDownloadVersion" $ do
|
||||||
@ -91,7 +106,7 @@ spec = do
|
|||||||
let downloads' = maybeToList
|
let downloads' = maybeToList
|
||||||
$ mkURI "https://dlackware.com/download-1.2.3.tar.gz"
|
$ mkURI "https://dlackware.com/download-1.2.3.tar.gz"
|
||||||
testPackage = PackageInfo
|
testPackage = PackageInfo
|
||||||
"pkgnam" "1.2.3" "homepage" downloads' checksumSample
|
"pkgnam" "1.2.3" "homepage" downloads' checksumSample [] [] [] "Z" "test@example.com"
|
||||||
expected = maybeToList
|
expected = maybeToList
|
||||||
$ mkURI "https://dlackware.com/download-2.3.4.tar.gz"
|
$ mkURI "https://dlackware.com/download-2.3.4.tar.gz"
|
||||||
actual = updateDownloadVersion testPackage "2.3.4" Nothing
|
actual = updateDownloadVersion testPackage "2.3.4" Nothing
|
||||||
@ -101,7 +116,7 @@ spec = do
|
|||||||
let downloads' = maybeToList
|
let downloads' = maybeToList
|
||||||
$ mkURI "https://dlackware.com/1.2/download.tar.gz"
|
$ mkURI "https://dlackware.com/1.2/download.tar.gz"
|
||||||
testPackage = PackageInfo
|
testPackage = PackageInfo
|
||||||
"pkgnam" "1.2.3" "homepage" downloads' checksumSample
|
"pkgnam" "1.2.3" "homepage" downloads' checksumSample [] [] [] "Z" "test@example.com"
|
||||||
expected = maybeToList
|
expected = maybeToList
|
||||||
$ mkURI "https://dlackware.com/2.3/download.tar.gz"
|
$ mkURI "https://dlackware.com/2.3/download.tar.gz"
|
||||||
actual = updateDownloadVersion testPackage "2.3.4" Nothing
|
actual = updateDownloadVersion testPackage "2.3.4" Nothing
|
||||||
@ -110,8 +125,8 @@ spec = do
|
|||||||
it "updates gnome version" $
|
it "updates gnome version" $
|
||||||
let downloads' = maybeToList
|
let downloads' = maybeToList
|
||||||
$ mkURI "https://download.gnome.org/core/3.36/3.36.0/sources/gnome-calendar-3.36.0.tar.xz"
|
$ mkURI "https://download.gnome.org/core/3.36/3.36.0/sources/gnome-calendar-3.36.0.tar.xz"
|
||||||
testPackage = PackageInfo
|
testPackage = PackageInfo "gnome-calendar" "3.36.0" "https://wiki.gnome.org/Core/Calendar"
|
||||||
"gnome-calendar" "3.36.0" "https://wiki.gnome.org/Core/Calendar" downloads' checksumSample
|
downloads' checksumSample [] [] [] "Z" "test@example.com"
|
||||||
expected = maybeToList
|
expected = maybeToList
|
||||||
$ mkURI "https://download.gnome.org/core/3.36/3.36.4/sources/gnome-calendar-3.36.2.tar.xz"
|
$ mkURI "https://download.gnome.org/core/3.36/3.36.4/sources/gnome-calendar-3.36.2.tar.xz"
|
||||||
actual = updateDownloadVersion testPackage "3.36.2" $ Just "3.36.4"
|
actual = updateDownloadVersion testPackage "3.36.2" $ Just "3.36.4"
|
||||||
@ -121,7 +136,7 @@ spec = do
|
|||||||
let downloads' = maybeToList
|
let downloads' = maybeToList
|
||||||
$ mkURI "https://dlackware.com/gnome-contacts-3.36.tar.xz"
|
$ mkURI "https://dlackware.com/gnome-contacts-3.36.tar.xz"
|
||||||
testPackage = PackageInfo
|
testPackage = PackageInfo
|
||||||
"gnome-contacts" "3.36" "homepage" downloads' checksumSample
|
"gnome-contacts" "3.36" "homepage" downloads' checksumSample [] [] [] "Z" "test@example.com"
|
||||||
expected = maybeToList
|
expected = maybeToList
|
||||||
$ mkURI "https://dlackware.com/gnome-contacts-3.36.2.tar.xz"
|
$ mkURI "https://dlackware.com/gnome-contacts-3.36.2.tar.xz"
|
||||||
actual = updateDownloadVersion testPackage "3.36.2" Nothing
|
actual = updateDownloadVersion testPackage "3.36.2" Nothing
|
||||||
@ -132,8 +147,8 @@ spec = do
|
|||||||
let downloads' = maybeToList
|
let downloads' = maybeToList
|
||||||
$ mkURI "https://dlackware.com/1.2/download.tar.gz"
|
$ mkURI "https://dlackware.com/1.2/download.tar.gz"
|
||||||
testPackage = PackageInfo
|
testPackage = PackageInfo
|
||||||
"pkgnam" "1.2.3" "homepage" downloads' checksumSample
|
"pkgnam" "1.2.3" "homepage" downloads' checksumSample [] [] [] "Z" "test@example.com"
|
||||||
expected = PackageInfo
|
expected = PackageInfo
|
||||||
"pkgnam" "2.3.4" "homepage" downloads' checksumSample
|
"pkgnam" "2.3.4" "homepage" downloads' checksumSample [] [] [] "Z" "test@example.com"
|
||||||
given = update testPackage "2.3.4" downloads' checksumSample
|
given = update testPackage "2.3.4" downloads' checksumSample
|
||||||
in given `shouldBe` expected
|
in given `shouldBe` expected
|
||||||
|
Loading…
Reference in New Issue
Block a user