[package]
edition = "2024"
rust-version = "1.85"
name = "shun"
version = "0.6.0"
authors = ["langyo <langyo.china@gmail.com>"]
build = false
exclude = [
"docs/",
"scripts/",
".github/",
"assets/",
"justfile",
"rust-toolchain.toml",
]
publish = true
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Flow-driven payload delivery runtime — installers, flashers, and portable modes"
readme = "README.md"
keywords = [
"installer",
"packager",
"portable",
"deploy",
"flasher",
]
categories = ["development-tools"]
license-file = "LICENSE"
repository = "https://github.com/celestia-island/shun"
resolver = "2"
[features]
cli = [
"dep:clap",
"dep:image",
"online",
]
default = [
"online",
"cli",
]
online = ["dep:ureq"]
python-probe = ["dep:pyo3"]
[lib]
name = "shun"
path = "src/lib.rs"
[[bin]]
name = "shun"
path = "src/bin/shun.rs"
required-features = ["cli"]
[[example]]
name = "demo_flash"
path = "examples/demo_flash.rs"
[[example]]
name = "demo_install"
path = "examples/demo_install.rs"
[[example]]
name = "pyembed_runner"
path = "examples/pyembed_runner.rs"
required-features = ["python-probe"]
[[test]]
name = "config_roundtrip"
path = "tests/config_roundtrip.rs"
[[test]]
name = "install_local"
path = "tests/install_local.rs"
[[test]]
name = "install_portable"
path = "tests/install_portable.rs"
[[test]]
name = "launch_after_install"
path = "tests/launch_after_install.rs"
[[test]]
name = "msix_pack"
path = "tests/msix_pack.rs"
[[test]]
name = "payload"
path = "tests/payload.rs"
[[test]]
name = "payload_online"
path = "tests/payload_online.rs"
[[test]]
name = "registration_shortcuts"
path = "tests/registration_shortcuts.rs"
[[test]]
name = "scripting_duckscript"
path = "tests/scripting_duckscript.rs"
[[test]]
name = "scripting_python"
path = "tests/scripting_python.rs"
[[test]]
name = "update_watch"
path = "tests/update_watch.rs"
[dependencies.clap]
version = "^4"
features = ["derive"]
optional = true
[dependencies.duckscript]
version = "0.10.0"
[dependencies.duckscriptsdk]
version = "0.11.1"
[dependencies.image]
version = "^0.25"
features = [
"ico",
"png",
"webp",
]
optional = true
default-features = false
[dependencies.pyo3]
version = "^0.23"
features = ["auto-initialize"]
optional = true
[dependencies.serde]
version = "^1"
features = ["derive"]
[dependencies.serde_json]
version = "^1"
[dependencies.sha2]
version = "^0.10"
[dependencies.tar]
version = "^0.4"
[dependencies.thiserror]
version = "^2"
[dependencies.toml]
version = "^0.9"
[dependencies.ureq]
version = "^2"
features = ["json"]
optional = true
[dependencies.walkdir]
version = "^2"
[dependencies.zstd]
version = "^0.13"
features = ["zstdmt"]
[dev-dependencies.tempfile]
version = "^3"
[target."cfg(unix)".dependencies.libc]
version = "^0.2"
[target."cfg(windows)".dependencies.mslnk]
version = "^0.1.8"
[target."cfg(windows)".dependencies.windows]
version = "^0.61"
features = [
"Win32_System_Com",
"Win32_System_Com_StructuredStorage",
"Win32_System_Variant",
"Win32_UI_Shell",
"Win32_UI_Shell_PropertiesSystem",
"Win32_Storage_EnhancedStorage",
]
[target."cfg(windows)".dependencies.windows-sys]
version = "0.59"
features = [
"Win32_Storage_FileSystem",
"Win32_System_Console",
"Win32_System_StationsAndDesktops",
"Win32_UI_Shell",
"Win32_UI_WindowsAndMessaging",
"Win32_System_Com",
"Win32_System_Threading",
"Win32_Security",
"Win32_Foundation",
]
[target."cfg(windows)".dependencies.winreg]
version = "^0.56"
[lints.clippy]
all = "deny"
[lints.rust]
warnings = "deny"
[profile.release]
opt-level = 3
lto = "thin"