6 stable releases
Uses new Rust 2024
| 1.2.0 | Oct 11, 2025 |
|---|---|
| 1.1.2 | May 7, 2025 |
| 1.1.1 | Apr 4, 2025 |
| 1.1.0 | Feb 3, 2025 |
| 1.0.2 | Apr 28, 2024 |
#480 in Command line utilities
48KB
654 lines
yesser-todo-cli
a CLI app for managing your tasks
Publishing (for developers)
Crates.io
Note: Make sure you're logged in with cargo login
First, run cargo package to generate a .crate file.
Then, run cargo publish to upload the crate to crates.io.
Homebrew
First, create a GitHub release to make a tag for Homebrew to download.
Then, download the source code as a .tar.gz file, generate a sha256 hash, and add the hash and link to the formula.
Next, on both an ARM64 macOS machine run brew install --build-bottle --bottle-arch=arm64_sonoma yesser-todo-cli.
On a x64 Linux machine run brew install --build-bottle --bottle-arch=x86_64_linux yesser-todo-cli.
On both machines, run brew bottle yesser-todo-cli and upload the file to GitHub releases.
Generate a sha256 hash for the file and replace the corresponding field in the formula.
Make sure to change the root_url as well. Also, change the version in the test's assertion.
Windows build
On a x64 Windows machine, install cargo-wix with cargo install cargo-wix and run cargo wix.
Next, upload the generated .msi file to the GitHub release.
Fedora COPR build
- On a Fedora machine with rpm build tools and rust2rpm installed, run the update.sh script located at https://github.com/yesser-studios/rpms/tree/main/yesser-todo-cli.
- Commit and push the changes. COPR should build the new commit automatically.
Server
[!CAUTION] Server functionality is not yet production-ready.
Accessing the server multiple times at the same time will cause race conditions and potentially edit incorrect tasks and/or crash the server.
Usage guide:
Run the yesser-todo-server crate. This will open port 6982 and listen for HTTP traffic.
Endpoints
GET /tasksreturns a JSON containing an array ofTaskobjects, such as:[{name: "example", done: true}]POST /addaccepts a body JSON representation of a string, such as:"example". This string will be used as the name for a new task. Returns a JSON of the generatedTaskobject.DELETE /removeaccepts a body JSON representation of an integer, such as:5. The task with the index of the given integer will be deleted. The index can be queried withGET /index(see below)POST /doneaccepts a body JSON representation of an integer, such as:5. The task with the given index will be marked as done. Returns a JSON of the modifiedTaskobject.POST /undoneaccepts a body JSON representation of an integer, such as:5. The task with the given index will be marked as undone. Returns a JSON of the modifiedTaskobject.DELETE /clearwill delete all tasks.DELETE /cleardonewill delete all tasks marked as done.GET /indexaccepts a body JSON representation of a string. It will return the index at which the given string first appears.
Dependencies
~9–24MB
~273K SLoC