Files
ncspot/Cargo.toml
Thomas Frans 9c3c7f7c87 chore: Update to edition 2024
* chore(deps): `cargo update`

* chore: update to Rust edition 2024 and apply fixes

Update the Rust edition and apply changes required in the new edition.
Also update the Cargo manifests to reflect the edition change, and
ensure changes automatically apply to workspace members in the future.

* chore: format all code with `rustfmt`

The new Rust edition comes with some new formatting defaults, which need
to be applied since the edition was increased.

* style: change suggested matches back to `if let`

There has been a breaking change in Rust edition 2024 that changed the
behavior of `if let` statements slightly. The new behavior is more in
line with what users would expect, but could lead to problems in
existing code. The automatic edition update therefore changed such `if
let` statements to match statements instead. That lead to deeply nested
code which was hard to reason about.

This changes most of them back to regular `if let` chains, as the new
behavior shouldn't cause problems for these cases.

---------

Co-authored-by: Henrik Friedrichsen <henrik@affekt.org>
2025-03-11 09:06:39 +00:00

127 lines
3.6 KiB
TOML

[package]
name = "ncspot"
readme = "README.md"
version = "1.2.2"
description = "ncurses Spotify client written in Rust using librespot, inspired by ncmpc and the likes."
exclude = ["images/**"]
keywords = ["spotify", "ncurses", "librespot", "terminal"]
authors.workspace = true
edition.workspace = true
license.workspace = true
repository.workspace = true
[badges]
maintenance = {status = "actively-developed"}
[workspace]
members = [
".",
"xtask"
]
[workspace.package]
authors = ["Henrik Friedrichsen <henrik@affekt.org>"]
edition = "2024"
license = "BSD-2-Clause"
repository = "https://github.com/hrkfdn/ncspot"
[workspace.lints.clippy]
enum_glob_use = "warn"
use_self = "deny"
multiple_inherent_impl = "deny"
[lints]
workspace = true
[profile.release]
lto = true
codegen-units = 1
[profile.optimized]
inherits = "release"
lto = false
codegen-units = 16
[dependencies]
chrono = "0.4"
clap = "4.5.31"
arboard = {version = "3.4", optional = true}
crossbeam-channel = "0.5"
zbus = {version = "5.5.0", default-features = false, features = ["tokio"], optional = true}
fern = "0.7"
futures = "0.3"
ioctl-rs = {version = "0.2", optional = true}
libc = "0.2.170"
librespot-core = "0.6.0"
librespot-oauth = "0.6.0"
librespot-playback = "0.6.0"
librespot-protocol = "0.6.0"
log = "0.4.26"
pancurses = {version = "0.17.0", optional = true}
parse_duration = "2.1.1"
platform-dirs = "0.3.0"
rand = "0.9"
regex = "1"
reqwest = {version = "0.12", features = ["blocking", "json"]}
serde = "1.0"
serde_cbor = "0.11.2"
serde_json = "1.0"
strum = "0.27"
strum_macros = "0.27"
tokio = {version = "1", features = ["rt-multi-thread", "sync", "time", "net"]}
tokio-util = {version = "0.7.13", features = ["codec"]}
tokio-stream = {version = "0.1.17", features = ["sync"]}
toml = "0.8"
unicode-width = "0.2.0"
url = "2.5"
[target.'cfg(unix)'.dependencies]
signal-hook = "0.3.0"
[dependencies.rspotify]
default-features = false
features = ["client-ureq", "ureq-native-tls"]
version = "0.14.0"
[dependencies.cursive]
default-features = false
version = "0.21.1"
[dependencies.notify-rust]
default-features = false
version = "4"
# Use zbus, which we already depend on, instead of dbus.
features = ["z"]
optional = true
[features]
alsa_backend = ["librespot-playback/alsa-backend"]
cover = ["ioctl-rs"] # Support displaying the album cover
default = ["share_clipboard", "pulseaudio_backend", "mpris", "notify", "crossterm_backend"]
mpris = ["zbus"] # Allow ncspot to be controlled via MPRIS API
ncurses_backend = ["cursive/ncurses-backend"]
notify = ["notify-rust"] # Show what's playing via a notification
crossterm_backend = ["cursive/crossterm-backend"]
pancurses_backend = ["cursive/pancurses-backend", "pancurses/win32"]
portaudio_backend = ["librespot-playback/portaudio-backend"]
pulseaudio_backend = ["librespot-playback/pulseaudio-backend"]
rodio_backend = ["librespot-playback/rodio-backend"]
share_clipboard = ["arboard", "arboard/wayland-data-control"] # Share a link to the system clipboard
share_selection = ["arboard", "arboard/wayland-data-control"] # Use the primary selection for sharing - linux and bsd only
termion_backend = ["cursive/termion-backend"]
[package.metadata.deb]
assets = [
["target/release/ncspot", "usr/bin/", "755"],
["misc/ncspot.desktop", "usr/share/applications/", "644"],
["images/logo.svg", "usr/share/icons/hicolor/scalable/apps/ncspot.svg", "644"],
["README.md", "usr/share/doc/ncspot/README.md", "644"],
]
depends = "$auto"
extended-description = """\
ncurses Spotify client written in Rust using librespot. \
It is heavily inspired by ncurses MPD clients, such as ncmpc."""
license-file = ["LICENSE"]
priority = "optional"
section = "sound"