Files
margin-calendar/src-tauri/Cargo.toml
T
pj 3323496a34 License under MIT
No licence file meant nobody had permission to redistribute this, which is a
strange position for a public repo with an AUR package pointing at it. The
PKGBUILD said license=('custom') because there was nothing truthful to put
there.

MIT is not one of the licences Arch keeps in /usr/share/licenses/common, so
the package now fetches the licence from its own tag and installs a copy. The
release workflow checksums that copy from the tag it checked out, rather than
trusting whatever main has drifted to.

Declared in package.json and Cargo.toml too, so the manifests and the package
agree on the answer.
2026-08-12 21:30:13 +05:30

71 lines
2.6 KiB
TOML

[package]
name = "margin-calendar"
version = "0.0.1"
description = "A calendar for Google Calendar"
authors = ["Margin"]
edition = "2021"
license = "MIT"
[lib]
name = "margin_calendar_lib"
crate-type = ["staticlib", "cdylib", "rlib"]
[build-dependencies]
tauri-build = { version = "2", features = [] }
[dependencies]
tauri = { version = "2", features = [] }
tauri-plugin-opener = "2"
# Mobile has no loopback listener to catch Google's redirect, so the OAuth answer comes back as a
# custom URI scheme the OS routes to this app. Registered on desktop too, so both flows are one
# code path with one difference in it rather than two.
tauri-plugin-deep-link = "2"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
base64 = "0.22"
sha2 = "0.10"
rand = "0.8"
url = "2"
reqwest = { version = "0.12", default-features = false, features = ["rustls-tls", "json"] }
rusqlite = { version = "0.37", features = ["bundled"] }
rrule = "0.14"
chrono = { version = "0.4", features = ["serde"] }
chrono-tz = "0.10"
tokio = { version = "1", features = ["sync", "time"] }
# Refresh tokens are sealed with XChaCha20-Poly1305 and kept in the app data directory. There is no
# `keyring` here on purpose: it has no Android backend at all, and on macOS it ties the item to the
# code signature, so every rebuild re-prompts for authorization. src/google/secrets.rs states what
# the file is and is not worth on each platform.
chacha20poly1305 = "0.10"
# There is no auto-updater and no process to restart on a phone: the store is the update channel.
# Gated here as well as behind cfg(desktop) in lib.rs so a mobile build does not compile them at all.
[target.'cfg(not(any(target_os = "android", target_os = "ios")))'.dependencies]
tauri-plugin-process = "2"
tauri-plugin-updater = "2"
# Two things wry leaves to us: one UIKit property (stop_uikit_shrinking_the_viewport in lib.rs) and
# the SFSafariViewController that shows the consent page (google/browser.rs). These versions are the
# ones wry already resolves for its own iOS backend, so matching them keeps a single copy of objc2 in
# the build rather than a second incompatible one.
[target.'cfg(target_os = "ios")'.dependencies]
objc2 = "0.6"
objc2-ui-kit = { version = "0.3", default-features = false, features = [
"std",
"UIResponder",
"UIView",
"UIScrollView",
] }
objc2-foundation = { version = "0.3", default-features = false, features = [
"std",
"NSString",
"NSURL",
] }
# Only for the null completion handler the two present/dismiss calls take. Passing a raw null
# pointer there would encode as an object rather than a block, which objc2 checks and rejects.
block2 = "0.6"
[dev-dependencies]
tempfile = "3"