aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/program/aedifex/pom.lux
diff options
context:
space:
mode:
authorEduardo Julian2021-02-07 04:56:58 -0400
committerEduardo Julian2021-02-07 04:56:58 -0400
commitd99c47989a1047cd24019fd5ce434e701b5d3519 (patch)
tree19bfb0f5e4713e5dcd0c71bbd7b88d09d75dfe5d /stdlib/source/program/aedifex/pom.lux
parent571d816dfd0b056a1649f5057867abbfa4421f5d (diff)
Mo' updates, less problems.
Diffstat (limited to '')
-rw-r--r--stdlib/source/program/aedifex/pom.lux42
1 files changed, 31 insertions, 11 deletions
diff --git a/stdlib/source/program/aedifex/pom.lux b/stdlib/source/program/aedifex/pom.lux
index f085e2808..f105f07b6 100644
--- a/stdlib/source/program/aedifex/pom.lux
+++ b/stdlib/source/program/aedifex/pom.lux
@@ -11,6 +11,7 @@
[data
["." name]
["." maybe ("#\." functor)]
+ ["." text]
[format
["_" xml (#+ Tag XML)]]
[collection
@@ -150,8 +151,8 @@
(<>.and <xml>.tag
(<xml>.children <xml>.text)))
-(def: parse_dependency
- (Parser Dependency)
+(def: (parse_dependency own_version parent_version)
+ (-> Text Text (Parser Dependency))
(do {! <>.monad}
[properties (\ ! map (dictionary.from_list name.hash)
(<xml>.children (<>.some ..parse_property)))]
@@ -159,28 +160,47 @@
try.from_maybe
(do maybe.monad
[group (dictionary.get ["" ..group_tag] properties)
- artifact (dictionary.get ["" ..artifact_tag] properties)
- version (dictionary.get ["" ..version_tag] properties)]
+ artifact (dictionary.get ["" ..artifact_tag] properties)]
(wrap {#//dependency.artifact {#//artifact.group group
#//artifact.name artifact
- #//artifact.version version}
+ #//artifact.version (|> properties
+ (dictionary.get ["" ..version_tag])
+ (maybe.default "")
+ (text.replace_all "${project.version}" own_version)
+ (text.replace_all "${project.parent.version}" parent_version))}
#//dependency.type (|> properties
(dictionary.get ["" "type"])
- (maybe.default //artifact/type.lux_library))})))))
+ (maybe.default //artifact/type.jvm_library))})))))
-(def: parse_dependencies
- (Parser (List Dependency))
+(def: (parse_dependencies own_version parent_version)
+ (-> Text Text (Parser (List Dependency)))
(do {! <>.monad}
[_ (<xml>.node ["" ..dependencies_tag])]
- (<xml>.children (<>.some ..parse_dependency))))
+ (<xml>.children (<>.some (..parse_dependency own_version parent_version)))))
+
+(def: own_version
+ (Parser Text)
+ (do <>.monad
+ [_ (<xml>.node ["" ..version_tag])]
+ (<xml>.children <xml>.text)))
+
+(def: parent_version
+ (Parser Text)
+ (do <>.monad
+ [_ (<xml>.node ["" "parent"])]
+ ..own_version))
(def: #export parser
(Parser /.Profile)
(do {! <>.monad}
- [_ (<xml>.node ["" ..project_tag])]
+ [own_version (<>.default "" (<xml>.somewhere ..own_version))
+ parent_version (<>.default "" (<xml>.somewhere ..parent_version))
+ _ (<xml>.node ["" ..project_tag])]
(<xml>.children
(do !
- [dependencies (<xml>.somewhere ..parse_dependencies)
+ [dependencies (|> (..parse_dependencies own_version parent_version)
+ <xml>.somewhere
+ (<>.default (list)))
_ (<>.some <xml>.ignore)]
(wrap (|> (\ /.monoid identity)
(update@ #/.dependencies (function (_ empty)