3 个不稳定版本
0.8.3 | 2024 年 6 月 3 日 |
---|---|
0.8.1 | 2024 年 6 月 2 日 |
0.7.1 | 2023 年 12 月 5 日 |
239 在 文件系统 中
58KB
1K SLoC
OSH 目录标准 - Rust 库
- OSH: Open Source Hardware
帮助人类和机器处理 OSH 目录标准 的代码。
这包括两个部分
osh_dir_std
- 一个 (Rust) 库,用于将规范解析为易于使用的结构,并附带实用工具osh-dir-std
- 一个 CLI 工具,帮助检查给定项目的文件列表是否与一个或多个规范相符。
注意
此工具仅检查文件和目录的路径是否与一组预设(即“标准”)相匹配。它不会以任何方式检查任何文件的任何内容。
示例用法
CLI
安装
从源代码
获取和编译
cargo install osh-dir-std
本地源
cargo install --path bin
使用方法
该工具期望一个由换行符分隔的文件(和可选的目录)列表,这些文件来自项目,要么在 stdin
上,要么作为第一个参数提供的文件中。这个列表可能来自 git(或任何其他 版本控制系统(VCS)),文件系统本身,ZIP 文件,甚至是列出文件的网站。
以下是一些如何在不同场景下列出文件以及如何评估项目是否遵循已知目录标准的示例
git:
git ls-files --recurse-submodules | sed -e 's/^"\(.*\)"$/\1/' | osh-dir-std rate
SVN:
svn ls | osh-dir-std rate
hg status --all | osh-dir-std rate
pijul list | osh-dir-std rate
文件系统
ls -r1 | osh-dir-std rate
样本输出
[
{
"name": "unixish",
"factor": 0.62724684
},
]
A 因子 1.0
表示项目的文件和目录结构完全符合相应的标准。 unixish
是默认目录标准的名称。
库
设置
Cargo.toml:
[dependencies]
osh_dir_std = "0.7.2"
代码
use osh_dir_std::{self, format::Rec};
fn find_rec(std: &str, record_path: &str) -> Result<&'static Rec<'static>, String> {
for rec in &osh_dir_std::data::STDS.get(std).unwrap().records {
if rec.path == record_path {
return Ok(rec);
}
}
Err(format!(
"Failed to find record with path '{record_path}' in the '{std}' dir standard"
))
}
/// Checks whether the dir std "unixish" contains the record "res/",
/// and whether that record is a _fixed_ one. See [the definition](
/// https://github.com/hoijui/osh-dir-std/blob/main/definition_format.csv)
/// for an explanation of what _fixed_ means.
#[test]
fn unixish_res_fixed() -> Result<(), Error> {
let rec = find_rec("unixish", "res/")?;
assert!(rec.fixed);
Ok(())
}
相关项目
osh
-tool - 将 OSH 项目与一系列预定义的检查进行比对,以尝试评估其整体的机器可读性和开放性。
(也内部使用此工具)
资金来源
本项目由欧洲区域发展基金(ERDF)在《INTERFACER 项目》的背景下资助,从 2022 年 11 月(项目开始)至 2023 年 3 月。
依赖关系
约 4-6MB
约 96K SLoC