multiio 0.2.3

A unified I/O orchestration library for CLI/server applications
Documentation
[package]
name = "multiio"
authors = ["unic <yuniqueunic@gmail.com>"]
version = "0.2.3"
edition = "2024"
rust-version = "1.86"
description = "A unified I/O orchestration library for CLI/server applications"
license = "MIT OR Apache-2.0"
readme = "README.md"
documentation = "https://docs.rs/multiio"
keywords = ["io", "cli", "multi-input", "multi-output", "format"]
categories = ["command-line-interface", "encoding", "parser-implementations"]
exclude = [
    "e2e/**",
    ".github/**",
    ".vscode/**",
    ".pytest_cache/**",
    "target/**",
    "Cargo.lock",
    ".release-plz.toml",
]

[features]
default = ["plaintext"]
json = ["serde_json"]
yaml = ["serde_yaml"]
toml = ["dep:toml"]
ini = ["dep:serde_ini"]
csv = ["dep:csv", "json"]
xml = ["dep:quick-xml"]
plaintext = []
custom = ["json"]

async = ["tokio", "async-trait", "futures"]
miette = ["dep:miette"]
sarge = ["dep:sarge"]
full = [
    "json",
    "yaml",
    "toml",
    "ini",
    "csv",
    "xml",
    "plaintext",
    "custom",
    "async",
    "miette",
]

[dependencies]
serde = { version = "1.0", features = ["derive"] }
thiserror = "2"
paste = "1.0"

# Format-specific dependencies (optional)
serde_json = { version = "1.0", optional = true }
serde_yaml = { version = "0.9", optional = true }
toml = { version = "0.9", optional = true }
serde_ini = { version = "0.2", optional = true }
csv = { version = "1.4", optional = true }
quick-xml = { version = "0.38", features = ["serialize"], optional = true }

# Async support (optional)
tokio = { version = "1", features = [
    "io-util",
    "io-std",
    "fs",
    "rt",
], optional = true }
async-trait = { version = "0.1", optional = true }
futures = { version = "0.3", optional = true }

# Error reporting (optional)
miette = { version = "7", optional = true }
sarge = { version = "9", optional = true }

[dev-dependencies]
tokio = { version = "1", features = ["rt-multi-thread", "macros"] }
tempfile = "3"
criterion = { version = "0.8", features = ["html_reports"] }

[[bench]]
name = "engine_read_write"
harness = false

[[bin]]
name = "multiio_pipeline"
path = "src/bin/multiio_pipeline.rs"
required-features = ["json", "yaml"]

[[bin]]
name = "multiio_async_pipeline"
path = "src/bin/multiio_async_pipeline.rs"
required-features = ["json", "yaml", "async"]

[[bin]]
name = "multiio_manual"
path = "src/bin/multiio_manual.rs"
required-features = ["json"]

[[bin]]
name = "multiio_records_demo"
path = "src/bin/multiio_records_demo.rs"
required-features = ["csv"]

[[bin]]
name = "multiio_sarge"
path = "src/bin/multiio_sarge.rs"
required-features = ["json", "sarge"]

[[example]]
name = "basic_sync"
path = "examples/basic_sync.rs"
required-features = ["json"]

[[example]]
name = "basic_async"
path = "examples/basic_async.rs"
required-features = ["json", "async"]

[[example]]
name = "from_pipeline"
path = "examples/from_pipeline.rs"
required-features = ["json", "yaml"]

[[example]]
name = "in_memory"
path = "examples/in_memory.rs"
required-features = ["json"]

[[example]]
name = "custom_format"
path = "examples/custom_format.rs"
required-features = ["custom"]

[package.metadata.release]
pre-release-hook = ["bash", "scripts/update_readme_release_metrics.sh"]
pre-release-replacements = [
    # Update inline-table dependency snippets like:
    # multiio = { version = "0.2", features = ["custom"] }
    { file = "README.md", search = "multiio\\s*=\\s*\\{\\s*version\\s*=\\s*\"[0-9]+\\.[0-9]+(\\.[0-9]+)?(-[0-9A-Za-z.-]+)?\"", replace = "multiio = { version = \"{{version}}\"" },
    # Update plain dependency snippets like:
    # multiio = "0.2"
    { file = "README.md", search = "multiio\\s*=\\s*\"[0-9]+\\.[0-9]+(\\.[0-9]+)?(-[0-9A-Za-z.-]+)?\"", replace = "multiio = \"{{version}}\"", min = 0 },
]