From a7114618c1290b00745db69ef0e60b2e848a662d Mon Sep 17 00:00:00 2001 From: Eugen Wissner Date: Thu, 21 Sep 2023 23:51:02 +0200 Subject: [PATCH] Combine test and application dependencies --- app/Main.hs | 15 ++++++++++++--- app/SlackBuilder/Package.hs | 1 + slackbuilder.cabal | 14 ++++++++++---- tests/SlackBuilder/PackageSpec.hs | 8 ++++++++ 4 files changed, 31 insertions(+), 7 deletions(-) create mode 100644 tests/SlackBuilder/PackageSpec.hs diff --git a/app/Main.hs b/app/Main.hs index 51681b5..46256cc 100644 --- a/app/Main.hs +++ b/app/Main.hs @@ -22,6 +22,7 @@ import Text.URI.QQ (uri) import Data.Foldable (for_) import qualified Text.URI as URI import GHC.Records (HasField(..)) +import System.FilePath ((), (<.>)) data Package = Package { latest :: Package.Updater @@ -77,12 +78,20 @@ updatePackage Package{..} version = do uri' <- liftIO $ Package.renderDownloadWithVersion downloadTemplate version let tarball = "slackbuilds/development/universal-ctags/ctags-#{version}.tar.gz" checksum <- fromMaybe undefined <$> download uri' tarball - download' <- liftIO $ mkURI "https://download.dlackware.com/hosted-sources/universal-ctags/ctags-#{version}.tar.gz" + download' <- liftIO + $ mkURI + $ Text.replace "#{version}" version + "https://download.dlackware.com/hosted-sources/universal-ctags/ctags-#{version}.tar.gz" + repository' <- SlackBuilderT $ asks repository + let infoFilePath = repository' Text.unpack packagePath + (Text.unpack name <.> "info") - liftIO $ Text.IO.writeFile "slackbuilds/#{package.path}/#{package.name}.info" + liftIO $ Text.IO.writeFile infoFilePath $ Package.infoTemplate package' [Package.Download download' checksum False] updateSlackBuildVersion packagePath version - uploadCommand (Text.pack tarball) "#{CONFIG[:remote_path]}/universal-ctags" + + remotePath' <- SlackBuilderT $ asks remotePath + uploadCommand (Text.pack tarball) $ remotePath' <> "/universal-ctags" commit packagePath version diff --git a/app/SlackBuilder/Package.hs b/app/SlackBuilder/Package.hs index cc3ea42..a447609 100644 --- a/app/SlackBuilder/Package.hs +++ b/app/SlackBuilder/Package.hs @@ -63,6 +63,7 @@ instance Show DownloadTemplate where show (DownloadTemplate components) = concatMap show components +-- | Replaces placeholders in the URL template with the given version. renderDownloadWithVersion :: MonadThrow m => DownloadTemplate -> Text -> m URI renderDownloadWithVersion (DownloadTemplate components) version = URI.mkURI $ foldr f "" components diff --git a/slackbuilder.cabal b/slackbuilder.cabal index 6244a58..a66a418 100644 --- a/slackbuilder.cabal +++ b/slackbuilder.cabal @@ -15,7 +15,13 @@ maintainer: belka@caraus.de category: Build extra-source-files: CHANGELOG.md +common dependencies + ghc-options: -threaded -rtsopts -with-rtsopts=-N -Wall + build-depends: + base ^>= 4.16.4.0, + executable slackbuilder + import: dependencies main-is: Main.hs other-modules: @@ -37,7 +43,6 @@ executable slackbuilder TypeApplications build-depends: aeson ^>= 2.2.0, - base ^>= 4.16.4.0, bytestring ^>= 0.11.0, conduit ^>= 1.3.5, cryptonite >= 0.30, @@ -56,14 +61,15 @@ executable slackbuilder hs-source-dirs: app default-language: Haskell2010 - ghc-options: -threaded -rtsopts -with-rtsopts=-N -Wall - test-suite slackbuilder-test + import: dependencies type: exitcode-stdio-1.0 main-is: Spec.hs + + other-modules: + SlackBuilder.PackageSpec hs-source-dirs: tests - ghc-options: -threaded -rtsopts -with-rtsopts=-N -Wall default-language: Haskell2010 build-depends: hspec >= 2.10.9 && < 2.12 diff --git a/tests/SlackBuilder/PackageSpec.hs b/tests/SlackBuilder/PackageSpec.hs new file mode 100644 index 0000000..d8617a4 --- /dev/null +++ b/tests/SlackBuilder/PackageSpec.hs @@ -0,0 +1,8 @@ +module SlackBuilder.PackageSpec + ( spec + ) where + +import Test.Hspec (Spec) + +spec :: Spec +spec = pure ()