https://github.com/gernest/semver
https://github.com/gernest/semver
semver zig ziglang
Last synced: about 1 year ago
JSON representation
- Host: GitHub
- URL: https://github.com/gernest/semver
- Owner: gernest
- License: mit
- Created: 2018-11-08T14:24:00.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2020-02-09T18:21:29.000Z (over 6 years ago)
- Last Synced: 2025-04-08T19:47:56.059Z (about 1 year ago)
- Topics: semver, zig, ziglang
- Size: 43.9 KB
- Stars: 4
- Watchers: 3
- Forks: 1
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# semver
[](https://travis-ci.org/gernest/semver)
semantic versioning for zig. This allows you to parse and compare semantic version strings.
## usage
```
const semver = @import("src/main.zig");
const warn = @import("std").debug.warn;
test "parse version string to a struct" {
const version = try semver.parse("v1.2.3-pre+meta");
warn("\n{}\n", version);
}
test "compare two version strings" {
const versionSample = struct {
x: []const u8,
y: []const u8,
};
const version_list = []versionSample{
versionSample{ .x = "1.2.3", .y = "3.2.1" },
// you can prefix the version string with v, it is supported.
versionSample{ .x = "v5.2.3", .y = "v3.2.1" },
};
warn("\n");
for (version_list) |v| {
const cmp = try semver.compare(v.x, v.y);
switch (cmp) {
semver.Comparison.LessThan => {
warn("{} < {}\n", v.x, v.y);
},
semver.Comparison.Equal => {
warn("{} == {}\n", v.x, v.y);
},
semver.Comparison.GreaterThan => {
warn("{} > {}\n", v.x, v.y);
},
else => unreachable,
}
}
}
// $ zig test example.zig
// Test 1/2 parse version string to a struct...
// Version{ .major = 1, .minor = 2, .patch = 3, .pre_release = pre, .build = meta }
// OK
// Test 2/2 compare two version strings...
// 1.2.3 < 3.2.1
// v5.2.3 > v3.2.1
// OK
// All tests passed.
```