Rename all crates to start with letterbox-

This commit is contained in:
Bill Thiede 2025-02-13 09:48:24 -08:00
parent d1beaded09
commit 2076596f50
15 changed files with 82 additions and 73 deletions

97
Cargo.lock generated
View File

@ -2884,30 +2884,24 @@ dependencies = [
] ]
[[package]] [[package]]
name = "letterbox" name = "letterbox-notmuch"
version = "0.0.144" version = "0.0.144"
dependencies = [ dependencies = [
"build-info",
"build-info-build",
"chrono",
"console_error_panic_hook",
"console_log",
"gloo-net",
"graphql_client",
"human_format",
"itertools 0.14.0", "itertools 0.14.0",
"log", "log",
"notmuch", "pretty_assertions",
"seed", "rayon",
"seed_hooks",
"serde", "serde",
"serde_json", "serde_json",
"shared",
"thiserror 2.0.11", "thiserror 2.0.11",
"uuid", "tracing",
"wasm-bindgen", ]
"wasm-bindgen-test",
"web-sys", [[package]]
name = "letterbox-procmail2notmuch"
version = "0.0.144"
dependencies = [
"anyhow",
] ]
[[package]] [[package]]
@ -2927,13 +2921,14 @@ dependencies = [
"css-inline", "css-inline",
"futures 0.3.31", "futures 0.3.31",
"html-escape", "html-escape",
"letterbox-notmuch",
"letterbox-shared",
"linkify", "linkify",
"log", "log",
"lol_html", "lol_html",
"mailparse", "mailparse",
"maplit", "maplit",
"memmap", "memmap",
"notmuch",
"opentelemetry", "opentelemetry",
"regex", "regex",
"reqwest", "reqwest",
@ -2942,7 +2937,6 @@ dependencies = [
"scraper", "scraper",
"serde", "serde",
"serde_json", "serde_json",
"shared",
"sqlx", "sqlx",
"tantivy", "tantivy",
"thiserror 2.0.11", "thiserror 2.0.11",
@ -2953,6 +2947,41 @@ dependencies = [
"xtracing", "xtracing",
] ]
[[package]]
name = "letterbox-shared"
version = "0.0.144"
dependencies = [
"build-info",
"letterbox-notmuch",
"serde",
]
[[package]]
name = "letterbox-web"
version = "0.0.144"
dependencies = [
"build-info",
"build-info-build",
"chrono",
"console_error_panic_hook",
"console_log",
"gloo-net",
"graphql_client",
"human_format",
"itertools 0.14.0",
"letterbox-shared",
"log",
"seed",
"seed_hooks",
"serde",
"serde_json",
"thiserror 2.0.11",
"uuid",
"wasm-bindgen",
"wasm-bindgen-test",
"web-sys",
]
[[package]] [[package]]
name = "levenshtein_automata" name = "levenshtein_automata"
version = "0.2.1" version = "0.2.1"
@ -3449,20 +3478,6 @@ dependencies = [
"minimal-lexical", "minimal-lexical",
] ]
[[package]]
name = "notmuch"
version = "0.0.144"
dependencies = [
"itertools 0.14.0",
"log",
"pretty_assertions",
"rayon",
"serde",
"serde_json",
"thiserror 2.0.11",
"tracing",
]
[[package]] [[package]]
name = "nu-ansi-term" name = "nu-ansi-term"
version = "0.46.0" version = "0.46.0"
@ -4256,13 +4271,6 @@ dependencies = [
"yansi", "yansi",
] ]
[[package]]
name = "procmail2notmuch"
version = "0.0.144"
dependencies = [
"anyhow",
]
[[package]] [[package]]
name = "prost" name = "prost"
version = "0.13.4" version = "0.13.4"
@ -5354,15 +5362,6 @@ dependencies = [
"lazy_static", "lazy_static",
] ]
[[package]]
name = "shared"
version = "0.0.144"
dependencies = [
"build-info",
"notmuch",
"serde",
]
[[package]] [[package]]
name = "shlex" name = "shlex"
version = "0.1.1" version = "0.1.1"

View File

@ -1,5 +1,5 @@
[package] [package]
name = "notmuch" name = "letterbox-notmuch"
version = "0.0.144" version = "0.0.144"
edition = "2021" edition = "2021"
exclude = ["/testdata"] exclude = ["/testdata"]

View File

