devtool 0.3.1

A CLI tool for development in update rustup toolchain , mise maintained tools and hombrew packages.
devtool-0.3.1 is not a library.

devtool-rs 🚀

devtool-rs 是一个用 Rust 编写的现代化、高效的开发者工具,旨在通过一个简单的命令,统一更新您开发环境中常用的工具链和软件包管理器。告别繁琐的多个更新命令,让 devtool 为您保持一切最新。


✨ 功能特性

  • 一键更新: 只需运行 devtool,即可自动更新多个受支持的工具。
  • 智能检测: 自动检测系统中已安装的工具(如 Homebrew, rustup, mise),并跳过未安装的。
  • 清晰的进度反馈: 在终端中提供美观的实时进度条和状态更新。
  • 详细的日志记录: 每个步骤的输出都会被记录到日志文件中,方便问题排查。
  • 执行摘要: 命令完成后,提供清晰的摘要,告知您哪些工具被更新、哪些已是最新或执行失败。
  • 试运行模式 (Dry Run): 使用 --dry-run 标志可以查看将要执行的步骤,而不会实际更改任何内容。
  • 外部状态监控: 通过 devtool progress-status 命令,可以查询当前更新任务的实时状态,方便与其他工具(如状态栏脚本)集成。

🛠️ 支持的工具

devtool 目前支持自动检测并更新以下工具:

  • Homebrew: 更新索引、升级软件包、清理旧版本。
  • Rust (rustup): 更新 stable 版本的 Rust 工具链。
  • Mise (前身为 rtx): 运行 mise up 来更新由它管理的所有语言和工具(如 Node.js, Python 等)。

📦 安装

确保您的系统中已安装 Rust 和 Cargo。然后,您可以通过 Cargo 从 crates.io 安装 devtool

cargo install devtool

安装完成后,请确保 ~/.cargo/bin 目录在您的 PATH 环境变量中。

🚀 使用方法

基本用法

在终端中直接运行 devtool 即可开始更新流程:

devtool

这等同于运行 devtool update

命令行选项

您可以通过以下选项自定义 devtool 的行为:

选项 简写 描述
--dry-run -n 显示将要执行的步骤,但不实际运行。
--verbose -v 在执行时实时打印每个步骤的详细输出。
--keep-logs 保留每个步骤的日志文件,默认存放在 ~/.cache/devtool/ 目录下。
--no-banner 运行时不显示启动横幅。
--compact 使用更紧凑的输出格式,适合在非交互式环境或不支持 ANSI 的终端中运行。
--parallel (暂未实现) 并行执行更新步骤。
--no-color 禁用彩色输出。
--help -h 显示帮助信息。

示例

标准更新:

$ devtool
🚀 开始 devtool 更新(Rust 版本):2023-10-27 15:30:00
📋 将执行 5 个步骤:
  1) Homebrew:更新索引
  2) Homebrew:升级软件包
  3) Action:清理旧版本
  4) Rust:更新 stable 工具链
  5) Mise:更新托管工具
[========================================] 5/5 (100%) | Mise:更新托管工具

🎉 更新完成:2023-10-27 15:32:10
 已更新:Homebrew:升级软件包, Mise:更新托管工具
🛠️ 已执行动作:Action:清理旧版本
⚠️ 已是最新:Homebrew:更新索引, Rust:更新 stable 工具链
🔎 Mise 简要更新:node: 20.8.0 → 20.9.0, python: 3.11.5 → 3.11.6

试运行:

 devtool --dry-run

查看实时进度 (用于脚本或状态栏):

在一个终端运行 devtool,在另一个终端可以查询进度:

 devtool progress-status
Progress status: ProgressStatus { state: "update", percent: Some(60), done: Some(3), total: Some(5), desc: Some("Action:清理旧版本"), ts: Some("2023-10-27T15:31:05.123+08:00") }

🤝 贡献

欢迎提交问题 (Issues) 和拉取请求 (Pull Requests)!如果您有任何想法或建议,请随时在 GitHub 仓库中提出。

📜 许可证

本项目采用 MIT License 和 Apache License 2.0 双重许可。