pimalaya_cli/lib.rs
1#![cfg_attr(docsrs, feature(doc_cfg))]
2
3//! Shared building blocks for the Pimalaya command-line tools.
4//!
5//! This crate factors out the pieces every Pimalaya CLI would
6//! otherwise reimplement: argument parsing glue, output rendering,
7//! logging, interactive prompts and the account setup wizards. Each
8//! piece sits behind its own cargo feature, so a binary pulls in only
9//! what it uses.
10//!
11//! Unlike the io-* protocol libraries this crate is deliberately std:
12//! it exists to talk to a terminal, a filesystem and a human, so it
13//! never targets no_std.
14//!
15//! The clap module wires shared arguments and the completion and
16//! manual commands into a binary's parser. The printer and error
17//! modules render command output and failures to stdout, while the log
18//! module initializes the logger. The prompt, spinner and table
19//! modules handle interactive input and formatted output, and the
20//! validator module holds reusable value parsers. The wizard module
21//! collects account settings per protocol (IMAP, SMTP, JMAP, CalDAV,
22//! CardDAV), each protocol behind its matching feature. The build
23//! module exposes helpers for build scripts.
24
25#[cfg(feature = "build")]
26pub mod build;
27#[cfg(feature = "terminal")]
28pub mod clap;
29#[cfg(feature = "terminal")]
30pub mod error;
31#[cfg(feature = "terminal")]
32pub mod log;
33#[cfg(feature = "terminal")]
34pub mod printer;
35#[cfg(feature = "prompt")]
36pub mod prompt;
37#[cfg(feature = "spinner")]
38pub mod spinner;
39#[cfg(feature = "table")]
40pub mod table;
41#[cfg(feature = "prompt")]
42pub mod validator;
43#[cfg(feature = "wizard")]
44pub mod wizard;