[package] name = "pigg" version = "0.5.0" edition = "2021" description = "A Graphical User Interface for interacting with local and remote Raspberry Pi and Pi Pico Hardware" default-run = "piggui" authors = ["Andrew Mackenzie ", "Sundaram Krishnan "] license = "Apache-2.0" documentation = "https://github.com/andrewdavidmackenzie/pigg/README.md" repository = "https://github.com/andrewdavidmackenzie/pigg/" homepage = "https://github.com/andrewdavidmackenzie/pigg/" readme = "README.md" exclude = [".cargo", ".git", ".github", ".idea", "assets/", "configs/", "tests/", "wix/", ".gitignore", "codecov.yml", "Makefile"] rust-version = "1.80" [workspace] exclude = ["porky"] [package.metadata.wix] upgrade-guid = "7DCB054F-6CE0-4914-876E-AEA0C2E91328" path-guid = "17155407-8DA8-45BD-8C67-91FE4C7E99AA" license = false eula = false [[bin]] name = "piggui" path = "src/piggui.rs" [[bin]] name = "piglet" path = "src/piglet.rs" [features] default = ["iroh", "tcp", "usb-raw", "discovery"] iroh = ["iroh-net"] tcp = ["portpicker", "local-ip-address"] discovery = [] no_std = [] usb-raw = ["nusb"] [dependencies] # Optional Dependencies iroh-net = { version = "0.28.1", default-features = false, optional = true } portpicker = { version = "0.1.1", default-features = false, optional = true } local-ip-address = { version = "0.6.3", default-features = false, optional = true } nusb = { version = "0.1.11", default-features = false, optional = true } # use in piggui and piglet chrono = { version = "0.4", default-features = false, features = ["now", "serde"] } serde = { version = "1.0.215", default-features = false, features = ["derive"] } serde_arrays = { version = "0.1.0", default-features = false } # for config serialization to/from file serde_json = { version = "1.0.133", default-features = false, features = ["std"] } # for alloc/no_alloc over the wire serialization/deserialization postcard = { version = "1.0.10", features = ["alloc"] } heapless = { version = "0.8.0", default-features = false, features = ["serde"] } rand = { version = "0.8.5", default-features = false, features = ["std", "std_rng"] } tracing-subscriber = { version = "0.3.18", default-features = false, features = ["fmt", "env-filter"] } anyhow = { version = "1", default-features = false, features = ["std"] } futures = { version = "0.3.31", default-features = false } tokio = { version = "1.41.0", default-features = false, features = ["time", "rt", "macros"] } # used in piglet only log = { version = "0.4.22", default-features = false } # used by piggui in GUI only iced_aw = { version = "0.11.0", default-features = false, features = ["menu"] } iced_futures = { version = "0.13.2", default-features = false } plotters-iced = { version = "0.11.0", default-features = false } plotters = { version = "0.3", default-features = false, features = [ "chrono", "line_series", ] } tracing = { version = "0.1.40", default-features = false } once_cell = { version = "1.20.2", default-features = false } lyon_algorithms = { version = "1.0", default-features = false } async-std = "1.13.0" webbrowser = { version = "1.0.2", default-features = false } [target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies] tempfile = "3" serial_test = "3.1.1" [target.'cfg(not(target_arch = "wasm32"))'.dependencies] sysinfo = { version = "0.32.0", default-features = false, features = ["system"] } service-manager = { version = "0.7.1", default-features = false } rfd = "0.15.1" clap = { version = "4.5.21", default-features = false, features = ["std", "help", "error-context"] } # Raspberry Pi specific dependencies [target.'cfg(any(all(target_arch = "aarch64", target_os = "linux"), target_arch = "arm"))'.dependencies] # Use 'tiny-skia' renderer in iced iced = { version = "0.13.1", default-features = false, features = ["tokio", "tiny-skia"] } rppal = "0.19.0" libc = "0.2.164" # Non-Raspberry Pi - use 'wgpu' renderer in iced [target.'cfg(not(any( all(target_arch = "aarch64", target_os = "linux"), target_arch = "arm" )))'.dependencies] iced = { version = "0.13.1", default-features = false, features = ["tokio", "wgpu"] } [profile.release] opt-level = "s" lto = "fat" panic = "abort" strip = "debuginfo" # The profile that 'cargo dist' will build with [profile.dist] inherits = "release" [package.metadata.cargo-all-features] skip_optional_dependencies = true denylist = ["no_std"] [package.metadata.docs.rs] features = ["iroh", "tcp"] rustdoc-args = ["--cfg", "docsrs"]