Updated deployment github action and documentation

pull/30/head
Benedikt Terhechte 2 years ago
parent 6af7d7d90f
commit 889f0416fd

@ -18,7 +18,7 @@ jobs:
cd postsack-native
cargo install cargo-bundle
./build_linux.sh
binary: target/release/bundle/deb/postsack_1.0.0._amd64.deb
binary: target/release/bundle/deb/postsack_1.0.0_amd64.deb
- os: macOS-latest
command: |
cd postsack-native

159
.vscode/launch.json vendored

@ -0,0 +1,159 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "lldb",
"request": "launch",
"name": "Debug unit tests in library 'ps-core'",
"cargo": {
"args": [
"test",
"--no-run",
"--lib",
"--package=ps-core"
],
"filter": {
"name": "ps-core",
"kind": "lib"
}
},
"args": [],
"cwd": "${workspaceFolder}"
},
{
"type": "lldb",
"request": "launch",
"name": "Debug unit tests in library 'ps-database'",
"cargo": {
"args": [
"test",
"--no-run",
"--lib",
"--package=ps-database"
],
"filter": {
"name": "ps-database",
"kind": "lib"
}
},
"args": [],
"cwd": "${workspaceFolder}"
},
{
"type": "lldb",
"request": "launch",
"name": "Debug unit tests in library 'ps-importer'",
"cargo": {
"args": [
"test",
"--no-run",
"--lib",
"--package=ps-importer"
],
"filter": {
"name": "ps-importer",
"kind": "lib"
}
},
"args": [],
"cwd": "${workspaceFolder}"
},
{
"type": "lldb",
"request": "launch",
"name": "Debug unit tests in library 'ps-gui'",
"cargo": {
"args": [
"test",
"--no-run",
"--lib",
"--package=ps-gui"
],
"filter": {
"name": "ps-gui",
"kind": "lib"
}
},
"args": [],
"cwd": "${workspaceFolder}"
},
{
"type": "lldb",
"request": "launch",
"name": "Debug executable 'postsack'",
"cargo": {
"args": [
"build",
"--bin=postsack",
"--package=postsack"
],
"filter": {
"name": "postsack",
"kind": "bin"
}
},
"args": [],
"cwd": "${workspaceFolder}"
},
{
"type": "lldb",
"request": "launch",
"name": "Debug unit tests in executable 'postsack'",
"cargo": {
"args": [
"test",
"--no-run",
"--bin=postsack",
"--package=postsack"
],
"filter": {
"name": "postsack",
"kind": "bin"
}
},
"args": [],
"cwd": "${workspaceFolder}"
},
{
"type": "lldb",
"request": "launch",
"name": "Debug integration test 'test_importer'",
"cargo": {
"args": [
"test",
"--no-run",
"--test=test_importer",
"--package=postsack"
],
"filter": {
"name": "test_importer",
"kind": "test"
}
},
"args": [],
"cwd": "${workspaceFolder}"
},
{
"type": "lldb",
"request": "launch",
"name": "Debug integration test 'test_engine'",
"cargo": {
"args": [
"test",
"--no-run",
"--test=test_engine",
"--package=postsack"
],
"filter": {
"name": "test_engine",
"kind": "test"
}
},
"args": [],
"cwd": "${workspaceFolder}"
}
]
}

