Commit graph

162 commits

Author SHA1 Message Date
Clément DOUIN b2cffd22f1
use cargo workspace feature (#340)
For now, everything has been moved as it is in the "cli"
workspace. The next step is to separate the "lib" from the "cli".
2022-03-16 09:57:24 +01:00
Clément DOUIN 4f6f884962
prepare release v0.5.9 2022-03-12 18:02:46 +01:00
Clément DOUIN 86b41e4914
introduce --header arg for read command (#338) 2022-03-12 13:05:57 +01:00
Clément DOUIN 04cce37316
prepare release v0.5.8 2022-03-04 14:36:16 +01:00
Clément DOUIN f06beb61ae
make one cargo feature per backend (#318) 2022-03-04 14:19:54 +01:00
Clément DOUIN 4e24d04faf
update changelog, prepare v0.5.7 2022-03-01 23:14:34 +01:00
Clément DOUIN c87512dbd4
make maildir envelopes selectable by short md5 hash 2022-02-27 10:23:58 +01:00
Clément DOUIN a2616fc1bd
make notmuch optional via cargo features (#303) 2022-02-26 09:56:26 +01:00
Clément DOUIN e4aa569458
init notmuch backend 2022-02-25 20:26:50 +01:00
Clément DOUIN bd15e7d979
pin imap version (#303) 2022-02-25 18:55:42 +01:00
Clément DOUIN b146d9b7e1
rollback rust edition (#303) 2022-02-23 11:36:38 +01:00
Clément DOUIN 158bc86cfa
release v0.5.6 (#301)
* make use of mailparse::MailAddr

* move addr logic to a dedicated file

* update changelog

* add suffix to downoalded attachments with same name (#204)

* implement sort command (#34)

* introduce backends structure (#296)

* implement backend structure poc

* improve config namings

* improve account namings and structure

* rename imap vars to backend

* maildir backend (#299)

* refactor config system, preparing maildir backend

* rename deserializable by deserialized

* wrap backend in a Box

* reword backend trait methods

* merge list envelopes functions

* remove find_raw_msg from backend trait

* remove expunge fn from backend trait

* rename add_msg from backend trait

* init maildir integration tests, start impl maildir backend fns

* implement remaining methods maildir backend, refactor trait

* improve backend trait, add copy and move fns

* remove usage of Mbox in handlers

* reorganize backends folder structure

* move mbox out of domain folder

* rename mbox entities

* improve mbox structure

* remove unused files, move smtp module

* improve envelope, impl get_envelopes for maildir

* link maildir mail entry id to envelope id

* use erased-serde to make backend get_mboxes return a trait object

* remove unused mbox files

* rename Output trait

* make get_envelopes return a trait object

* remove unused impl for imap envelope

* update backend return signature with Box

* replace impl from imap::Fetch to mailparse::ParsedMail

* split flags by backends

* remove unused flags from msg

* remove remaining flags from domain

* impl maildir copy and move, improve maildir e2e tests

* set up imap backend e2e tests

* move domain/msg to msg

* repair broken tests

* fix maildir envelopes encoding issues

* add date column to maildir envelopes

* implement maildir list pagination

* improve maildir subdir path management

* add pgp and maildir features to readme

* update changelog

* bump version v0.5.6
2022-02-22 16:54:39 +01:00
Clément DOUIN 585fa77af5
release v0.5.5 (#290)
* update main screenshot readme

* add contributing file

* update changelog

* doc: remove roadmap from reame

* improve main comments

* improve arg and handler logs

* fix multiple recipients issue (#288)

* add notify-query config option (#289)

* set up end-to-end encryption (#287)

* init basic pgp encrypt/decrypt

* add small rpgp poc for (#286)

* improve decrypt parts logs

* add pgp-decrypt-cmd to config

* add pgp-encrypt-cmd to config

* init pgp signature

* improve decrypt part readability

* improve encrypt multipart, remove sign

* remove unused md5 lib

* add encrypt arg to reply and forward commands

* fix typos

* prepare v0.5.5
2022-02-08 14:50:09 +01:00
Clément DOUIN e33a9a72e9
release v0.5.4 (#285)
* replace bsd3 license by bsd4

* add attachments with save and send commands (#284)

* set up tpl save and send commands

* improve msg save and send handlers

* add vim msg#add_attachment fn

* improve vim logs

* update changelog

* add attachment keybind vim doc

* reverse range order fetch envelopes (#276)

* bump version v0.5.4
2022-02-05 00:29:57 +01:00
Clément DOUIN c5ed252f33
bump version v0.5.3 2022-02-03 23:34:15 +01:00
Clément DOUIN 9e320135ec
prepare cargo publishing 2022-02-03 15:54:57 +01:00
Clément DOUIN 8cdeba62a1
release v0.5.2 (#282)
* doc: fix blur in list msg screenshots (#181)

* fix a typo in mbox arg (#245)

`targetted` to `targeted` 👌🏻

* make inbox, sent and drafts folder customizable (#246)

* mbox: make inbox, sent and drafts folder customizable

* msg: update send handler parameters order

* vim: fix extracting message ids from list (#247)

The current method doesn't work because the list uses a fancy line
character (`│`) as the separator, not a regular pipe character (`|`).
Matching for the first number in the line instead solves the problem and
will continue to work regardless of what separator is used.

* add new line after printing strings (#251)

* init cargo workspace (#252)

* init cargo workspaces

* nix: fix assets path

* doc: update rtp vim plugin

* vim: add error message if loading vim plugin from vim/

* init sub crates (#253)

* init sub crates

* doc: update readme

* doc: improve main readme

* doc: add links, add missing crate task

* doc: update emojis

* update cargo lock

* implement contact completion with completefunc (#250)

This allows users to define a command for contact completion with
`g:himalaya_complete_contact_cmd` and trigger it with `<C-x><C-u>` when
writing an email.

* fix clippy lints (#255)

* revert cargo workspace feature

* fix nix run (#274)

* replace cargo2nix by naersk

* add rust-analyzer and rustfmt to nix build inputs

* remove wiki from git submodules, update changelog

* fix missing range when fetch fails, add more logs (#276)

* add missing fix in changelog

* remove blank lines and spaces from plain parts (#280)

* fix watch command (#271)

* remove also tabs from text parts (#280)

* pin native-tls minor version (#278)

* improve msg sanitization (#280)

* fix mbox vim plugin telescope preview (#249)

* bump version v0.5.2

* update changelog

Co-authored-by: Austin Traver <austintraver@gmail.com>
Co-authored-by: Jason Cox <dev@jasoncarloscox.com>
Co-authored-by: Gökmen Görgen <gkmngrgn@gmail.com>
Co-authored-by: Ethiraric <ethiraric@gmail.com>
2022-02-02 02:21:35 +01:00
Clément DOUIN f9775ae8af
doc: update project desc, bump version v0.5.1 2021-10-24 23:41:12 +02:00
Clément DOUIN 192445d7e4
make use of termcolor crate to disable colors (#236)
* table: replace custom color by termcolor

* table: deactivate colors if not tty

* table: rename printable to print, add more comments

* table: make use of writters, fix tests

* doc: update changelog

* doc: add page to wiki
2021-10-24 00:17:12 +02:00
Clément DOUIN d21778c35e
improve text parts (#221) 2021-10-11 23:04:33 +02:00
Clément DOUIN 767eee95f5
release v0.5.0 2021-10-11 00:06:46 +02:00
Clément DOUIN b7d068c729
improve folder struct + msg management (#217)
* make imap list and search return msg instead of fetch

* move imap logouts to main fn

* improve list command

* improve search command

* improve flags command

* improve template reply

* improve tpl forward command

* refactor tpl and msg reply/forward

* refactor copy, move and write commands

* refactor attachment command

* fix attachment part of copy and move commands

* fix send, save, read and mbox

* put back notify and watch commands

* fix msg encoding

* refactor edit choices, clean dead code

* fix attachment for write, reply and forward commands

* refactor config mod struct

* refactor project folder struct

* fix vim plugin (#215)
2021-10-10 22:58:57 +02:00
Paolo Barbolini 8f4718c057
Remove unused lettre_email crate (#209) 2021-09-29 22:32:59 +02:00
Clément DOUIN c619f06206
replace error-chain by anyhow (#152) 2021-09-13 11:52:20 +02:00
TornaxO7 0e68801a35
refactor msg model (#173)
* Adding Mail structure

Adding a main structure which can be used for *everything* which has to do with
a mail:
    - Writing a new mail
    - Fetching the information of a mail

* Write mails

User can write mails now

* Writing mail

When mail is converted to a sendable message, it'll print out a nice little
error message what to do and which field is missing a value.

* Mail

List subcommand works with new struct now.

* Forwarding

Started implementation for forwarding message

* Breaking Commit

This is just a "backup" commit

* First finished

Himalaya can compile successfully now.

* Removed uneccessary files

- Moved everything from msg/mail to msg/model
- Removed uneccessary files

* Renaming

Renamed all "Mail" and "Mails" struct to "Msg" and "Msgs".

* Cleaning

Removed an CLI-Subcommand which can't be used anymore

* Flags

Fixed flags to vector and added the template subcommand back

* Changes to Flags

Changed the datatype from Vec<Flag<'static>> to HashSet<Flag<'static>>, because
each Message/Mail can include only one flag-type, so why not a HashSet for this
job?

* Cargo.toml changes

Fixed the lettre-dependencie which points to the pull request with the given
serde implementation for ContentType (needed for Attachments).

* Fix Template bug and removed unnecessary files.

- Removed the msg/flag/flag.rs file since we can use the imap::types::Flag
  implementation now
- `himalaya template new` printed the template two times. This should be fixed
  now

* Template command

Fixed formatting when printing out template

* Sending Mail

Fixed bug that user can't send a mail

* Msg

Moved the body from the attachment-vector out to an external attribute of the
struct.

* Msg listing and changed Msg::from to Msg::try_from

- Fixed bug that listing didn't showed up addresses in the `From:` field for
  example
- Made each `from` trait function to `try_from` for better error-handling

* Tests

- Fixed tests in `tests/imap_conn.rs`

* Cargo.toml changes, Bug fixes, Documentation

- Updated mailparse to 0.13.4
- Added new "new" function to Account
- Cleaned up some functions (removed some)
- Added Eq and PartialEq derives for msg
- Bugfix:
    It couldn't get the body of some mails, because they were inside a
    multipart/alternative part. Now the mail is iterating through all subparts
    and picks up the firs text/plain "attachment" and uses it as the body.

* Changed Msg attributes viewability

- Made the "main attributes" of the Msg struct public
- Removed to getter functions

* Big envelope changes

- Added documentation
- Removed the getter functions, beacuse the attributes are public

* Documentation and Cleanup

- Removed the `new` constructor of the envelope, since it's actually the same as
  Envelope::default()
- Addded tests and Documentation to Attachments.rs

* Documentation and Tests

- Added docuemntation for msg/body.rs
- Fixed some syntax errors in the doc strings

* General msg

- Added `get_raw` function and `raw` field for the `Msg` struct.
- Fixed raw output of msg
- Started documentation + tests for the Msg struct

* Changes to Msg

- Added Clone derive
- Added documentation for change_to_reply method
- Added tests to change_to_reply method

* Msg tests and Account changes

- Changed `Account::new()` function
- Added more documentation to Msg struct
- Added more tests to Msg struct

* Removed an unknown file

Removed src/.rust_info.json (don't know where it came)

* Msgs finished(?)

Added final documentation to the Msg struct.

* ImapConnector Fix

Fixed the bug, when trying to move a msg, the envelope wasn't applied to the
fetch. Fixed that in the `get_msg` method.

* Msg

- Bug fixes:
    - Adding Message ID and Subject in the to_sendable_msg function

- Removed an println statement for debugging
- Added more error messages

* Cargo.toml

Changed order and added some comments to the dependencies.

* Msg

Removed an unnecessary documentation part.

* Fixed documentation

* Removing non-debugflags for dev profile

Removing debug=false for the dev profile since it was just for me.

* Cleanup

Removed the comment blocks and reduced some comments

* Cleanup

Reformatted some stuff

* Cleanup

Replaced the word "mail" with "msg".

* Formatting

Fixed formatting in src/flag/model.rs file

* Little fix

* Changes and tests

- New "feature":
    If you reply to a reply, the subject won't look like this for example:

        Re: Re: Re: Re: Re: Re: The subject

- Fixed tests. All tests pass now (run `cargo test`)

* Idea(?)

Renamed all <module>_matches/_subcmds to general "matches" and "subcmds()".
All modules have the same: "matches()" and "subcmds()"

* Little fix

Changed the name from "imap_conn" to "conn" by mistake. Fixed that

* Bug fix

When sending a message, himalaya will generate a UUID on its own if there's no
message-id for the message yet.

* Bug fix

Removed angle brackets, since they are added through the lettre library.

* Bugfix

Removed an unnecessary (old) line.

* Cleanup

Removed the last comment blocks.

* Fixed lettre dependencie

* Bugfixes and Error handling

- When calling the msg_interaction function, the user can edit the msg first,
  before the prompt comes up
- Also added a error output, if the msg couldn't be converted into a sendable
  message.

* Error handling

Improved output of error

* Bug fixes, Error Handling

- Improved error handling for the string parsing
- Added attempt to fix the bug that a whitespace is added in the end of an
  address

* Trimming

Added trims to avoid invalid white spaces in the addresses.

* Fixing whitespace bug

All addresses are gonna trimmed before adding to a header now

* Adding encoding, Changed dependencie

- Added encoding for the body part
- Changed the lettre dependencie of lettre to TornaxO7's fork of lettre, because
  the "ContentTypeEncoding" struct needs the "Eq", "Serialize" and "Deserialize"
  derives.

* Improved Error handling

Added a warning, if a message included an unknown attachment.

* Fixed tests

Fixed the documentation for passing the tests.

* Doc change

* Bugfis: When replying, signature is added now as well

* Bugfix: Forwarding Message

When forwarding a message, himalaya, put the signature in the end of the
mail/msg. Now it's added above the '-------Forwarded Message---------' line.

* Readjusted tests and new method

- Changed the way to create a new account:
    - Account::new => Sets signautre to "None"
    - Account::new_with_signature => Sets signature to the given argument

    This makes it more flexible to create specifique accounts for tests for
    example.

- Fixed the tests so all are passing now

* improve sig and sig delim concat process

* add signature delim struct comment

* fix signatures + tests

* fix body and signature new lines

* Adding [serde(rename_all = "camelCase")] to structs

* fix reply indentation and signature new lines

* add default rustfmt.toml

* apply fmt on all the project

* fix msg tests

* Makeing Ctx struct independent

- The Ctx struct doesn't include references anymore. This makes it easier to
    create new Ctx instances by doing the following:

        Ctx {
            <attribute>: <value>,
            .. Ctx::default()
        }

    This helps especially for writing tests.

Also the attributes of the Ctx struct in the main-entry function aren't used
anymore after creating the Ctx struct. So there's no need to have only
references in the Ctx struct.

* Fixing JSON output

- JSON of message includes `hasAttachment` key now
- JSON output shows both body types: Text and Html
- Changed `Body` struct so it can store html and text now.

* Tests

Updated tests with the latest Body implementation

* Fixes

- Removed suspicious println macro in serializer of msg... *cough cough*
- Fixed output in the "read" command
- othe small fixes

* Formatting

Formatted all files

* Msg

- Adding 'get_full_message' method which prints out all information of the
  message in a string

* New Msg-Struct

Adding MsgSerialized, a struct, which represents the "correct" serialized
version of a message because it includes another attribute: `has_attachment`.

* Cleanup

Removed the manual serialize implementation of `Msg` and added a little more
info about the MsgSerialized.

* Test fixes

Adjusted all tests so all are passing now.

* Little changes

- Used a better condition for checking if the message includes attachments or
  not
- format fixes

* Fixing tests and Docs

- Provided more docs
- Refactored tests and added more tests

* Expanding specials

Added more "special characters" which will add some quotes around the name if it
includes at least one of them.

* Fixing test

Improved the detection if the mail-name includes a special character or not.

* Variable renaming

Renamed a variable for better readability.

* Envelope renaming

* Small change

Renamed the variable of the `TryFrom` implementation for the
imap_proto::Envelope.

* Last stuff

- Making the attributes of mboxes independent. We can store them now as well!
- Added more docs
- Added type-safety for flags
- Expanded flags a bit
- Added more tests
- Added a short summary of the file-structure in the beginning of the doc.

* Help command fix

Fixing help command description.

* Small doc change

* Doc fix

Fixing the link to the mbox delimiter.

* Fixing typo

* Doc fix

* Added docs for Output struct

* Fixing tests

Fixing a little test issue

* Formatting changes + doc change

- Removed bold + capital words for logout-doc
- Run format on each *.rs file

* Fixing tests

- Testing the return value of the flags struct as a string doesn't really work
  since it's a HashSet => Converted it into a Vec (in the test) to set the order
  as well.
- Fixed imap test by reverting the changes in the test.

* Error handling

Changed error output when creating an Imap-Connection. Should help debugging :)

* Formatting fixes and refactoring

- Using `trim_end_matches` instead of "pop"s now.
- Executed `cargo fmt`

* Trying to fix test workflow

* Fixes

Updated dependencies with `cargo update` and let cargo point to master branch of
TornaxO7's lettre-fork because this should probably fix the issue with the
nix-build.

* Test fix

Fixing the workflow.

* Workflow fix

Removing semicolon

* Starting workflow

Added a new line to be able to push.

* Workflow

Reverting the workflow command.

* Workflows

Reverting workflow to master workflow.

* let actions/checkout@v2 run first

* Forwarded message's signature misplaced

Changes the order of the signature for forwarded messages.

* Output change

Changed the output if an error occurs.

* Fixing output for template-building

* Template shows raw data with JSON format #23

When printing the message in json, the raw message is printed out as a string
now.

* the_sender_is_not_displayed_properly_in_table_and_json #21

- When displaying the table, we'll look first, if a name exists, if yes => use
  it otherwise use the email address.

- Added the rfc2047_decoder for parsing addresses

* Formatting

Run 'cargo fmt'

Co-authored-by: Clément DOUIN <soywod@users.noreply.github.com>
Co-authored-by: Erik <erik1000@protonmail.com>
2021-09-11 00:35:22 +02:00
Clément DOUIN 97054d3133
expand tilde in config file (#102) 2021-08-05 23:18:28 +02:00
Clément DOUIN 2acd5d71d3
add basic support of xdg-email (#162) 2021-08-04 21:42:59 +02:00
Clément DOUIN 7c88896fcc
release v0.4.0 2021-06-03 16:15:46 +02:00
Clément DOUIN 28448310c7
refactor stdin for send and tpl cmds 2021-05-31 14:19:55 +02:00
Paolo Barbolini c9e1609ea9
update lettre to v0.10.0-rc.1 (#150)
$ cargo update -p lettre --aggressive
    Updating crates.io index
    Updating aho-corasick v0.7.15 -> v0.7.18
    Removing bytes v1.0.1
    Updating cc v1.0.66 -> v1.0.67
      Adding fastrand v1.4.1
    Removing getrandom v0.1.15
    Removing http v0.2.3
    Removing httparse v1.3.5
    Updating httpdate v0.3.2 -> v1.0.0
    Removing hyperx v1.3.0
    Updating idna v0.2.0 -> v0.2.3
    Removing language-tags v0.2.2
    Updating lettre v0.10.0-beta.3 -> v0.10.0-rc.1
    Updating libc v0.2.88 -> v0.2.94
    Updating lock_api v0.4.3 -> v0.4.4
    Updating memchr v2.3.4 -> v2.4.0
    Updating native-tls v0.2.6 -> v0.2.7
    Updating once_cell v1.5.2 -> v1.7.2
    Updating openssl v0.10.32 -> v0.10.34
    Updating openssl-probe v0.1.2 -> v0.1.4
    Updating openssl-sys v0.9.60 -> v0.9.63
    Updating parking_lot_core v0.8.2 -> v0.8.3
    Removing percent-encoding v2.1.0
    Updating quoted_printable v0.4.2 -> v0.4.3
    Removing rand v0.7.3
    Removing rand_chacha v0.2.2
    Removing rand_core v0.5.1
    Removing rand_hc v0.2.0
      Adding redox_syscall v0.2.8
    Updating regex v1.4.2 -> v1.5.4
    Updating regex-syntax v0.6.21 -> v0.6.25
    Updating security-framework v2.0.0 -> v2.2.0
    Updating security-framework-sys v2.0.0 -> v2.2.0
    Updating smallvec v1.6.0 -> v1.6.1
    Updating tempfile v3.1.0 -> v3.2.0
    Removing thread_local v1.0.1
    Updating tinyvec v1.1.0 -> v1.2.0
    Removing unicase v2.6.0
    Updating unicode-bidi v0.3.4 -> v0.3.5
    Updating unicode-normalization v0.1.16 -> v0.1.17
    Updating vcpkg v0.2.11 -> v0.2.12
    Updating version_check v0.9.2 -> v0.9.3
    Removing wasi v0.9.0+wasi-snapshot-preview1
2021-05-14 18:49:31 +02:00
Clément DOUIN 36d3cd6347
bump imap-rust v3.0.0-alpha.3 2021-05-09 21:40:37 +02:00
Clément DOUIN f6b2fa76b7
release v0.3.2 2021-05-08 22:34:00 +02:00
Clément DOUIN 9ea84be081
release v0.3.1 2021-05-04 00:23:37 +02:00
Clément DOUIN 65d0bdc4f0
release v0.3.0 2021-04-28 01:13:34 +02:00
Clément DOUIN fa2f93185f
improve logging, replace log-level by RUST_LOG 2021-04-28 00:47:24 +02:00
Clément DOUIN cddb7bde37
refactor table system (#132)
* init table trait

* add shrink_col_index and max_width method to Table trait

* make unicodes work when shrinking

* improve readability of the table

* replace old table system with new one

* update changelog
2021-04-27 14:54:53 +02:00
Clément DOUIN cc1311c168
release v0.2.7 2021-04-24 23:49:42 +02:00
Clément DOUIN 15c635eb1d
use env_logger for plain output fmt (#126) 2021-04-24 22:54:01 +02:00
Clément DOUIN 9b303f144e
release v0.2.6 2021-04-17 00:09:06 +02:00
Clément DOUIN e8ae4b025f
release v0.2.5 2021-04-12 00:21:08 +02:00
Clément DOUIN 062108039b
release v0.2.4 2021-04-09 00:51:39 +02:00
Clément DOUIN f26051685c
refactor output system (#74) 2021-04-09 00:15:16 +02:00
Clément DOUIN 402f9ef4aa
release v0.2.3 2021-04-08 14:29:04 +02:00
Clément DOUIN 994141f852
fix unicode issue (#71) 2021-04-08 12:59:44 +02:00
Alex Wennerberg 14d8a3fecd
remove unused clap depdenencies (#67)
* Remove unused clap depdenencies

* Add color to clap enabled features
2021-04-07 08:05:36 +02:00
Clément DOUIN 0d763a1ab8
release v0.2.2 2021-04-04 17:46:02 +02:00
Clément DOUIN 2850ae01fd
implement add attachement to msg feature 2021-04-03 22:30:57 +02:00
Clément DOUIN 1e5cce0205
improve errors management 2021-03-12 23:01:01 +01:00
Clément DOUIN b6cbfc26be
release v0.2.0 2021-03-10 23:08:31 +01:00
Clément DOUIN 10c523fd2c
improve read and attachments commands 2021-03-10 16:46:47 +01:00
Clément DOUIN 5e948b5cc1
improve list msgs perf, remove flags column 2021-01-18 12:10:16 +01:00
Clément DOUIN 84df58cf81
add json serializer lib (prepare #18) 2021-01-17 10:03:19 +01:00
Clément DOUIN 60af11bd47
make table responsive 2021-01-16 19:46:55 +01:00
Clément DOUIN 2709faf30a
improve errors management 2021-01-12 23:49:44 +01:00
Clément DOUIN 125c4e2b0e
set up smtp #4 + write email feature #8 2021-01-03 23:19:31 +01:00
Clément DOUIN 0a48df0567
add text and html previews 2021-01-03 17:28:42 +01:00
Clément DOUIN d94b86ca4e
add help entry to readme 2021-01-03 00:54:29 +01:00
Clément DOUIN d8116c6103
set up cli arg parser #15 2021-01-03 00:45:43 +01:00
Clément DOUIN 2970828db9
add new emails listing feature #6 2021-01-02 19:21:30 +01:00
Clément DOUIN 2a567040ac
set up imap connection 2020-12-25 22:39:16 +01:00
Clément DOUIN f9e75ee3b4
deserialize config from toml #1 #2 2020-12-25 00:31:38 +01:00
Clément DOUIN 87f1d3171e
init project, init toml config parser 2020-12-24 00:55:57 +01:00