Semantic Versioning — подход к установке версии програмного продукта. Подробнее о методологоии можно прочитать на официальном сайте semver.org.
Реализуйте класс VersionManager
, позволяющий управлять версией.
Изначально конструктор VersionManager
принимает начальное значение версии в виде строки. Гарантируется, что версия корректная, например 17.2.5
. Если конструктор вызывается без аргумента, устанавливается начальная версия 0.1.0
.
Класс должен поддерживать следующие методы. Все методы, кроме release
, должны быть chainable, подробнее в примере ниже.
"Cannot rollback!"
, если некуда откатывать."{MAJOR}.{MINOR}.{PATCH}"
.Чейнинг — мы можем цеплять вызовы друг к другу.
const vm = new VersionManager("2.0.3"); console.log( vm .major() // "3.0.0" .minor() // "3.1.0" .minor() // "3.2.0" .minor() // "3.3.0" .patch() // "3.3.1" .release() );
Ролбэк откатывает к предыдущей версии. Возможен множественный откат.
const vm = new VersionManager("1.2.3"); console.log( vm .minor() // "1.3.0" .major() // "2.0.0" .patch() // "2.0.1" .rollback() // "2.0.0" .rollback() // "1.3.0" .release() );