@ -7,13 +7,7 @@
"problemMatcher": [
"$rustc"
],
"args": [
"--bin",
"gui",
"--",
"/tmp/",
"/tmp/db2.sql"
],
"args": [],
"label": "rust: cargo run gui",
"group": {
"kind": "build",

@ -5,21 +5,25 @@
[![license](https://shields.io/badge/license-MIT-green)](https://github.com/terhechte/postsack/blob/main/LICENSE.md)
![Rust CI](https://github.com/terhechte/postsack/actions/workflows/rust.yml/badge.svg)
# Postsack
## A high level visual overview of swaths of email
[TLDR! A web demo that shows how Postsack clusters a set of 10.000 fake emails](https://terhech.de/postsack_demo)
Do you have a lot of mail? I have a lot of mail. There're inbox zero or archive zero people. I'm not one of them. I recently realized that my gmail account contains roughly 650.000 emails. I looked at that and I began
Do you have many emails? I have a lot of emails. I'm not a inbox zero person. I recently realized that my Gmail account contains roughly 650.000 emails. I looked at that and I began
to wonder.. *Why?*..
Sure, I've been using Gmail since 2004 but still, that's 38.000 Emails per year which strikes me as a bit
on the crazy side of things. Curious as I am I wanted to figure out where all these mails came from.
on the crazy side of things. I wanted to know where these mails came from.
Gmail did not offer an easy way of visualizing all my emails, I also couldn't find a tool for it. Hence I
build my own. It parses all your mails and shows configurable clusters of mails in a nice visualization.
## It looks like this
Turns out that is a tricky problem because Gmail doesn't offer any tooling for such a use case. Hence I
build my own. This tool (lovingly named `Postsack` which is German for a bag full of mail) parses all your
emails and allows you to dig into them with a treemap (see screenshot below):
![Example](resources/animation.gif)
## Features
- Import all your local mails (currently, only MBox, Apple Mail and Gmail Backups are supported)
- Build up clustered visualizations of your mails to see and understand what kind of emails you have
@ -31,10 +35,6 @@ emails and allows you to dig into them with a treemap (see screenshot below):
- Cross platform (macOS, Windows, Linux and a [Web Demo](https://terhech.de/postsack_demo))
- The app is 13MB big and consumes ~150MB of memory on macOS
## It looks like this
![Example](resources/animation.gif)
The look is similar on all platforms as it uses the [Rust egui](https://github.com/emilk/egui) GUI library.
## Videos
@ -94,3 +94,18 @@ Here's an overview of the different crates in the Postsack Workspace:
- [ps-database](ps-database/src/lib.rs): Implemts the `ps-core::DatabaseLike` trait on top of SQLite
- [postsack-native](postsack-native): Builds the native (macOS, Linux, Windows) versions of Postsack
- [postsack-web](postsack-web): Builds [the web demo of Postsack](https://terhech.de/postsack_demo)
## Why Egui?
I had build an app in [Druid](https://github.com/linebender/druid) last year and I liked the experience.
This time I wanted to try out a different Rust gui library. Between [Iced](https://github.com/iced-rs/iced)
and [Egui](https://github.com/emilk/egui) I went with the latter because the terse code examples were
tempting. Also, I had heard good things about it.
I might want to try to re-implement the postsack ui in another UI library. However something I really dig
about egui is how quickly it allows building a simple UI for a specific task (say you want to automate
a certain bash script). The main downside was that it is currently very limited in what it can do (e.g. available widgets, configuration, layout options, etc).
## What does `Postsack` mean?
[`Postsack` (or Postbeutel) is German](https://de.wikipedia.org/wiki/Postbeutel) for a bag full of mail

@ -21,12 +21,13 @@ cargo bundle --release
rm ../target/release/bundle/osx/Postsack.app/Contents/MacOS/postsack
mv ./postsack ../target/release/bundle/osx/Postsack.app/Contents/MacOS/
mv ./postsack ../target/release/bundle/osx/Postsack.app/Contents/MacOS/Postsack
# Tell the Info.plist or binary is capitalized
/usr/libexec/PlistBuddy -c "Set :CFBundleExecutable Postsack" "../target/release/bundle/osx/Postsack.app/Contents/Info.plist"
# Create a zip file
/usr/bin/zip -5 -r ../target/postsack.zip ../target/release/bundle/osx/Postsack.app
cd ../target/release/bundle/osx/
/usr/bin/zip -5 -r ../../../postsack.zip ./Postsack.app
echo "Wrote zip file ../target/postsack.zip"

@ -1 +1 @@
cargo build --release
cargo build --release --verbose
Loading…
Cancel
Save