aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/program/aedifex/profile.lux
diff options
context:
space:
mode:
authorEduardo Julian2020-10-03 20:13:27 -0400
committerEduardo Julian2020-10-03 20:13:27 -0400
commit2d16bdfa2854d851034eff9f042863dcceb8664a (patch)
treea1c593916c6ec9d6e9c132e641fc8b34b85a07f8 /stdlib/source/program/aedifex/profile.lux
parent618b1ce9743bb79f1ae3375b05a394a4183b21e8 (diff)
Gave Aedifex support for multiple profiles.
Diffstat (limited to 'stdlib/source/program/aedifex/profile.lux')
-rw-r--r--stdlib/source/program/aedifex/profile.lux135
1 files changed, 135 insertions, 0 deletions
diff --git a/stdlib/source/program/aedifex/profile.lux b/stdlib/source/program/aedifex/profile.lux
new file mode 100644
index 000000000..5e5cb6175
--- /dev/null
+++ b/stdlib/source/program/aedifex/profile.lux
@@ -0,0 +1,135 @@
+(.module:
+ [lux (#- Info Source Module Name)
+ [abstract
+ [monoid (#+ Monoid)]]
+ [control
+ ["." exception (#+ exception:)]]
+ [data
+ ["." maybe ("#@." monoid)]
+ ["." text]
+ [collection
+ ["." dictionary (#+ Dictionary)]
+ ["." list ("#@." monoid)]
+ ["." set (#+ Set)]]]
+ [world
+ [net (#+ URL)]
+ [file (#+ Path)]]
+ [tool
+ [compiler
+ [meta
+ [archive
+ [descriptor (#+ Module)]]]]]]
+ [//
+ [artifact (#+ Artifact)]
+ ["." dependency]])
+
+(def: #export file
+ "project.lux")
+
+(type: #export Distribution
+ #Repo
+ #Manual)
+
+(type: #export License
+ [Text
+ URL
+ Distribution])
+
+(type: #export SCM
+ URL)
+
+(type: #export Organization
+ [Text
+ URL])
+
+(type: #export Email
+ Text)
+
+(type: #export Developer
+ [Text
+ Email
+ (Maybe Organization)])
+
+(type: #export Contributor
+ Developer)
+
+(type: #export Info
+ {#url (Maybe URL)
+ #scm (Maybe SCM)
+ #description (Maybe Text)
+ #licenses (List License)
+ #organization (Maybe Organization)
+ #developers (List Developer)
+ #contributors (List Contributor)})
+
+(def: #export default-info
+ Info
+ {#url #.None
+ #scm #.None
+ #description #.None
+ #licenses (list)
+ #organization #.None
+ #developers (list)
+ #contributors (list)})
+
+(type: #export Source
+ Path)
+
+(def: #export default-source
+ Source
+ "source")
+
+(type: #export Target
+ Path)
+
+(def: #export default-target
+ Target
+ "target")
+
+(type: #export Name
+ Text)
+
+(def: #export default
+ Name
+ "")
+
+(type: #export Profile
+ {#parents (List Name)
+ #identity (Maybe Artifact)
+ #info (Maybe Info)
+ #repositories (Set dependency.Repository)
+ #dependencies (Set dependency.Dependency)
+ #sources (Set Source)
+ #target (Maybe Target)
+ #program (Maybe Module)
+ #test (Maybe Module)
+ #deploy-repositories (Dictionary Text dependency.Repository)})
+
+(exception: #export no-identity)
+
+(structure: #export monoid
+ (Monoid Profile)
+
+ (def: identity
+ {#parents (list)
+ #identity #.None
+ #info #.None
+ #repositories (set.new text.hash)
+ #dependencies (set.new dependency.hash)
+ #sources (set.new text.hash)
+ #target #.None
+ #program #.None
+ #test #.None
+ #deploy-repositories (dictionary.new text.hash)})
+
+ (def: (compose override baseline)
+ {#parents (list@compose (get@ #parents baseline) (get@ #parents override))
+ #identity (maybe@compose (get@ #identity override) (get@ #identity baseline))
+ #info (maybe@compose (get@ #info override) (get@ #info baseline))
+ #repositories (set.union (get@ #repositories baseline) (get@ #repositories override))
+ #dependencies (set.union (get@ #dependencies baseline) (get@ #dependencies override))
+ #sources (set.union (get@ #sources baseline) (get@ #sources override))
+ #target (maybe@compose (get@ #target override) (get@ #target baseline))
+ #program (maybe@compose (get@ #program override) (get@ #program baseline))
+ #test (maybe@compose (get@ #test override) (get@ #test baseline))
+ #deploy-repositories (dictionary.merge (get@ #deploy-repositories override) (get@ #deploy-repositories baseline))}))