wallabag-rs
Client tools for Wallabag in Rust.
About
This repository is a cargo workspace. See READMEs in subdirectories for information about each package. The tools included are:
wallabag-api
This is a client library to work directly with the Wallabag server API from Rust in a type-safe manner.
It is currently fully operational and manually tested with the Wallabag instance running at Framabag. The API might change at any time.
wallabag-backend
A backend library designed to be shared between client software (also to be developed here). It handles storing entries in a sqlite database, syncing with a Wallabag server, and aims to provide helpful abstractions over common actions so client software never has to directly touch the client API or database.
wallabag-cli
(WIP)
A command line client for Wallabag. Currently a work in progress, but already has some proof of concept actions developed (including saving a URL to Wallabag).
wallabag-tui
(Unimplemented)
It is planned to develop a command line interactive client with a TUI. Work will happen on this once the backend is more stable.
wallabag-gtk
(Unimplemented)
Ultimately I would like to develop a full suite of client software, including a GUI client, probably with GTK...
Documentation
Everything should have extensive documentation, making the most of Rust's
excellent inline docs support. Run cargo doc to generate them, or view them
on docs.rs (links in readme of respective crates or from crates.io).
Developing
Everything works on stable Rust, 2018 edition, so you will need the latest stable rust compiler to build the project.
At the moment everything is managed by standard cargo commands - build,
test, run, etc. It is in a workspace, so the binary/crate to build/run
needs to be specified. For example:
cargo run --bin wallabag-cli -- sync
Examples
There are some examples (in a crate's examples/ directory) that can be run
like so:
cargo run --example save_url -- [args]
Tests
Currently only a few unit tests have been developed... I'm really not sure how to automate testing the backend and api. If you know how and willing to contribute or teach me how, or if you know of resources for integration testing in Rust, please contact me!! :)
Contributing
Any feedback or comments appreciated! Also feel free to open issues and/or contact me with any questions, feedback, bug reports, feature requests, etc. Since everything is still in early development, if you'd like to contribute code, please open an issue first so everyone can be on the same page.
License
Licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.