Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Configuration wizard #432

Merged
merged 19 commits into from
Jan 27, 2023
Merged

Configuration wizard #432

merged 19 commits into from
Jan 27, 2023

Conversation

kmaasrud
Copy link
Collaborator

Another try at #312 with the new API, namely greeting the user with a wizard when no configuration can be found.

I'm aiming at making the wizard flexible wrt. the configuration values, but I hope this PR gives us a chance to properly evaluate the config structure. I feel that we should be able to streamline it a bit, but I'm not sure how (yet.)

With this change, himalaya uses the crate `dirs` in order to follow XDG
specifications on Unix, Known Folder on Windows and Standard Directories
on MacOS. This gives us much smoother cross-platform support. It still
has the same fallbacks (`$HOME/.config/himalaya/config.toml` and
`$HOME/.himalayarc`.)

Additionally, this commit removes a bit of in-house code-bloat.
@soywod
Copy link
Owner

soywod commented Dec 16, 2022

Linked issue: https://todo.sr.ht/~soywod/himalaya/19.

Copy link
Owner

@soywod soywod left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Really nice job 💪 I just left some minor comments. Some of the are related to formatting, I am wondering if it cannot be fixed by updating the rustfmt config. Some comment are related to printing (with println!), I think we should use the Printer instead. If I do not mistake, println! is just a macro for printing stuff in the stdout, whereas the Printer prints in a writer (which is really useful for testing, see ui/table/table.rs tests).

I will test the feature and potentially review a second time if I find some issues. Thanks a lot for your work 🙏

src/config/wizard/mod.rs Show resolved Hide resolved
src/config/wizard/mod.rs Show resolved Hide resolved
src/config/wizard/mod.rs Outdated Show resolved Hide resolved
src/config/wizard/mod.rs Show resolved Hide resolved
src/config/wizard/mod.rs Show resolved Hide resolved
src/config/wizard/mod.rs Show resolved Hide resolved
src/config/wizard/mod.rs Outdated Show resolved Hide resolved
src/config/wizard/mod.rs Outdated Show resolved Hide resolved
src/config/wizard/mod.rs Outdated Show resolved Hide resolved
src/config/wizard/notmuch.rs Outdated Show resolved Hide resolved
@soywod soywod marked this pull request as ready for review January 27, 2023 15:00
@soywod soywod merged commit 48d6032 into soywod:develop Jan 27, 2023
soywod added a commit that referenced this pull request Feb 8, 2023
* update codebase with email lib changes (#431)

update himalaya-lib, rename remaining mbox vars

add missing methods from lib

update changelog

* fixed missing folder aliases #430

* improve README links

* fix README repology link

* fix README repology table

* fix README repology table 2

* center README repology table

* fix README cosmetic issues

* fix README cosmetic issues 2

* fix README title

* fix README wiki links

* fix lock file

* prepare v0.6.2

* fix ci

* try some musl builds #356

* add musl build to artifact #356

* add musl build to deployment pipeline #356

* migrate clap v4, add man command #419

* add option to choose color manually #407

* update links and badges

* update matrix badge

* add github release version badge

* update badges links

* fix code bloc type

* fix tests

* fix cargo lock

* generate all man pages for all subcommands #419

* fix query and headers arg parsers

* fix invalid flags and options due to clap v4 migration

* fix tests

* remove -l|--log-level option

* refactor contributing guide

* update lib

* fix flags string printer

* make commands read, attachments, copy, move and delete accept multiple ids

* fix ids arg parser

* fix flags subcommands conflicts between ids and flags

* flip back copy and move arguments

* add issue template (#439)

* update lib, prepare for sync feature

* update himalaya lib, fix senders and config

* update lock file himalaya lib

* fix sync enabling issues

* fix wrong imap backend init in main file

* fix notmuch backend post sync feature

* configuration wizard (#432)

* make DeserializedConfig::path more robust

With this change, himalaya uses the crate `dirs` in order to follow XDG
specifications on Unix, Known Folder on Windows and Standard Directories
on MacOS. This gives us much smoother cross-platform support. It still
has the same fallbacks (`$HOME/.config/himalaya/config.toml` and
`$HOME/.himalayarc`.)

Additionally, this commit removes a bit of in-house code-bloat.

* add wizard entrypoint and basic structure

* wip

* feat: impl Serialize for all DeserializedConfigs

* feat: select default account and write to file

* feat: add SMTP part of wizard

* build: update lockfile

* refactor: separate out multiple files for wizard

* style: friendlier and prettier messages

* feat: add maildir part of wizard

* feat: add notmuch part of wizard

* chore: clippy lints and reorder prompts

* fix: contrived solution to serializing None values

* fix: allow empty Option field when deserializing

* style: address PR review comments

* fix: utilize notmuch lib in finding database path

* fix notmuch wizard

---------

Co-authored-by: Clément DOUIN <clement.douin@posteo.net>

* add account sync progress bar

* improve sync spinner

* make the sync dry run flag show patches without applying them

* update himalaya lib, increase imap session pool size

* add disable cache flag

* add nlnet logo in readme

* update himalaya lib deps, make use of sync reports

* prepare v0.7.0

* bump rustc v1.67.0 and clap v4.1.4

* bump himalaya lib v0.5.1, fix flake lock file

---------

Co-authored-by: janabhumi <dmitriy@ideascup.me>
Co-authored-by: Knut Magnus Aasrud <km@aasrud.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
2 participants