aboutsummaryrefslogtreecommitdiff
path: root/CLPM/Package.dcl
diff options
context:
space:
mode:
authorCamil Staps2017-02-04 00:15:30 +0100
committerCamil Staps2017-02-04 00:15:30 +0100
commit8fd9782b67bd97b33adab00815d215d10382adea (patch)
treeb573af31d974ee646e47f9f124f18edb0c934529 /CLPM/Package.dcl
parentInitial commit (diff)
Basic Package structure
Diffstat (limited to 'CLPM/Package.dcl')
-rw-r--r--CLPM/Package.dcl58
1 files changed, 58 insertions, 0 deletions
diff --git a/CLPM/Package.dcl b/CLPM/Package.dcl
new file mode 100644
index 0000000..2a476a7
--- /dev/null
+++ b/CLPM/Package.dcl
@@ -0,0 +1,58 @@
+definition module CLPM.Package
+
+from StdFile import class <<<
+
+from Data.Maybe import :: Maybe
+from Text.JSON import :: JSONNode, generic JSONEncode, generic JSONDecode
+
+:: StoredPackage
+ = { name :: Maybe PackageName
+ , desc :: Maybe Description
+ , author :: Maybe Author
+ , url :: Maybe Url
+ , depends :: Maybe [StoredDependency]
+ }
+
+:: StoredDependency :== (PackageName, StoredPackageSource)
+:: StoredPackageSource :== String
+
+:: Package
+ = { name :: PackageName
+ , desc :: Description
+ , author :: Author
+ , url :: Url
+ , depends :: [Dependency]
+ }
+
+:: Dependency
+ = { dep_name :: PackageName
+ , dep_source :: PackageSource
+ }
+
+:: PackageSource
+ = GitHub String String GitTag
+ | Git Url GitTag
+ | Download Url
+
+:: PackageName :== String
+:: Description :== String
+:: Author :== String
+:: Url :== String
+
+:: GitTag
+ = Commit String
+ | Tag String
+ | Latest
+
+derive JSONEncode StoredPackage
+derive JSONDecode StoredPackage
+
+instance <<< Package
+
+toPackage :: StoredPackage -> Package
+toStoredPackage :: Package -> StoredPackage
+
+DEFAULT_NAME :== "Unnamed package"
+DEFAULT_DESC :== "Empty description"
+DEFAULT_AUTHOR :== "Unknown author"
+DEFAULT_URL :== "http://clean.cs.ru.nl"