Skip to content

SEMVER range and frame

Eric Pailleau edited this page Feb 17, 2020 · 1 revision

Behavior between range and frame

  • W=Release Window of project
  • R=Range
  • F=Frame
RRRRRRRRRRR                                     Failure
     WWWWWWWWWWWWWWWWWWWWW                              } Failure
FFFFFFFFFFF                                     Failure

        RRRRRRRRRRRRR                           Failure
     WWWWWWWWWWWWWWWWWWWWW                              } Failure
        FFFFFFFFFFFFF                           OK

                 RRRRRRRRRRRRRRR                Failure
     WWWWWWWWWWWWWWWWWWWWW                              } Failure
                 FFFFFFFFFFFFFFF                Failure

  RRRRRRRRRRRRRRRRRRRRRRRRRRRRR                 OK
     WWWWWWWWWWWWWWWWWWWWW                              } OK
         FFFFFFFFFFFFFF                         OK

         RRRRRRRRRRRRR                          Failure
     WWWWWWWWWWWWWWWWWWWWW                              } Failure
  FFFFFFFFFFFFFFFFFFFFFFFFFFFFF                 Failure

     RRRRRRRRRRRRRRRRRRRRR                      OK
     WWWWWWWWWWWWWWWWWWWWW                              } OK
     FFFFFFFFFFFFFFFFFFFFF                      OK

     RRRRRRR       RRRRRRR                      Failure
     WWWWWWWWWWWWWWWWWWWWW                              } Failure
     FFFFFFFF      FFFFFFF                      OK

  RRRRRRRR           RRRRRRRRR                  Failure
     WWWWWWWWWWWWWWWWWWWWW                              } Failure
  FFFFFFFF           FFFFFFFFF                  Failure

  R  RRRRRRRRRRRRRRRRRRRRR   R                  OK
     WWWWWWWWWWWWWWWWWWWWW                              } Failure
  F  FFFFFFFFFFFFFFFFFFFFF   F                  Failure

     RRRRRRRRRRRRRRRRRRRRR                      OK
     WWWWWWWWW   WWWWWWWWW                              } Failure
     FFFFFFFFFFFFFFFFFFFFF                      Failure

In short : A Frame must be equal or included in Window, and a Range must be equal or larger than Window.

Setting a SEMVER Range or/and Frame

Since version 2.5, a SEMVER range can be set by exporting an environment variable GEAS_RANGE.

Since version 2.6, a SEMVER frame can be set by exporting an environment variable GEAS_FRAME.

Both can be used at same time, but in such case, both check need to match for a success.

Any SEMVER syntax can be used. But note that old release versions will be internally mapped to syntaxically correct SEMVER version, on the fly.

For instance R16B will be transcoded to 16.2.0 . This imply that GEAS_RANGE=">R16B <21.2" will be understood even if first term is invalid from SEMVER perspective.

If the project release window is not matching range, an error will be raised and plugins will raise an error code 2.

If the project release window is not matching frame, an error will be raised and rebar3 plugin will raise an error code 5, erlang-mk always exit 2 on error (GNU make limitation).

See also Tuning output

Supported syntaxes

  • ^ and ~ approximative version
  • Hyphenated range
  • Combining range (and + or)

For more details see samovar documentation.