From 057f5b74ebb7851f6ba824129b3e3316cae23260 Mon Sep 17 00:00:00 2001 From: Bruce Hill Date: Wed, 6 Feb 2019 15:33:10 -0800 Subject: Moving to better, more centralized versioning system. Now the Nomsu version is just defined as a list at the top of nomsu.moon, and uses X.Y.Z form instead of X.Y.Z.W. Added a ([...], from 2) method and a ([...], up to 5) method, and fixed a few upgrade bugs. --- lib/compatibility/7.nom | 12 +++++++++++- lib/compatibility/compatibility.nom | 17 ++++++++++++----- lib/compatibility/init.nom | 3 +++ 3 files changed, 26 insertions(+), 6 deletions(-) (limited to 'lib/compatibility') diff --git a/lib/compatibility/7.nom b/lib/compatibility/7.nom index fb313c3..fe31ec6 100644 --- a/lib/compatibility/7.nom +++ b/lib/compatibility/7.nom @@ -1,5 +1,5 @@ #!/usr/bin/env nomsu -V7 -# +### This file defines upgrades from Nomsu <7 to 7 use "compatibility/compatibility" @@ -22,3 +22,13 @@ upgrade $tree to "7" as: return "Action" tree from $tree.source with ("Text" tree with $e.type) "tree" "with" unpack $e + +upgrade action "Nomsu version" to "7" via ->(`$(NOMSU VERSION)) +upgrade action [ + "Nomsu syntax version", "Nomsu compiler version", "core version", "lib version" +] to "7" via: + for $: + at $.source fail (" + Deprecation error: Actions for accessing specific parts of the version number have been deprecated. + Hint: Use $(NOMSU VERSION).1, etc. instead. + ") diff --git a/lib/compatibility/compatibility.nom b/lib/compatibility/compatibility.nom index a7ca0c1..c1c83d3 100644 --- a/lib/compatibility/compatibility.nom +++ b/lib/compatibility/compatibility.nom @@ -70,8 +70,15 @@ external: $tree upgraded to $end_version from $start_version ] all mean: unless ($tree is syntax tree): return $tree - ($ver as version list) means (($ as number) for $ in $ver matching "[0-9]+") + ($ver as version list) means: + if ($ver is "Text"): + return (($ as number) for $ in $ver matching "[0-9]+") + return $ver (Ver $) means: + if ($ is "a List"): + if ($.1 is "Text"): + return {.lib = $.1, .version = ($, from 2)} + return {.version = $} [$lib, $ver] = ($, match "(.*)/([0-9.]+)") if $lib: return {.lib = $lib, .version = ($ver as version list)} @@ -117,15 +124,15 @@ external: $tree = (SyntaxTree {: for $k = $v in $tree: add $k = $v}) $tree.version = $end_version if $tree.shebang: - $tree.shebang = "#!/usr/bin/env nomsu -V\$end_version\n" + $tree.shebang = "#!/usr/bin/env nomsu -V\($end_version, joined with ".")\n" return $tree ($tree upgraded from $start_version) means - $tree upgraded from $start_version to (Nomsu version) + $tree upgraded from $start_version to $(NOMSU VERSION) ($tree upgraded to $end_version) means - $tree upgraded from ($tree.version or (Nomsu version)) to $end_version + $tree upgraded from ($tree.version or $(NOMSU VERSION)) to $end_version ($tree upgraded) means - $tree upgraded from ($tree.version or (Nomsu version)) to (Nomsu version) + $tree upgraded from ($tree.version or $(NOMSU VERSION)) to $(NOMSU VERSION) diff --git a/lib/compatibility/init.nom b/lib/compatibility/init.nom index 42834bb..90d2ca5 100644 --- a/lib/compatibility/init.nom +++ b/lib/compatibility/init.nom @@ -17,3 +17,6 @@ export "compatibility/4.11" export "compatibility/4.12" export "compatibility/5.13" export "compatibility/6.14" +export "compatibility/6.15" +export "compatibility/6.15.9" +export "compatibility/7" -- cgit v1.2.3