Skip to main content

carrier_shape

Function carrier_shape 

Source
pub fn carrier_shape(line: &str) -> Option<&'static str>
Expand description

The shape a line states a version in, when it states one.

Three shapes, each a place a version is declared rather than mentioned:

  • an assignment to a name ending in version, in any case and in the languages the tool’s files are written in: shell MJ_VERSION="0.8.0" and export FOO_VERSION=1.2.3, TOML version = "1.2.3", JavaScript const VERSION = '1.2.3', Python __version__ = "1.2.3";
  • a version member of YAML or JSON at the start of a line: version: 1.2.3, "version": "1.2.3";
  • the product’s own answer to version: majordomus 0.8.0.

A version is three numbers, optionally after a v; a schema’s version: 1 is not one.

use majordomus_cli::release::version::carrier_shape;
assert!(carrier_shape("MJ_VERSION=\"0.8.0\"").is_some());
assert!(carrier_shape("  export FOO_VERSION=v1.2.3").is_some());
assert!(carrier_shape("declare -r MJ_VERSION=\"1.2.3\"").is_some());
assert!(carrier_shape("version = \"1.2.3\"").is_some());
assert!(carrier_shape("export const VERSION = '1.2.3';").is_some());
assert!(carrier_shape("let appVersion = `1.2.3`;").is_some());
assert!(carrier_shape("__version__ = \"1.2.3\"").is_some());
assert!(carrier_shape("version: 1.2.3").is_some());
assert!(carrier_shape("  \"version\": \"1.2.3\",").is_some());
assert!(carrier_shape("echo \"majordomus 0.8.0\"").is_some());
// read, not stated: a variable, a schema version, a generator stamp, a sentinel, a
// comparison, a property of something else
assert!(carrier_shape("MJ_VERSION=\"${line#version=}\"").is_none());
assert!(carrier_shape("version: 1").is_none());
assert!(carrier_shape("# Generator: majordomus-cli 0.8.0").is_none());
assert!(carrier_shape("MJ_VERSION=\"site\"").is_none());
assert!(carrier_shape("version == \"1.2.3\"").is_none());
assert!(carrier_shape("pkg.version = \"1.2.3\"").is_none());
assert!(carrier_shape("versioned = \"1.2.3\"").is_none());