From dd0bc9610cf0e6842f5d5ac67a73f2fd6f4eba2f Mon Sep 17 00:00:00 2001 From: Ben Sima Date: Wed, 1 May 2024 23:41:47 -0400 Subject: Improve Haskell documentation and bild test Added docs to core libraries and expanded the Example.hs test to test for all the things I want to support in a build. --- Biz/Bild/Deps/Haskell.nix | 1 + Biz/Bild/Example.hs | 38 +++++++++++++++++++++++++++++++++++++- Biz/Cli.hs | 13 ++++++++++++- 3 files changed, 50 insertions(+), 2 deletions(-) (limited to 'Biz') diff --git a/Biz/Bild/Deps/Haskell.nix b/Biz/Bild/Deps/Haskell.nix index 8115688..04f3a74 100644 --- a/Biz/Bild/Deps/Haskell.nix +++ b/Biz/Bild/Deps/Haskell.nix @@ -44,6 +44,7 @@ "regex-applicative" "req" "safecopy" + "saltine" "servant" "servant-auth" "servant-auth-server" diff --git a/Biz/Bild/Example.hs b/Biz/Bild/Example.hs index 87472bb..66812ba 100644 --- a/Biz/Bild/Example.hs +++ b/Biz/Bild/Example.hs @@ -1,9 +1,45 @@ +{-# LANGUAGE QuasiQuotes #-} {-# LANGUAGE NoImplicitPrelude #-} -- : out example module Biz.Bild.Example where +-- Both internal and external language dependencies are detected automatically +-- by bild, for example here we import 'Crypto.Saltine' and list 'saltine' in +-- 'Deps/Haskell.nix' to indicate that this is the package we want made +-- available to bild, which will index the external package and record its +-- modules for lookup. import Alpha +import qualified Biz.Cli as Cli +import qualified Biz.Test as Test +import qualified Crypto.Saltine as Saltine +import qualified Crypto.Saltine.Core.SecretBox as Saltine main :: IO () -main = putStrLn "Hello world" +main = Cli.main <| Cli.Plan help move test pure + +move :: Cli.Arguments -> IO () +move _ = putStrLn "Hello world" + +test :: Test.Tree +test = + Test.group + "Biz.Bild.Example" + [ Test.unit "can use saltine package" <| do + Saltine.sodiumInit + k <- Saltine.newKey + n <- Saltine.newNonce + let msg = "foobar" + let encryptedMsg = Saltine.secretbox k n <| str "foobar" + Just msg Test.@=? str IO (), + -- | The test suite for the gram, invoked when 'test' is passed as the first + -- argument to the program test :: Test.Tree, + -- | Function for cleaning up any files or resources, presumably on + -- shutdown. Can be just `pure` if you have nothing to tidy. tidy :: cfg -> IO () } +-- | The entrypoint for CLI programs, use this in your own `main`. main :: Plan cfg -> IO () main Plan {..} = Environment.getArgs -- cgit v1.2.3