summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEugen Wissner <belka@caraus.de>2023-09-21 23:51:02 +0200
committerEugen Wissner <belka@caraus.de>2023-09-21 23:51:02 +0200
commita7114618c1290b00745db69ef0e60b2e848a662d (patch)
tree40f49cf43c7f443b5e01505d36474c0f3514ba48
parent77c9a2ab54b697f37e21b76c1fd82fc42dc4792e (diff)
downloadslackbuilder-a7114618c1290b00745db69ef0e60b2e848a662d.tar.gz
Combine test and application dependencies
-rw-r--r--app/Main.hs15
-rw-r--r--app/SlackBuilder/Package.hs1
-rw-r--r--slackbuilder.cabal14
-rw-r--r--tests/SlackBuilder/PackageSpec.hs8
4 files changed, 31 insertions, 7 deletions
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 ()