everything-plugin 0.4.1

Rust binding for Everything's plugin SDK
Documentation
[package]

name = "everything-plugin"

version = "0.4.1"

edition = "2024"

description = "Rust binding for Everything's plugin SDK"

authors.workspace = true

homepage.workspace = true

repository.workspace = true

license.workspace = true

keywords.workspace = true



[features]

default = ["tracing", "serde", "winio"]



## Log with [tracing](https://github.com/tokio-rs/tracing)

## 

## TODO: Disable on release?

tracing = ["dep:tracing", "dep:tracing-subscriber", "dep:tracing-panic", "dep:anstream"]

## Non-blocking logging

tracing-appender = ["dep:tracing-appender"]



## Load and save config with [Serde](https://github.com/serde-rs/serde)

serde = ["dep:serde", "dep:serde_json"]



ui = ["dep:futures-channel", "dep:futures-util"]



## Make options pages GUI using [Winio](https://github.com/compio-rs/winio) in MVU (Elm) architecture

winio = ["ui", "dep:winio"]

## Winio >=0.7.2,<0.8 (v0.7.2 has breaking changes)

winio-07 = ["winio"]

## Enable dark mode support in Winio

## 

## 1214 -> 1233 KiB

##

## TODO: Affect Everything labels, limit to thread local?

winio-darkmode = ["winio/win32-dark-mode"]



## Internationalization with [rust-i18n](https://github.com/longbridge/rust-i18n).

##

## The locale name is the same as used by Windows, e.g. `en-US`. See [OS Language Values-Codes](https://www.autoitscript.com/autoit3/docs/appendix/OSLangCodes.htm) for details.

rust-i18n = ["dep:rust-i18n"]



doc = ["dep:document-features"]



[dependencies]

anstream = { version = "0.6", optional = true }

bon = "3"

document-features = { version = "0.2", optional = true }

everything-ipc = { version = "0.1", path = "../everything-ipc" }

futures-channel = { version = "0.3", optional = true }

futures-util = { version = "0.3", optional = true }

rust-i18n = { version = "3", optional = true }

serde = { version = "1", features = ["derive"], optional = true }

serde_json = { version = "1", optional = true }

tracing = { version = "0.1", optional = true }

tracing-appender = { version = "0.2", optional = true }

tracing-panic = { version = "0.1.2", optional = true }

tracing-subscriber = { version = "0.3", optional = true }

windows-sys = { version = "0.59", features = [

    "Win32_Globalization",

    "Win32_System_SystemServices",

    "Win32_UI_WindowsAndMessaging"

] }



[dependencies.winio]

# v0.7.2 has breaking changes

version = ">=0.7.2,<0.12"

default-features = false

features = ["win32"]

optional = true

# git = "https://github.com/compio-rs/winio"

# rev = "d57fa507ba27a4dc71887f202ec4eb594f5acb0e"



[dev-dependencies]

everything-plugin = { features = ["rust-i18n"], path = "." }



[[example]]

name = "test"

crate-type = ["cdylib"]



[[example]]

name = "basic"

crate-type = ["cdylib"]



[[example]]

name = "options"

crate-type = ["cdylib"]



[package.metadata.docs.rs]

targets = ["x86_64-pc-windows-msvc"]

# We want to document all features.

# But winio-darkmode can't be cross-compiled.

# all-features = true

features = ["tracing", "serde", "ui", "winio", "rust-i18n", "doc"]

# Since this crate's feature setup is pretty complicated, it is worth opting

# into a nightly unstable option to show the features that need to be enabled

# for public API items. To do that, we set 'docsrs', and when that's enabled,

# we enable the 'doc_auto_cfg' feature.

#

# To test this locally, run:

# ```

# RUSTDOCFLAGS="--cfg docsrs" cargo +nightly doc --features tracing,serde,ui,winio,rust-i18n,doc

# $env:RUSTDOCFLAGS="--cfg docsrs"; cargo +nightly doc --features tracing,serde,ui,winio,rust-i18n,doc

# ```

rustdoc-args = ["--cfg", "docsrs"]