0 | module Pack.Database.TOML
2 | import Data.SortedMap
3 | import Idris.Package.Types
4 | import Libraries.Utils.Path
6 | import Pack.Core.TOML
7 | import Pack.Core.Types
8 | import Pack.Database.Types
13 | FromTOML MetaCommit where fromTOML = tmap fromString
15 | git : FromTOML c => File Abs -> TomlValue -> Either TOMLErr (Package_ I c)
19 | (valAt "commit" f v)
21 | (optValAt "packagePath" f False v)
22 | (maybeValAt "test" f v)
23 | (maybeValAt "notice" f v)
26 | local : File Abs -> TomlValue -> Either TOMLErr (Package_ f c)
31 | (optValAt "packagePath" f False v)
32 | (maybeValAt "test" f v)
35 | package : FromTOML c => File Abs -> TomlValue -> Either TOMLErr (Package_ I c)
36 | package f v = valAt {a = String} "type" f v >>=
40 | "local" => local f v
41 | _ => Left $
WrongType ["type"] "Package Type"
43 | gitM : FromTOML c => File Abs -> TomlValue -> Either TOMLErr (Package_ Maybe c)
46 | (maybeValAt "url" f v)
47 | (maybeValAt "commit" f v)
48 | (maybeValAt "ipkg" f v)
49 | (maybeValAt "packagePath" f v)
50 | (maybeValAt "test" f v)
51 | (maybeValAt "notice" f v)
54 | packageM : FromTOML c => File Abs -> TomlValue -> Either TOMLErr (Package_ Maybe c)
55 | packageM f v = optValAt {a = String} "type" f "git" v >>=
58 | "github" => gitM f v
59 | "local" => local f v
60 | _ => Left $
WrongType ["type"] "Package Type"
63 | FromTOML c => FromTOML (Package_ I c) where fromTOML = package
66 | FromTOML c => FromTOML (Package_ Maybe c) where fromTOML = packageM
71 | idrisRepo = "https://github.com/idris-lang/Idris2.git"
74 | v0 = MkPkgVersion (0:::[0,0])
77 | FromTOML MetaDB where
80 | (optValAt "idris2.url" f idrisRepo v)
81 | (valAt "idris2.commit" f v)
83 | (optValAt "db" f empty v)