aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/program/aedifex/artifact/snapshot/version/value.lux
diff options
context:
space:
mode:
Diffstat (limited to 'stdlib/source/program/aedifex/artifact/snapshot/version/value.lux')
-rw-r--r--stdlib/source/program/aedifex/artifact/snapshot/version/value.lux42
1 files changed, 42 insertions, 0 deletions
diff --git a/stdlib/source/program/aedifex/artifact/snapshot/version/value.lux b/stdlib/source/program/aedifex/artifact/snapshot/version/value.lux
new file mode 100644
index 000000000..7356d897c
--- /dev/null
+++ b/stdlib/source/program/aedifex/artifact/snapshot/version/value.lux
@@ -0,0 +1,42 @@
+(.module:
+ [lux #*
+ [abstract
+ [equivalence (#+ Equivalence)]]
+ [data
+ ["." product]
+ ["." text
+ ["%" format]]]]
+ ["." /// (#+ Snapshot)
+ ["#." time]
+ ["#." stamp]])
+
+(type: #export Value
+ {#version Text
+ #snapshot Snapshot})
+
+(def: #export equivalence
+ (Equivalence Value)
+ ($_ product.equivalence
+ text.equivalence
+ ///.equivalence
+ ))
+
+(def: separator
+ "-")
+
+(def: #export snapshot
+ "SNAPSHOT")
+
+(def: #export (format (^slots [#version #snapshot]))
+ (%.Format Value)
+ (case snapshot
+ #///.Local
+ version
+
+ (#///.Remote stamp)
+ (let [(^slots [#///stamp.time #///stamp.build]) stamp]
+ (%.format (text.replace_all ..snapshot
+ (///time.format time)
+ version)
+ ..separator
+ (%.nat build)))))