[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"
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 }
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 }
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 = [
{ 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}}\"" },
{ file = "README.md", search = "multiio\\s*=\\s*\"[0-9]+\\.[0-9]+(\\.[0-9]+)?(-[0-9A-Za-z.-]+)?\"", replace = "multiio = \"{{version}}\"", min = 0 },
]