- Move ItemInfo to services/types.rs for sharing between client and server - Replace .expect() in compression_service with proper error handling - Add CoreError::PayloadTooLarge variant for semantic error handling - Export CoreError from lib.rs for library users - Unify get_item_meta_name/value to take &str instead of String - Extract item_path() helper in ItemService to reduce duplication - Add warning logs for silent errors in list.rs - Fix pre-existing borrow errors: tx moved in export handler, item_with_meta partial move in TryFrom implementation - Fix unused data_dir variables in server code
107 lines
2.6 KiB
Rust
107 lines
2.6 KiB
Rust
#![deny(clippy::all)]
|
|
#![deny(unsafe_code)]
|
|
#![allow(unused_imports)]
|
|
|
|
//! Keep library for managing temporary files with compression and metadata.
|
|
//!
|
|
//! This library provides core functionality for the Keep application, including
|
|
//! database operations, compression engines, item services, and plugin systems
|
|
//! for metadata and filtering. It supports CLI modes, server APIs, and plugin
|
|
//! registration via ctors.
|
|
//!
|
|
//! # Usage
|
|
//!
|
|
//! Add to Cargo.toml and use re-exported types:
|
|
//! ```toml
|
|
//! [dependencies]
|
|
//! keep = "0.1"
|
|
//! ```
|
|
//!
|
|
//! ```rust
|
|
//! # use keep::Args;
|
|
//! # use clap::Parser;
|
|
//! let args = Args::parse();
|
|
//! ```
|
|
//!
|
|
//! # Features
|
|
//!
|
|
//! - `server`: Enables Axum-based HTTP server.
|
|
//! - `gzip`, `lz4`: Built-in compression support.
|
|
//! - `magic`: File type detection via libmagic.
|
|
|
|
// Re-export modules for testing
|
|
pub mod args;
|
|
pub mod common;
|
|
pub mod compression_engine;
|
|
pub mod config;
|
|
pub mod db;
|
|
pub mod export_tar;
|
|
pub mod filter_plugin;
|
|
pub mod import_tar;
|
|
pub mod meta_plugin;
|
|
pub mod modes;
|
|
pub mod services;
|
|
|
|
#[cfg(feature = "client")]
|
|
pub mod client;
|
|
|
|
#[cfg(feature = "tokens")]
|
|
pub mod tokenizer;
|
|
|
|
// Re-export Args struct for library usage
|
|
pub use args::Args;
|
|
// Re-export PIPESIZE constant
|
|
pub use common::PIPESIZE;
|
|
pub use services::CoreError;
|
|
|
|
// Import all filter plugins to ensure they register themselves
|
|
#[allow(unused_imports)]
|
|
use filter_plugin::{grep, head, skip, strip_ansi, tail};
|
|
|
|
#[cfg(feature = "tokens")]
|
|
#[allow(unused_imports)]
|
|
use filter_plugin::tokens as token_filters;
|
|
|
|
use crate::meta_plugin::{
|
|
cwd, digest, env, exec, hostname, keep_pid, read_rate, read_time, shell, shell_pid, user,
|
|
};
|
|
|
|
#[cfg(feature = "magic")]
|
|
#[allow(unused_imports)]
|
|
use crate::meta_plugin::magic_file;
|
|
|
|
#[cfg(feature = "tokens")]
|
|
#[allow(unused_imports)]
|
|
use crate::meta_plugin::tokens;
|
|
|
|
#[cfg(feature = "infer")]
|
|
#[allow(unused_imports)]
|
|
use crate::meta_plugin::infer_plugin;
|
|
|
|
#[cfg(feature = "tree_magic_mini")]
|
|
#[allow(unused_imports)]
|
|
use crate::meta_plugin::tree_magic_mini;
|
|
|
|
/// Initializes plugins at library load time.
|
|
///
|
|
/// Plugin registration happens automatically via `#[ctor]` constructors
|
|
/// when each plugin module is loaded. The explicit module imports in
|
|
/// `lib.rs` guarantee this happens at library initialization time.
|
|
///
|
|
/// This function exists as a public API entry point for callers that
|
|
/// want to explicitly ensure plugins are ready. It intentionally does
|
|
/// no additional work.
|
|
///
|
|
/// # Examples
|
|
///
|
|
/// ```
|
|
/// keep::init_plugins();
|
|
/// ```
|
|
pub fn init_plugins() {
|
|
// Plugins self-register via #[ctor] on module load.
|
|
// The use-statements in lib.rs guarantee module inclusion.
|
|
}
|
|
|
|
#[cfg(test)]
|
|
mod tests;
|