aion-seed

Crates.ioaion-seed
lib.rsaion-seed
version0.1.0
created_at2025-09-10 12:45:38.610743+00
updated_at2025-09-10 12:45:38.610743+00
descriptionA CLI TodoList tool written in Rust with task management, timed reminders, and background service support
homepagehttps://github.com/Zephyruston/aion-seed
repositoryhttps://github.com/Zephyruston/aion-seed
max_upload_size
id1832476
size120,994
Zichao Lan (Zephyruston)

documentation

https://github.com/Zephyruston/aion-seed/blob/main/README.md

README

Aion-Seed CLI TodoList 工具

「把未来种在当下」

Aion-Seed 是一个用 Rust 编写的命令行界面 (CLI) 待办事项列表 (TodoList) 工具。它提供了一个简单、高效且功能丰富的任务管理解决方案,特别适用于服务器环境和终端用户。

English Version

功能特性

  • 任务管理: 添加、查看、编辑和删除任务
  • 📅 定时提醒: 为任务设置截止时间和提醒
  • 🌍 时区支持: 自动处理本地时区,正确显示和解析时间
  • 💾 本地存储: 任务数据安全存储在 ~/.aion-seed/tasks.json
  • 🔔 通知系统: 定时检查并提醒过期任务
  • 🚀 后台服务: 支持后台运行和开机自启动 (Linux systemd)
  • 🖥️ 无头服务器支持: 适用于无头服务器环境的终端提醒
  • 🧪 完整测试: 包含单元测试和集成测试,确保代码质量
  • 🔧 Shell 补全: 支持多种 Shell 的命令补全功能

安装

从源码编译

# 克隆仓库
git clone https://github.com/Zephyruston/aion-seed.git
cd aion-seed

# 编译项目
cargo build --release

# 安装到系统路径 (可选)
cargo install --path .

使用方法

基本命令

添加任务

# 添加简单任务
aion-seed add "完成项目报告"

# 添加带截止时间的任务
aion-seed add "团队会议" -t "2025-09-11 09:00"

查看任务

# 查看未完成的任务 (默认)
aion-seed list

# 查看所有任务 (包括已完成)
aion-seed list --all

# 只查看已完成的任务
aion-seed list --completed

编辑任务

# 标记任务为已完成
aion-seed edit <task-id> --done

# 标记任务为未完成
aion-seed edit <task-id> --undone

# 修改任务描述
aion-seed edit <task-id> -d "新的任务描述"

# 修改截止时间
aion-seed edit <task-id> -t "2025-09-12 10:00"

删除任务

# 删除任务
aion-seed delete <task-id>

注意: <task-id> 可以是完整的 UUID 或前 8 个字符的简短 ID。

Shell 补全

Aion-Seed 支持多种 Shell 的命令补全功能:

# 为 Bash 生成补全脚本
aion-seed completions bash

# 为 Zsh 生成补全脚本
aion-seed completions zsh

# 为 Fish 生成补全脚本
aion-seed completions fish

# 为 PowerShell 生成补全脚本
aion-seed completions powershell

# 为 Elvish 生成补全脚本
aion-seed completions elvish

要永久启用补全功能,请将生成的补全脚本添加到您的 Shell 配置中:

Bash

# 生成并保存补全脚本
aion-seed completions bash > ~/.aion-seed-completions.bash

# 在 ~/.bashrc 中添加以下行
source ~/.aion-seed-completions.bash

Zsh

# 生成并保存补全脚本
aion-seed completions zsh > ~/.aion-seed-completions.zsh

# 在 ~/.zshrc 中添加以下行
source ~/.aion-seed-completions.zsh

Fish

# 生成补全脚本并保存到 Fish 的补全目录
aion-seed completions fish > ~/.config/fish/completions/aion-seed.fish

服务管理

检查过期任务

# 手动检查并显示过期任务
aion-seed check

后台服务 (Linux systemd)

# 安装开机自启动服务 (推荐先执行)
aion-seed service install

# 启动后台服务
aion-seed service start

# 停止后台服务
aion-seed service stop

# 查看服务状态
aion-seed service status

# 卸载开机自启动服务
aion-seed service uninstall

注意:

  • 服务功能目前只支持 Linux 系统的 systemd
  • 服务会安装到用户级别 (~/.config/systemd/user/)
  • 服务会在用户登录时自动启动
  • 可以使用 systemctl --user 命令直接管理服务

数据存储

任务数据存储在用户主目录下的 ~/.aion-seed/tasks.json 文件中。该文件包含所有任务的详细信息,包括:

  • 任务 ID (UUID)
  • 任务描述
  • 创建时间
  • 更新时间
  • 截止时间 (可选)
  • 完成状态

通知系统

Aion-Seed 的通知系统设计用于在无头服务器环境中工作:

  1. 终端直接输出: 直接在所有活跃终端中显示包含具体任务名称的闪烁提醒信息
  2. 系统日志: 将提醒记录到系统日志 (syslog)
  3. 通知文件: 在 ~/.aion-seed/notifications.log 中记录通知历史
  4. 智能通知: 系统只在任务第一次到期时发送通知,避免重复提醒

示例使用场景

日常任务管理

# 添加一些任务
aion-seed add "检查服务器状态"
aion-seed add "备份数据库" -t "2025-09-11 02:00"
aion-seed add "更新系统补丁" -t "2025-09-12 01:00"

# 查看所有任务
aion-seed list

# 完成一个任务
aion-seed edit a1b2c3d4 --done

# 检查过期任务
aion-seed check

服务器维护

# 安装开机自启动服务
aion-seed service install

# 启动后台服务进行定时检查
aion-seed service start

# 查看服务运行状态
aion-seed service status

开发信息

项目结构

src/
├── main.rs          # 主程序入口
├── cli.rs           # CLI 命令定义
├── models.rs        # 数据模型
├── storage.rs       # 本地存储管理
├── commands.rs      # 任务管理逻辑
└── service.rs       # 后台服务和通知系统

依赖项

  • clap: CLI 参数解析
  • serde + serde_json: JSON 序列化/反序列化
  • uuid: 唯一标识符生成
  • chrono: 日期时间处理
  • tokio: 异步运行时
  • anyhow: 错误处理
  • dirs: 系统目录获取

开发依赖

  • tempfile: 测试中的临时文件管理

许可证

本项目采用 MIT 许可证。详情请参阅 LICENSE 文件。

贡献

欢迎提交 Issue 和 Pull Request 来改进这个项目!

测试

项目包含完整的测试套件:

运行单元测试

cargo test --bin aion-seed

运行集成测试

cargo test --test integration_tests

运行所有测试

cargo test

系统要求

  • Linux: 完全支持,包括 systemd 服务管理
  • 其他系统: 基本功能支持,但不包括开机自启动功能
Commit count: 1

cargo fmt