@ -4,7 +4,7 @@ use std::{
time::Instant, time::Instant,
}; };
use notmuch::Notmuch; use letterbox_notmuch::Notmuch;
use rayon::iter::{ParallelBridge, ParallelIterator}; use rayon::iter::{ParallelBridge, ParallelIterator};
#[test] #[test]

View File

@ -1,7 +1,11 @@
[package] [package]
name = "procmail2notmuch" name = "letterbox-procmail2notmuch"
version = "0.0.144" version = "0.0.144"
edition = "2021" edition = "2021"
description = "Tool for generating notmuch rules from procmail"
license = "UNLICENSED"
repository = "https://git.z.xinu.tv/wathiede/letterbox"
publish = ["xinu"]
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

View File

@ -23,13 +23,13 @@ clap = { version = "4.5.23", features = ["derive"] }
css-inline = "0.14.0" css-inline = "0.14.0"
futures = "0.3.31" futures = "0.3.31"
html-escape = "0.2.13" html-escape = "0.2.13"
letterbox-notmuch = { path = "../notmuch" }
linkify = "0.10.0" linkify = "0.10.0"
log = "0.4.17" log = "0.4.17"
lol_html = "2.0.0" lol_html = "2.0.0"
mailparse = "0.16.0" mailparse = "0.16.0"
maplit = "1.0.2" maplit = "1.0.2"
memmap = "0.7.0" memmap = "0.7.0"
notmuch = { path = "../notmuch" }
opentelemetry = "0.28.0" opentelemetry = "0.28.0"
regex = "1.11.1" regex = "1.11.1"
reqwest = { version = "0.12.7", features = ["blocking"] } reqwest = { version = "0.12.7", features = ["blocking"] }
@ -38,7 +38,7 @@ rocket_cors = "0.6.0"
scraper = "0.22.0" scraper = "0.22.0"
serde = { version = "1.0.147", features = ["derive"] } serde = { version = "1.0.147", features = ["derive"] }
serde_json = "1.0.87" serde_json = "1.0.87"
shared = { path = "../shared" } letterbox-shared = { path = "../shared" }
sqlx = { version = "0.8.2", features = ["postgres", "runtime-tokio", "time"] } sqlx = { version = "0.8.2", features = ["postgres", "runtime-tokio", "time"] }
tantivy = { version = "0.22.0", optional = true } tantivy = { version = "0.22.0", optional = true }
thiserror = "2.0.0" thiserror = "2.0.0"

View File

