]> gitweb.factorcode.org Git - factor.git/commitdiff
semver: default to -# prerelease releases
authorJohn Benediktsson <mrjbq7@gmail.com>
Tue, 24 Jan 2023 22:10:38 +0000 (14:10 -0800)
committerJohn Benediktsson <mrjbq7@gmail.com>
Tue, 24 Jan 2023 22:10:38 +0000 (14:10 -0800)
extra/semver/semver-tests.factor
extra/semver/semver.factor

index 9083277486f6f6311b27540ab5e6e7b7e71b12b9..fc01ce59fcf204433e55ed840bca5dd830eb3b19 100644 (file)
@@ -150,18 +150,33 @@ CONSTANT: semver-gt-comparisons {
 { "1.3.3" } [ "1.3.2" >semver bump-patch semver>string ] unit-test
 { "0.1.5" } [ "0.1.5-rc.2" >semver bump-patch semver>string ] unit-test
 
-{ "0.1.5-dev.0" } [ "0.1.4" >semver bump-prerelease semver>string ] unit-test
-{ "0.1.5-dev.1" } [ "0.1.5-dev.0" >semver bump-prerelease semver>string ] unit-test
-
-{ "1.2.4-dev.0" } [ "1.2.3" >semver bump-prepatch semver>string ] unit-test
-
-{ "1.3.0-dev.0" } [ "1.2.3" >semver bump-preminor semver>string ] unit-test
-{ "1.3.0" } [ "1.2.3" >semver bump-minor semver>string ] unit-test
+{
+    "0.1.4"
+    "0.1.5-0"
+    "0.1.5-1"
+    "0.1.5-2"
+    "0.1.5-alpha.0"
+    "0.1.5-alpha.1"
+    "0.1.5-beta.0"
+    "0.1.5-beta.1"
+    "0.1.5-rc.0"
+    "0.1.5"
+} [
+    "0.1.4" >semver [ semver>string ] keep
+    bump-prepatch [ semver>string ] keep
+    2 [ bump-prerelease [ semver>string ] keep ] times
+    2 [ bump-alpha [ semver>string ] keep ] times
+    2 [ bump-beta [ semver>string ] keep ] times
+    bump-rc [ semver>string ] keep
+    bump-patch semver>string
+] unit-test
 
-{ "2.0.0-dev.0" } [ "1.2.3" >semver bump-premajor semver>string ] unit-test
-{ "2.0.0-dev.1" } [ "1.2.3" >semver bump-premajor bump-prerelease semver>string ] unit-test
+{ "1.2.4-0" } [ "1.2.3" >semver bump-prepatch semver>string ] unit-test
+{ "1.3.0-0" } [ "1.2.3" >semver bump-preminor semver>string ] unit-test
+{ "2.0.0-0" } [ "1.2.3" >semver bump-premajor semver>string ] unit-test
+{ "2.0.0-1" } [ "1.2.3" >semver bump-premajor bump-prerelease semver>string ] unit-test
 
-{ "1.2.3-erg.0" } [ "1.2.3-dev.0" >semver "erg" bump-prerelease-id semver>string ] unit-test
+{ "1.2.3-erg.0" } [ "1.2.3-0" >semver "erg" bump-prerelease-id semver>string ] unit-test
 { "1.2.3-erg.1" } [ "1.2.3-erg.0" >semver "erg" bump-prerelease-id semver>string ] unit-test
 { "1.2.4-erg.0" } [ "1.2.3" >semver "erg" bump-prerelease-id semver>string ] unit-test
 
@@ -191,6 +206,8 @@ CONSTANT: semver-gt-comparisons {
 
 { t } [
     {
+        "1.0.0-0"
+        "1.0.0-12"
         "1.0.0-alpha"
         "1.0.0-alpha.1"
         "1.0.0-alpha.beta"
index 0b4dbdf86e01ed39b181a94b23f7f4ff6f8ff4b1..2911d29b8f13676dae00675bc34068f39e128e76 100644 (file)
@@ -4,8 +4,7 @@
 USING: accessors arrays assocs.extras combinators
 combinators.short-circuit combinators.smart io kernel math
 math.order math.parser multiline peg.ebnf sequences
-sequences.deep sequences.extras sorting.human splitting strings
-;
+sequences.deep splitting strings ;
 
 IN: semver
 
@@ -68,7 +67,7 @@ M: string >semver
 
 : bump-prerelease-id ( semver id -- semver )
     over prerelease>> [
-        [ bump-patch ] dip ".0" append
+        [ bump-patch ] dip [ "0" ] [ ".0" append ] if-empty
     ] [
         2dup swap head? [
             "." split
@@ -76,34 +75,29 @@ M: string >semver
                 over [ string>number 1 + number>string ] change-nth
                 "." join nip
             ] [
-                2drop ".0" append
+                2drop [ "0" ] [ ".0" append ] if-empty
             ] if
         ] [
-            drop ".0" append
+            drop [ "0" ] [ ".0" append ] if-empty
         ] if
-    ] if-empty >>prerelease
-    f >>build ;
+    ] if-empty >>prerelease f >>build ;
 
-: bump-prerelease ( semver -- semver )
-    "dev" bump-prerelease-id ;
+: bump-prerelease ( semver -- semver ) f bump-prerelease-id ;
 
-: bump-prepatch ( semver -- semver )
-    [ 1 + ] change-patch
-    "dev.0" >>prerelease
-    f >>build ;
+: bump-alpha ( semver -- semver ) "alpha" bump-prerelease-id ;
 
-: bump-preminor ( semver -- semver )
-    [ 1 + ] change-minor
-    0 >>patch
-    "dev.0" >>prerelease
-    f >>build ;
+: bump-beta ( semver -- semver ) "beta" bump-prerelease-id ;
+
+: bump-rc ( semver -- semver ) "rc" bump-prerelease-id ;
 
 : bump-premajor ( semver -- semver )
-    [ 1 + ] change-major
-    0 >>minor
-    0 >>patch
-    "dev.0" >>prerelease
-    f >>build ;
+    [ 1 + ] change-major 0 >>minor 0 >>patch "0" >>prerelease f >>build ;
+
+: bump-preminor ( semver -- semver )
+    [ 1 + ] change-minor 0 >>patch "0" >>prerelease f >>build ;
+
+: bump-prepatch ( semver -- semver )
+    [ 1 + ] change-patch "0" >>prerelease f >>build ;
 
 : lower-range ( semver -- str )
     semver>string ">=" prepend ;