Crates.io | osh_dir_std |
lib.rs | osh_dir_std |
version | 0.8.3 |
source | src |
created_at | 2023-12-05 17:47:20.918106 |
updated_at | 2024-06-03 11:43:35.303509 |
description | Helps humans and machines deal with the
*OSH directory standard*:
|
homepage | https://github.com/hoijui/osh-dir-std-rs |
repository | https://github.com/hoijui/osh-dir-std-rs |
max_upload_size | |
id | 1058892 |
size | 196,107 |
Code that helps humans and machines deal with the OSH directory standard.
This consists of two parts:
osh_dir_std
- a (Rust) library to parse the specification(s)
into easily usable structures & accompanying utilitiesosh-dir-std
- a CLI tool that helps checking a given projects file listing
against one or multiple specifications.NOTE
This only checks the paths of files and directories
against a set of presets (aka "standards").
It does not check the content of any files in any way.
cargo install osh-dir-std
cargo install --path bin
The tool expects a new-line separated listing of files
(and optionally directories) of the project,
either on stdin
,
or in a file given as the first argument.
This list might come from git
(or any other version control system (VCS) used),
the file-system directly,
a ZIP file or even a web-site that lists the files.
A few examples of how to list files in different scenarios, to rate the project against the known directory standards:
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
file-system:
ls -r1 | osh-dir-std rate
sample output:
[
{
"name": "unixish",
"factor": 0.62724684
},
]
A factor of 1.0
would mean that the projects file- and directory structure
adheres 100% to the respective standard.
unixish
is the name of the default directory standard.
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 -
Checks an OSH project against a set of predefined checks,
to try to assess its overall machine-readability and openness. This project was funded by the European Regional Development Fund (ERDF) in the context of the INTERFACER Project, from November 2022 (project start) until March 2023.