@ -8,6 +8,7 @@ use std::{error::Error, io::Cursor, str::FromStr};
use async_graphql::{extensions, http::GraphiQLSource, EmptySubscription, Schema}; use async_graphql::{extensions, http::GraphiQLSource, EmptySubscription, Schema};
use async_graphql_rocket::{GraphQLQuery, GraphQLRequest, GraphQLResponse}; use async_graphql_rocket::{GraphQLQuery, GraphQLRequest, GraphQLResponse};
use cacher::FilesystemCacher; use cacher::FilesystemCacher;
use letterbox_notmuch::{Notmuch, NotmuchError, ThreadSet};
#[cfg(feature = "tantivy")] #[cfg(feature = "tantivy")]
use letterbox_server::tantivy::TantivyConnection; use letterbox_server::tantivy::TantivyConnection;
use letterbox_server::{ use letterbox_server::{
@ -16,7 +17,6 @@ use letterbox_server::{
graphql::{Attachment, GraphqlSchema, Mutation, QueryRoot}, graphql::{Attachment, GraphqlSchema, Mutation, QueryRoot},
nm::{attachment_bytes, cid_attachment_bytes}, nm::{attachment_bytes, cid_attachment_bytes},
}; };
use notmuch::{Notmuch, NotmuchError, ThreadSet};
use rocket::{ use rocket::{
fairing::AdHoc, fairing::AdHoc,
http::{ContentType, Header}, http::{ContentType, Header},
@ -179,7 +179,7 @@ async fn graphql_request(
async fn main() -> Result<(), Box<dyn Error>> { async fn main() -> Result<(), Box<dyn Error>> {
let _guard = xtracing::init(env!("CARGO_BIN_NAME"))?; let _guard = xtracing::init(env!("CARGO_BIN_NAME"))?;
build_info::build_info!(fn bi); build_info::build_info!(fn bi);
info!("Build Info: {}", shared::build_version(bi)); info!("Build Info: {}", letterbox_shared::build_version(bi));
let allowed_origins = AllowedOrigins::all(); let allowed_origins = AllowedOrigins::all();
let cors = rocket_cors::CorsOptions { let cors = rocket_cors::CorsOptions {
allowed_origins, allowed_origins,
@ -195,7 +195,7 @@ async fn main() -> Result<(), Box<dyn Error>> {
let rkt = rocket::build() let rkt = rocket::build()
.mount( .mount(
shared::urls::MOUNT_POINT, letterbox_shared::urls::MOUNT_POINT,
routes![ routes![
original, original,
show_pretty, show_pretty,

View File

@ -10,7 +10,7 @@ use crate::TransformError;
#[derive(Error, Debug)] #[derive(Error, Debug)]
pub enum ServerError { pub enum ServerError {
#[error("notmuch: {0}")] #[error("notmuch: {0}")]
NotmuchError(#[from] notmuch::NotmuchError), NotmuchError(#[from] letterbox_notmuch::NotmuchError),
#[error("flatten")] #[error("flatten")]
FlattenError, FlattenError,
#[error("mail parse error: {0}")] #[error("mail parse error: {0}")]

View File

@ -6,8 +6,8 @@ use async_graphql::{
SimpleObject, Union, SimpleObject, Union,
}; };
use cacher::FilesystemCacher; use cacher::FilesystemCacher;
use letterbox_notmuch::Notmuch;
use log::info; use log::info;
use notmuch::Notmuch;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use sqlx::postgres::PgPool; use sqlx::postgres::PgPool;
use tokio::join; use tokio::join;
@ -283,7 +283,7 @@ pub struct QueryRoot;
impl QueryRoot { impl QueryRoot {
async fn version<'ctx>(&self, _ctx: &Context<'ctx>) -> Result<String, Error> { async fn version<'ctx>(&self, _ctx: &Context<'ctx>) -> Result<String, Error> {
build_info::build_info!(fn bi); build_info::build_info!(fn bi);
Ok(shared::build_version(bi)) Ok(letterbox_shared::build_version(bi))
} }
#[instrument(skip_all, fields(query=query))] #[instrument(skip_all, fields(query=query))]
#[instrument(skip_all, fields(query=query, request_id=request_id()))] #[instrument(skip_all, fields(query=query, request_id=request_id()))]

View File

@ -2,10 +2,10 @@ use std::collections::HashMap;
use cacher::FilesystemCacher; use cacher::FilesystemCacher;
use futures::{stream::FuturesUnordered, StreamExt}; use futures::{stream::FuturesUnordered, StreamExt};
use letterbox_shared::compute_color;
use log::{error, info}; use log::{error, info};
use maplit::hashmap; use maplit::hashmap;
use scraper::Selector; use scraper::Selector;
use shared::compute_color;
use sqlx::postgres::PgPool; use sqlx::postgres::PgPool;
use tracing::instrument; use tracing::instrument;
use url::Url; use url::Url;

View File

@ -5,10 +5,10 @@ use std::{
time::Instant, time::Instant,
}; };
use letterbox_notmuch::Notmuch;
use log::{error, info, warn}; use log::{error, info, warn};
use mailparse::{parse_content_type, parse_mail, MailHeader, MailHeaderMap, ParsedMail}; use mailparse::{parse_content_type, parse_mail, MailHeader, MailHeaderMap, ParsedMail};
use memmap::MmapOptions; use memmap::MmapOptions;
use notmuch::Notmuch;
use sqlx::PgPool; use sqlx::PgPool;
use tracing::instrument; use tracing::instrument;
@ -43,7 +43,9 @@ pub fn is_notmuch_thread_or_id(id: &str) -> bool {
} }
// TODO(wathiede): decide good error type // TODO(wathiede): decide good error type
pub fn threadset_to_messages(thread_set: notmuch::ThreadSet) -> Result<Vec<Message>, ServerError> { pub fn threadset_to_messages(
thread_set: letterbox_notmuch::ThreadSet,
) -> Result<Vec<Message>, ServerError> {
for t in thread_set.0 { for t in thread_set.0 {
for _tn in t.0 {} for _tn in t.0 {}
} }
@ -190,7 +192,7 @@ pub async fn thread(
.headers .headers
.get_first_value("date") .get_first_value("date")
.and_then(|d| mailparse::dateparse(&d).ok()); .and_then(|d| mailparse::dateparse(&d).ok());
let cid_prefix = shared::urls::cid_prefix(None, &id); let cid_prefix = letterbox_shared::urls::cid_prefix(None, &id);
let base_url = None; let base_url = None;
let mut part_addr = Vec::new(); let mut part_addr = Vec::new();
part_addr.push(id.to_string()); part_addr.push(id.to_string());

View File

@ -1,5 +1,5 @@
[package] [package]
name = "shared" name = "letterbox-shared"
version = "0.0.144" version = "0.0.144"
edition = "2021" edition = "2021"
description = "Shared module for letterbox" description = "Shared module for letterbox"
@ -11,5 +11,5 @@ publish = ["xinu"]
[dependencies] [dependencies]
build-info = "0.0.39" build-info = "0.0.39"
notmuch = { path = "../notmuch" } letterbox-notmuch = { path = "../notmuch" }
serde = { version = "1.0.147", features = ["derive"] } serde = { version = "1.0.147", features = ["derive"] }

View File

@ -1,7 +1,7 @@
use std::hash::{DefaultHasher, Hash, Hasher}; use std::hash::{DefaultHasher, Hash, Hasher};
use build_info::{BuildInfo, VersionControl}; use build_info::{BuildInfo, VersionControl};
use notmuch::SearchSummary; use letterbox_notmuch::SearchSummary;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, Debug)] #[derive(Serialize, Deserialize, Debug)]

View File

@ -1,6 +1,6 @@
[package] [package]
version = "0.0.144" version = "0.0.144"
name = "letterbox" name = "letterbox-web"
authors = ["Bill Thiede <git@xinu.tv>"] authors = ["Bill Thiede <git@xinu.tv>"]
edition = "2021" edition = "2021"
description = "Web frontend for letterbox" description = "Web frontend for letterbox"
@ -21,8 +21,7 @@ seed = { version = "0.10.0", features = ["routing"] }
#seed = "0.9.2" #seed = "0.9.2"
console_log = { version = "0.1.0", registry = "xinu" } console_log = { version = "0.1.0", registry = "xinu" }
serde = { version = "1.0.147", features = ["derive"] } serde = { version = "1.0.147", features = ["derive"] }
notmuch = { path = "../notmuch" } letterbox-shared = { path = "../shared" }
shared = { path = "../shared" }
itertools = "0.14.0" itertools = "0.14.0"
serde_json = { version = "1.0.93", features = ["unbounded_depth"] } serde_json = { version = "1.0.93", features = ["unbounded_depth"] }
chrono = "0.4.31" chrono = "0.4.31"

View File

@ -27,7 +27,7 @@ pub fn unread_query() -> &'static str {
// `init` describes what should happen when your app started. // `init` describes what should happen when your app started.
pub fn init(url: Url, orders: &mut impl Orders<Msg>) -> Model { pub fn init(url: Url, orders: &mut impl Orders<Msg>) -> Model {
let version = shared::build_version(bi); let version = letterbox_shared::build_version(bi);
info!("Build Info: {}", version); info!("Build Info: {}", version);
if url.hash().is_none() { if url.hash().is_none() {
orders.request_url(urls::search(unread_query(), 0)); orders.request_url(urls::search(unread_query(), 0));

View File

@ -3,10 +3,10 @@ use std::collections::HashSet;
use chrono::{DateTime, Datelike, Duration, Local, Utc}; use chrono::{DateTime, Datelike, Duration, Local, Utc};
use human_format::{Formatter, Scales}; use human_format::{Formatter, Scales};
use itertools::Itertools; use itertools::Itertools;
use letterbox_shared::compute_color;
use log::{debug, error, info}; use log::{debug, error, info};
use seed::{prelude::*, *}; use seed::{prelude::*, *};
use seed_hooks::{state_access::CloneState, topo, use_state}; use seed_hooks::{state_access::CloneState, topo, use_state};
use shared::compute_color;
use web_sys::HtmlElement; use web_sys::HtmlElement;
use crate::{ use crate::{
@ -697,7 +697,12 @@ fn render_attachements(
let default = "UNKNOWN_FILE".to_string(); let default = "UNKNOWN_FILE".to_string();
let filename = a.filename.as_ref().unwrap_or(&default); let filename = a.filename.as_ref().unwrap_or(&default);
let host = seed::window().location().host().expect("couldn't get host"); let host = seed::window().location().host().expect("couldn't get host");
let url = shared::urls::download_attachment(Some(&host), &a.id, &a.idx, filename); let url = letterbox_shared::urls::download_attachment(
Some(&host),
&a.id,
&a.idx,
filename,
);
let mut fmtr = Formatter::new(); let mut fmtr = Formatter::new();
fmtr.with_separator(" "); fmtr.with_separator(" ");
fmtr.with_scales(Scales::Binary()); fmtr.with_scales(Scales::Binary());