summaryrefslogtreecommitdiff
path: root/Omni/Bild/Example.hs
blob: 025391ca4735498ac2c09b5e057484cca2690e05 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE NoImplicitPrelude #-}

-- : out example
module Omni.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 Crypto.Saltine as Saltine
import qualified Crypto.Saltine.Core.SecretBox as Saltine
import qualified Omni.Cli as Cli
import qualified Omni.Test as Test

main :: IO ()
main = Cli.main <| Cli.Plan help move test pure

move :: Cli.Arguments -> IO ()
move _ = putStrLn "Hello world"

test :: Test.Tree
test =
  Test.group
    "Omni.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 </ Saltine.secretboxOpen k n encryptedMsg
    ]

help :: Cli.Docopt
help =
  [Cli.docopt|
example that tests basic haskell build

Usage:
  example
  example test
|]