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: shellMJ_VERSION="0.8.0"andexport FOO_VERSION=1.2.3, TOMLversion = "1.2.3", JavaScriptconst VERSION = '1.2.3', Python__version__ = "1.2.3"; - a
versionmember 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());