mirror of
https://github.com/pimalaya/himalaya.git
synced 2026-06-15 11:27:53 +08:00
build: improve bin size
This commit is contained in:
Generated
+2
-28
@@ -585,7 +585,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "32e90c2accc4b07a8456ea0debdc2e7587bdd890680d71173a15d4ae604f6eef"
|
||||
dependencies = [
|
||||
"log",
|
||||
"regex",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -597,7 +596,6 @@ dependencies = [
|
||||
"anstream",
|
||||
"anstyle",
|
||||
"env_filter",
|
||||
"jiff",
|
||||
"log",
|
||||
]
|
||||
|
||||
@@ -827,7 +825,6 @@ dependencies = [
|
||||
"comfy-table",
|
||||
"convert_case 0.11.0",
|
||||
"dirs",
|
||||
"gethostname 1.1.0",
|
||||
"humansize",
|
||||
"io-discovery",
|
||||
"io-email",
|
||||
@@ -1625,7 +1622,7 @@ checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220"
|
||||
[[package]]
|
||||
name = "pimalaya-cli"
|
||||
version = "0.0.1"
|
||||
source = "git+https://github.com/pimalaya/cli#9e520d1eb7fdda81e3e44f880130fa9fea741c04"
|
||||
source = "git+https://github.com/pimalaya/cli#c3ead3ae2dd74d98e5a695bc476d74399d7a6c0b"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"clap",
|
||||
@@ -1855,18 +1852,6 @@ dependencies = [
|
||||
"thiserror 2.0.18",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "regex"
|
||||
version = "1.12.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276"
|
||||
dependencies = [
|
||||
"aho-corasick",
|
||||
"memchr",
|
||||
"regex-automata 0.4.14",
|
||||
"regex-syntax 0.8.10",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "regex-automata"
|
||||
version = "0.3.9"
|
||||
@@ -1875,7 +1860,7 @@ checksum = "59b23e92ee4318893fa3fe3e6fb365258efbfe6ac6ab30f090cdcbb7aa37efa9"
|
||||
dependencies = [
|
||||
"aho-corasick",
|
||||
"memchr",
|
||||
"regex-syntax 0.7.5",
|
||||
"regex-syntax",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -1883,11 +1868,6 @@ name = "regex-automata"
|
||||
version = "0.4.14"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f"
|
||||
dependencies = [
|
||||
"aho-corasick",
|
||||
"memchr",
|
||||
"regex-syntax 0.8.10",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "regex-syntax"
|
||||
@@ -1895,12 +1875,6 @@ version = "0.7.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da"
|
||||
|
||||
[[package]]
|
||||
name = "regex-syntax"
|
||||
version = "0.8.10"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a"
|
||||
|
||||
[[package]]
|
||||
name = "rfc2047-decoder"
|
||||
version = "1.1.0"
|
||||
|
||||
+8
-3
@@ -17,7 +17,7 @@ all-features = true
|
||||
rustdoc-args = ["--cfg", "docsrs"]
|
||||
|
||||
[features]
|
||||
default = ["imap", "smtp", "maildir", "jmap", "rustls-ring"]
|
||||
default = ["imap", "smtp", "rustls-ring"]
|
||||
imap = ["dep:io-imap", "dep:mail-parser", "dep:rfc2047-decoder", "io-email/imap", "io-imap/client"]
|
||||
jmap = ["dep:base64", "dep:io-jmap", "dep:mail-parser", "dep:serde_json", "io-email/jmap", "io-jmap/client"]
|
||||
smtp = ["dep:io-smtp", "dep:mail-parser", "io-email/smtp"]
|
||||
@@ -27,6 +27,12 @@ rustls-aws = ["pimalaya-stream/rustls-aws", "io-discovery/rustls-aws", "io-imap?
|
||||
rustls-ring = ["pimalaya-stream/rustls-ring", "io-discovery/rustls-ring", "io-imap?/rustls-ring", "io-jmap?/rustls-ring", "io-smtp?/rustls-ring"]
|
||||
vendored = ["pimalaya-stream/vendored"]
|
||||
|
||||
[profile.release]
|
||||
lto = "fat"
|
||||
codegen-units = 1
|
||||
strip = "symbols"
|
||||
panic = "abort"
|
||||
|
||||
[build-dependencies]
|
||||
pimalaya-cli = { version = "0.0.1", default-features = false, features = ["build"] }
|
||||
|
||||
@@ -38,14 +44,13 @@ clap = { version = "4.4", features = ["derive", "env", "wrap_help"] }
|
||||
comfy-table = "7"
|
||||
convert_case = { version = "0.11", optional = true }
|
||||
dirs = "6"
|
||||
gethostname = "1"
|
||||
humansize = "2"
|
||||
io-discovery = { version = "0.0.1", default-features = false, features = ["pacc", "autoconfig", "rfc6186", "client"] }
|
||||
ariadne = "0.5"
|
||||
io-email = { version = "0.0.1", default-features = false, features = ["serde", "client", "search"] }
|
||||
io-imap = { version = "0.0.1", default-features = false, optional = true }
|
||||
io-jmap = { version = "0.0.1", default-features = false, optional = true }
|
||||
io-maildir = { version = "0.0.1", default-features = false, features = ["serde"], optional = true }
|
||||
io-maildir = { version = "0.0.1", default-features = false, optional = true }
|
||||
io-smtp = { version = "0.0.1", default-features = false, optional = true }
|
||||
log = "0.4"
|
||||
mail-builder = "0.3"
|
||||
|
||||
@@ -45,18 +45,18 @@ himalaya envelopes list --account posteo -m Archives.FOSS --page 2
|
||||
|
||||
## Features
|
||||
|
||||
- **Shared API** that maps `mailboxes`, `envelopes`, `flags`, `messages` and `attachments` to the active backend (IMAP, JMAP or Maildir)
|
||||
- **Protocol-specific APIs** exposing each backend's full surface (`himalaya imap …`, `himalaya jmap …`, `himalaya maildir …`, `himalaya smtp …`)
|
||||
- **IMAP** backend <sup>[rfc9051](https://www.iana.org/go/rfc9051)</sup> (requires `imap` cargo feature)
|
||||
- **JMAP** backend <sup>[rfc8620](https://www.iana.org/go/rfc8620), [rfc8621](https://www.iana.org/go/rfc8621)</sup> (requires `jmap` cargo feature)
|
||||
- **Maildir** backend (requires `maildir` cargo feature)
|
||||
- **SMTP** backend <sup>[rfc5321](https://www.iana.org/go/rfc5321)</sup> (requires `smtp` cargo feature)
|
||||
- **Shared API** that maps `mailboxes`, `envelopes`, `flags`, `messages` and `attachments` to the active backend
|
||||
- **Protocol-specific APIs** exposing each backend's full surface (`himalaya imap/smtp/maildir/jmap…`)
|
||||
- **IMAP** support <sup>[rfc9051](https://www.iana.org/go/rfc9051)</sup> (requires `imap` feature)
|
||||
- **JMAP** support <sup>[rfc8620](https://www.iana.org/go/rfc8620), [rfc8621](https://www.iana.org/go/rfc8621)</sup> (requires `jmap` feature)
|
||||
- **Maildir** support (requires `maildir` feature)
|
||||
- **SMTP** backend <sup>[rfc5321](https://www.iana.org/go/rfc5321)</sup> (requires `smtp` feature)
|
||||
- **TLS** support:
|
||||
- [native-tls](https://crates.io/crates/native-tls) (requires `native-tls` feature)
|
||||
- [rustls](https://crates.io/crates/rustls):
|
||||
- AWS-LC crypto provider (requires `rustls-aws` feature)
|
||||
- Ring crypto provider (requires `rustls-ring` feature)
|
||||
- **SASL** support: ANONYMOUS, LOGIN, PLAIN (IMAP/SMTP)
|
||||
- **SASL** support: anonymous, login, plain, oauthbearer, xoauth2, scram-sha-256
|
||||
- **Provider discovery** wizard powered by [io-discovery](https://github.com/pimalaya/io-discovery): Thunderbird Autoconfiguration, PACC and RFC 6186 SRV lookups
|
||||
- **TOML** configuration with multi-account support
|
||||
- **JSON** output via `--json`
|
||||
@@ -212,7 +212,7 @@ Accounts can be (re)configured later with `himalaya account configure <name>`. T
|
||||
|
||||
You can also write the configuration by hand:
|
||||
|
||||
- Copy the documented [`./config.sample.toml`](./config.sample.toml)
|
||||
- Copy the documented [./config.sample.toml](./config.sample.toml)
|
||||
- Paste it into one of:
|
||||
- `$XDG_CONFIG_HOME/himalaya/config.toml`
|
||||
- `$HOME/.config/himalaya/config.toml`
|
||||
@@ -230,7 +230,7 @@ Backend-agnostic commands operate on the account's first configured backend, or
|
||||
```
|
||||
himalaya mailboxes list
|
||||
himalaya envelopes list -m INBOX --page 2
|
||||
himalaya envelopes list from alice and after 2026-01-01 order by date desc
|
||||
himalaya envelopes search from alice and after 2026-01-01 order by date desc
|
||||
himalaya flags add -m INBOX --flag seen 1:3,5
|
||||
himalaya messages copy --from INBOX --to Archives 42
|
||||
himalaya attachments download -m INBOX 42
|
||||
@@ -238,13 +238,7 @@ himalaya attachments download -m INBOX 42
|
||||
|
||||
When the `inbox` alias is configured under `[mailbox.alias]`, `-m/--mailbox` becomes optional: shared commands fall back to that id. With `[mailbox.alias] inbox = "INBOX"`, the calls above shorten to `envelopes list --page 2`, `flags add --flag seen 1:3,5`, etc.
|
||||
|
||||
`envelopes list` accepts a trailing search query covering `date`, `after`, `from`, `to`, `subject`, `body`, `flag` conditions (combined with `and`, `or`, `not`, grouped with parens) and a `order by date|from|to|subject [asc|desc]` sort chain. Date clauses target the `Date:` header (sent-at) on every backend.
|
||||
|
||||
Backend coverage:
|
||||
|
||||
- **IMAP**: full grammar via `SEARCH` (RFC 9051) + `SORT` (RFC 5256). `SENTON` / `SENTSINCE` keep date semantics anchored to the `Date:` header.
|
||||
- **JMAP**: conjunctive filters only (`or` / `not` rejected; the JMAP wire model does not expose `FilterOperator` in `io-jmap` yet). Date clauses use an over-approximating `receivedAt` server filter plus a client-side `sentAt` post-filter so the sent-at rule is honored exactly.
|
||||
- **Maildir**: full grammar except `body` (would require parsing every candidate message file; planned).
|
||||
`envelopes list` is plain pagination, ordered by date descending. To filter or sort, use `envelopes search` with a trailing query covering `date`, `after`, `from`, `to`, `subject`, `body`, `flag` conditions (combined with `and`, `or`, `not`, grouped with parens) and an `order by date|from|to|subject [asc|desc]` sort chain. Date clauses target the `Date:` header (sent-at) on every backend.
|
||||
|
||||
The shared surface is a strict least-common-denominator subset across IMAP, JMAP and Maildir. Operations that do not generalize (mailbox roles, attribute flags, JMAP-specific queries…) live under the protocol-specific subcommands.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user