devtool ๐
A modern, efficient developer tool written in Rust that unifies the update process for your development environment tools and package managers with a single command. Say goodbye to multiple update commands and let devtool
keep everything up to date.
English | ็ฎไฝไธญๆ
โจ Features
- One-command updates: Run
devtool
to automatically update multiple supported tools - ๐ Parallel execution: Default parallel execution for up to 10x faster updates with concurrent tool execution
- Smart detection: Automatically detects installed tools (Homebrew, rustup, mise) and skips uninstalled ones
- Enhanced progress feedback: Multi-progress bars with real-time updates and elapsed time tracking
- ๐ Detailed upgrade tracking: Shows exactly what was upgraded with before/after version information
- ๐ Smart version detection: Only performs version comparison when actual upgrades occur, improving performance
- ๐ Comprehensive logging: Each step's output is logged for easy troubleshooting
- ๐๏ธ Unified log storage: All log files are stored in a unified location (
~/Library/Caches/devtool/
on macOS,~/.cache/devtool/
on Linux) - ๐ Organized by tool: Log files are organized by tool (Homebrew, Rustup, Mise) with timestamped directories
- ๐ Latest symlinks: Each tool directory includes a
latest
symlink pointing to the most recent execution - ๐ Execution summary: Clear summary showing which tools were updated, already latest, or failed
- ๐งช Dry run mode: Use
--dry-run
to preview steps without making changes - โ๏ธ Flexible execution modes: Choose between parallel (default) or sequential execution with
--sequential
- ๐ง Configurable concurrency: Set the number of concurrent jobs with
--jobs
(default: 3) - ๐ก External status monitoring: Query real-time status with
devtool progress-status
for integration with other tools - ๐ Multi-language support: Automatically detects system language and displays Chinese or English interface
- โจ๏ธ Shell completion: Comprehensive completion support for bash, zsh, fish, powershell, elvish, and nushell
- โน๏ธ Version information: Check version with
devtool -V
ordevtool --version
- ๐ User feedback system: Built-in feedback collection with
devtool feedback
command - ๐ Issue templates: Standardized GitHub Issues templates for bug reports and feature requests
- ๐ Feedback analysis: Tools for analyzing user feedback and improving the product
๐ ๏ธ Supported Tools
devtool
currently supports automatic detection and updating of:
- Homebrew: Update index, upgrade packages, cleanup old versions
- Rust (rustup): Update all installed Rust toolchains (stable, nightly, beta)
- Mise (formerly rtx): Run
mise up
to update all managed languages and tools (Node.js, Python, etc.)
๐ฆ Installation
From crates.io (Recommended)
Make sure ~/.cargo/bin
is in your PATH
environment variable.
From source
๐ Usage
Basic Usage
Simply run devtool
in your terminal to start the update process:
This is equivalent to running devtool update
.
Parallel Execution (Default in v0.7.0)
Parallel execution is now the default mode for faster updates:
# Default parallel execution with 3 concurrent jobs
# Control the number of concurrent jobs
# Sequential execution (override parallel mode)
# Parallel execution with dry run
Performance Benefits:
- Up to 10x faster execution with parallel mode (default)
- Configurable concurrency with
--jobs
parameter (default: 3) - Choose between parallel (default) or sequential execution
- Intelligent dependency management
- Maintains all safety features of sequential mode
Command Line Options
Customize devtool
behavior with these options:
Option | Short | Description |
---|---|---|
--dry-run |
-n |
Show steps that would be executed without actually running them |
--verbose |
-v |
Print detailed output for each step during execution |
--version |
-V |
Show version information |
--keep-logs |
Keep log files for each step, stored in unified cache directory by default | |
--no-banner |
Don't show startup banner | |
--compact |
Use more compact output format for non-interactive environments | |
--parallel |
Execute update steps in parallel (default) | |
--sequential |
Execute update steps sequentially (override parallel mode) | |
--jobs |
Number of concurrent jobs for parallel execution (default: 3) | |
--no-color |
Disable colored output | |
--help |
-h |
Show help information |
๐ Upgrade Details Tracking
devtool
now provides detailed upgrade tracking, showing exactly what was upgraded with before/after version information:
Upgrade Detail Display
When upgrades occur, devtool
shows detailed information about what was changed:
)
Smart Version Detection
- Performance optimized: Only performs version comparison when actual upgrades occur
- Accurate tracking: Distinguishes between index updates and actual package upgrades
- Unified format: All tools (Homebrew, Rustup, Mise) use consistent upgrade detail format
- Multiple formats: Supports both JSON and text formats for upgrade details
Supported Upgrade Types
- Version upgrades:
package: old_version โ new_version
- New installations:
package: new installation โ version
- Toolchain updates: Shows Rust toolchain version changes
- Tool updates: Shows Mise-managed tool version changes
๐ Log Storage System
devtool
provides a comprehensive log storage system for easy troubleshooting and debugging:
Unified Log Storage
All log files are stored in a unified location:
- macOS:
~/Library/Caches/devtool/
- Linux:
~/.cache/devtool/
Directory Structure
Logs are organized by tool with timestamped directories:
~/Library/Caches/devtool/
โโโ homebrew/
โ โโโ 1761008090/
โ โ โโโ brew_cleanup.log
โ โ โโโ brew_detailed_debug.log
โ โ โโโ brew_outdated.log
โ โ โโโ brew_update.log
โ โ โโโ brew_upgrade.log
โ โ โโโ outdated_packages.json
โ โโโ latest -> 1761008090/
โโโ rustup/
โ โโโ 1761008078/
โ โ โโโ rustup_update.log
โ โโโ latest -> 1761008078/
โโโ mise/
โ โโโ 1761008076/
โ โ โโโ mise_up.log
โ โโโ latest -> 1761008076/
โโโ feedback/
โโโ devtool_feedback_*.md
Log File Types
Each tool generates specific log files:
-
Homebrew:
brew_update.log
: Homebrew update outputbrew_upgrade.log
: Homebrew upgrade outputbrew_cleanup.log
: Homebrew cleanup outputbrew_outdated.log
: Outdated packages detectionbrew_detailed_debug.log
: Detailed debugging informationoutdated_packages.json
: JSON format of outdated packages
-
Rustup:
rustup_update.log
: Rustup update output
-
Mise:
mise_up.log
: Mise update output
Using Logs for Troubleshooting
-
Access latest logs: Use the
latest
symlink for the most recent execution -
View specific log files: Check individual log files for detailed information
-
Historical logs: Browse timestamped directories for previous executions
Enabling Log Storage
Use the --keep-logs
flag to enable log storage:
This will save all log files to the unified cache directory for later analysis.
Examples
Standard update (parallel execution by default):
& &
)
)
)
)
)
Dry run:
User feedback:
# Interactive feedback collection
# Direct feedback submission
# Feature request
Check version:
# Output: devtool 0.3.3
Monitor progress (for scripts or status bars):
Run devtool
in one terminal, query progress in another:
# Output: Progress status: ProgressStatus { state: "update", percent: Some(60), done: Some(3), total: Some(5), desc: Some("Action: Cleanup old versions"), ts: Some("2025-10-04T13:17:45.123+08:00") }
Language support:
The tool automatically detects your system language and displays the interface in Chinese or English accordingly.
๐ Shell Completion
devtool
provides comprehensive shell completion support for all major shells:
Generate Completion Scripts
# Generate completion for your shell
Setup Completion
Bash:
# Add to ~/.bashrc
Zsh:
# Add to ~/.zshrc
Fish:
# Add to ~/.config/fish/config.fish
|
Nushell:
# Add to your config.nu
use ~/.config/nushell/completions/devtool-completions.nu *
๐ง Troubleshooting
Command not found
If you get command not found: devtool
after installation:
# Check if ~/.cargo/bin is in your PATH
# Add to your shell profile (e.g., ~/.bashrc, ~/.zshrc)
# Reload your shell configuration
Permission errors
If you encounter permission errors:
# Make sure the binary is executable (Unix/Linux/macOS)
# On macOS, if blocked by Gatekeeper:
No tools detected
devtool
only updates tools that are already installed. To get started:
Updates fail
If updates fail consistently:
- Try running the tool's update command manually to see the actual error
- Check your internet connection
- Verify you have sufficient disk space
- Run with
--verbose
flag for detailed output:devtool --verbose
- Check log files in
~/.cache/devtool/logs/
for detailed error messages
Language/locale issues
Force English output if automatic language detection doesn't work:
LANG=en_US.UTF-8
๐ก Tips & Tricks
Create an alias
Add to your shell profile for quick access:
Automated updates
Using cron (Linux/macOS):
# Edit crontab
# Add this line to run daily at 9 AM
Using launchd (macOS):
Create ~/Library/LaunchAgents/com.devtool.update.plist
:
Label
com.devtool.update
ProgramArguments
/Users/yourname/.cargo/bin/devtool
StartCalendarInterval
Hour
9
Minute
0
Then load it: launchctl load ~/Library/LaunchAgents/com.devtool.update.plist
Integration with other tools
In Makefiles:
: :
: :
In scripts:
#!/bin/bash
# Safe update script
if ; then
else
fi
Notifications on completion
macOS:
&&
Linux (with notify-send):
&&
โ FAQ
Q: Does devtool work on Windows?
A: Partial support. Rustup and Mise work, but Homebrew is not available on Windows. We plan to add winget support in the future.
Q: Is it safe to run devtool?
A: Yes! devtool only calls the standard update commands for each tool. Use --dry-run
to see exactly what will be executed before running.
Q: How long does it take?
A: Typically 30-90 seconds depending on how many updates are available and your internet speed.
Q: Can I run it in parallel?
A: Not yet, but parallel execution is planned for v0.5.0, which will significantly reduce update time.
Q: Does it update system packages (apt, yum, etc.)?
A: Not yet, but system package manager support is planned for v0.6.0.
Q: Where are log files stored?
A: Log files are stored in ~/.cache/devtool/logs/
(Linux/macOS) or %LOCALAPPDATA%\devtool\logs\
(Windows).
Q: How do I report a bug?
A: Please open an issue on GitHub with details about your environment and the error.
Q: How can I contribute?
A: See our CONTRIBUTING.md guide! We welcome bug reports, feature requests, and pull requests.
๐ Documentation
- Architecture Overview - System design and module structure
- Contributing Guide - How to contribute to the project
- Roadmap - Future development plans
- Changelog - Version history and release notes
๐ค Contributing
Contributions are welcome! Please feel free to submit issues and pull requests on the GitHub repository.
See CONTRIBUTING.md for detailed guidelines on:
- Reporting bugs
- Suggesting features
- Submitting pull requests
- Development setup
- Adding new package managers