Skip to main content

sim_table_fs/
lib.rs

1#![forbid(unsafe_code)]
2#![allow(deprecated)]
3#![deny(missing_docs)]
4//! Filesystem-backed table store for SIM.
5//!
6//! This crate exposes a host directory as a SIM table: each table key maps to a
7//! file, and nested tables map to subdirectories. Reads are gated by `fs/read`;
8//! writes, deletes, and directory mutation are gated by `fs/write`.
9//! Compatibility `table.fs.*` aliases are accepted by the gates. Values are encoded through
10//! the configured codec. With the optional format features enabled, recognized
11//! extensions (for example `.mid`, `.music`, `.tone`, `.scl`, `.ly`) round-trip
12//! through their domain shapes. `FsDir::edit` patches string leaves with
13//! `fs/read`, `fs/write`, and `edit`, then writes by same-directory temp file
14//! and rename.
15//! `FsDir::find_grep` and `FsDir::find_glob` search the directory read-only
16//! with `fs/read` and `find`.
17
18pub mod capabilities;
19mod citizen;
20mod dir_edit;
21mod find;
22mod fs_dir;
23mod roadmap11;
24
25pub use capabilities::{
26    table_fs_capability, table_fs_edit_capability, table_fs_find_capability,
27    table_fs_mkdir_capability, table_fs_read_capability, table_fs_rmdir_capability,
28    table_fs_write_capability,
29};
30pub use citizen::{FsDirDescriptor, fs_dir_class_symbol};
31pub use find::{FindGlobResult, FindGrepResult, FindMatch};
32pub use fs_dir::{FsDir, install_fs_dir_lib};
33
34/// Cookbook recipes for this lib, embedded at build time.
35pub static RECIPES: sim_cookbook::EmbeddedDir =
36    include!(concat!(env!("OUT_DIR"), "/cookbook_recipes.rs"));
37
38#[cfg(test)]
39mod tests;