The package name has never matched the repository it lives in (gitea.awkawb.cloud/awkawb/invoiceninja-sdk, mirrored to github.com/awkawb1/invoiceninja-sdk) — both pointed at `invoiceninja-sdk` while `Cargo.toml` declared `invoiceninjars`. Lines everything up on the name the repo has always used. Cargo derives the crate's Rust identifier from the package name by lowercasing hyphens to underscores, so every `use invoiceninjars::...` becomes `use invoiceninja_sdk::...` — in doctests across `src/`, the four examples, all four integration test files, and `README.md`. `Cargo.lock`'s own self-entry picked up the new name on the next `cargo check`, which is also when the rename gets its real check: every doctest and every test file has to resolve the new path to compile at all, not just the ones a grep happens to catch. `flake.nix`'s `pname` and description follow, so `nix build` produces `invoiceninja-sdk-0.1.0.drv` rather than a name that no longer matches anything. `GOALS.md`'s two mentions — the hypothetical CLI's name and the `cargo install` example — follow too, for the same reason. Verified clean on both the dev toolchain and the 1.88 MSRV shell: full test suite (209 tests), clippy, fmt, and `nix build`/`nix flake check`. Not yet published to crates.io (checked: the name 404s there), so this lands before the old name was ever claimed — no one's `Cargo.toml` breaks today, but it's recorded as a Changed entry since `GOALS.md` asks for breaking changes to be legible in the changelog rather than discovered at compile time, and the crate is reachable as a git dependency regardless of crates.io status. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
33 lines
1.3 KiB
TOML
33 lines
1.3 KiB
TOML
[package]
|
|
name = "invoiceninja-sdk"
|
|
version = "0.1.0"
|
|
edition = "2021"
|
|
# Set by the dependency graph rather than by this crate's own code: reqwest
|
|
# pulls in url -> idna -> idna_adapter -> icu_*, and the icu crates require
|
|
# 1.88. Verified by running the test suite against it; see the `msrv`
|
|
# devShell in flake.nix.
|
|
rust-version = "1.88"
|
|
description = "An async Rust client for the Invoice Ninja v5 API"
|
|
license = "MIT"
|
|
repository = "https://github.com/awkawb1/invoiceninja-sdk"
|
|
|
|
[dependencies]
|
|
reqwest = { version = "0.12", default-features = false, features = ["json", "native-tls", "multipart"] }
|
|
serde = { version = "1", features = ["derive"] }
|
|
serde_json = "1"
|
|
thiserror = "2"
|
|
# Already in the tree via reqwest's `url`; used to escape ids before they are
|
|
# interpolated into request paths.
|
|
percent-encoding = "2"
|
|
# Already in the tree as reqwest's runtime; only `time` is needed, for the
|
|
# sleep between retries.
|
|
tokio = { version = "1", features = ["time"] }
|
|
|
|
[dev-dependencies]
|
|
tokio = { version = "1", features = ["rt-multi-thread", "macros"] }
|
|
# Used to assert that ListParams urlencodes the way reqwest will send it.
|
|
serde_urlencoded = "0.7"
|
|
# Loopback HTTP server for exercising the request plumbing (pagination, path
|
|
# escaping, headers, error mapping) without reaching the network.
|
|
wiremock = "0.6"
|