3 个不稳定版本

0.8.3 2024 年 6 月 3 日
0.8.1 2024 年 6 月 2 日
0.7.1 2023 年 12 月 5 日

239文件系统


用于 osh_dir_std_cli

AGPL-3.0-or-later

58KB
1K SLoC

OSH 目录标准 - Rust 库

License: AGPL-3.0-or-later REUSE status Repo Package Releases Documentation Releases Dependency Status Build Status

In cooperation with FabCity Hamburg In cooperation with Open Source Ecology Germany

  • OSH: Open Source Hardware

帮助人类和机器处理 OSH 目录标准 的代码。

这包括两个部分

  1. osh_dir_std - 一个 (Rust) 库,用于将规范解析为易于使用的结构,并附带实用工具
  2. 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

Mercurial (hg):

hg status --all | osh-dir-std rate

pijul:

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 月。

Logo of the EU ERDF program

依赖关系

约 4-6MB
约 96K SLoC