quanttide-devops
QuantTide DevOps toolkit — 契约驱动的 DevOps 治理工具库。
安装
[dependencies]
quanttide-devops = "0.1"
快速开始
契约加载
use std::path::Path;
use quanttide_devops::contract::Contract;
let c = Contract::load(Path::new(".")).unwrap();
for scope in &c.scopes {
println!("{}: {} ({:?})", scope.name, scope.dir, scope.language);
}
版本号工具
use quanttide_devops::contract::{
validate_version, normalize_version, read_all_config_versions,
};
assert!(validate_version("v1.2.3"));
assert!(validate_version("cli/v0.5.0-rc.1"));
assert!(!validate_version("1.2.3"));
assert_eq!(normalize_version("cli/v0.5.0"), "0.5.0");
let versions = read_all_config_versions(Path::new("."));
for (file, version) in &versions {
println!("{}: {:?}", file, version);
}
Git tag 版本检查
use std::path::Path;
use quanttide_devops::source::version::{latest_tag, verify_version};
use quanttide_devops::contract::Scope;
let tag = latest_tag(Path::new("."), "cli").unwrap();
println!("latest: {:?}", tag);
let scope = Scope {
name: "cli".into(),
dir: "src/cli".into(),
..Default::default()
};
let status = verify_version(Path::new("."), &scope).unwrap();
println!("consistent: {}", status.consistent);
CHANGELOG 解析
use std::path::Path;
use quanttide_devops::source::changelog::Changelog;
let cl = Changelog::from_path(Path::new("CHANGELOG.md")).unwrap();
println!("latest: {:?}", cl.latest_version());
println!("notes: {:?}", cl.release_notes("0.1.5"));
ROADMAP 进度统计
use std::path::Path;
use quanttide_devops::source::roadmap::Roadmap;
let rm = Roadmap::from_path(Path::new("ROADMAP.md")).unwrap();
for v in rm.versions() {
println!("{} ({}): {}/{}", v.version, v.status, v.done, v.total);
}
println!("total: {}/{}", rm.total_done(), rm.total_all());
let issues = rm.validate("rust");
for issue in &issues {
println!("line {}: {}", issue.line, issue.message);
}
许可
Apache-2.0