NAME
Versioning::Scheme::Semantic - Semantic versioning
VERSION
This document describes version 0.011 of Versioning::Scheme::Semantic (from Perl distribution Versioning-Scheme), released on 2020-10-01.
SYNOPSIS
# checking validity
Versioning::Scheme::Semantic->is_valid_version(
'0.0.1'
);
# 1
Versioning::Scheme::Semantic->is_valid_version(
'0.01.1'
);
# 0 (zero prefix not allowed)
Versioning::Scheme::Semantic->is_valid_version(
'0.1.1.0'
);
# 0 (only X.Y.Z permitted)
Versioning::Scheme::Semantic->is_valid_version(
'0.1.1-beta1+foobar'
);
# 1 (pre-release identifier and metada allowed)
# parsing
$parsed
= Versioning::Scheme::Semantic->parse_version(
'0.1'
);
# => undef
$parsed
= Versioning::Scheme::Semantic->parse_version(
'0.1.2-beta1+foobar'
);
# => {major=>0, minor=>1, patch=>2, prerelease=>'beta1', metadata=>'foobar'}
# normalizing (currently does nothing other than checking for validity)
Versioning::Scheme::Semantic->normalize_version(
'1.2.0'
);
# => '1.2.0'
# comparing
Versioning::Scheme::Semantic->cmp_version(
'1.2.3'
,
'1.2.3'
);
# 0
Versioning::Scheme::Semantic->cmp_version(
'1.2.3'
,
'1.2.12'
);
# -1
Versioning::Scheme::Semantic->cmp_version(
'1.3.0'
,
'1.2.12'
);
# 1
Versioning::Scheme::Semantic->cmp_version(
'1.2.3'
,
'1.2.3-beta1'
);
# -1
Versioning::Scheme::Semantic->cmp_version(
'1.2.3-beta1'
,
'1.2.3-beta1'
);
# 0
Versioning::Scheme::Semantic->cmp_version(
'1.2.3-beta1'
,
'1.2.3-beta2'
);
# -1
# bumping
Versioning::Scheme::Semantic->bump_version(
'1.2.3'
);
# => '1.2.4'
Versioning::Scheme::Semantic->bump_version(
'1.2.3'
, {
num
=>2});
# => '1.2.5'
Versioning::Scheme::Semantic->bump_version(
'1.2.3'
, {
num
=>-1});
# => '1.2.2'
Versioning::Scheme::Semantic->bump_version(
'1.2.3'
, {
part
=>-2});
# => '1.3.0'
Versioning::Scheme::Semantic->bump_version(
'1.2.3'
, {
part
=>0});
# => '2.0.0'
Versioning::Scheme::Semantic->bump_version(
'1.2.3'
, {
part
=>-2,
reset_smaller
=>0});
# => '1.3.3'
You can also mix this role into your class.
DESCRIPTION
This role implements the semantic versioning scheme as described in [1]. Version number comprises of three non-negative integers X.Y.Z where zero-prefix is not allowed.
This scheme is not the same as the Perl versioning scheme implemented by version, as the latter has some Perl-specific peculiarities.
Normalizing basically does nothing except checking the validity.
Comparing: Each part is compared numerically from the biggest (leftmost) part.
Bumping: By default the smallest (rightmost) part is increased by 1. You can specify options: num
, part
, reset_smaller
like spacified in Role::Versioning::Scheme.
METHODS
versioning_scheme
is_valid_version
parse_version
normalize_version
cmp_version
bump_version
HOMEPAGE
Please visit the project's homepage at https://metacpan.org/release/Versioning-Scheme.
SOURCE
Source repository is at https://github.com/perlancar/perl-Versioning-Scheme.
BUGS
Please report any bugs or feature requests on the bugtracker website https://rt.cpan.org/Public/Dist/Display.html?Name=Versioning-Scheme
When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature.
SEE ALSO
AUTHOR
perlancar <perlancar@cpan.org>
COPYRIGHT AND LICENSE
This software is copyright (c) 2020, 2019, 2018 by perlancar@cpan.org.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.