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: Use
--parallel
flag for up to 3x faster updates with concurrent tool execution - Smart detection: Automatically detects installed tools (Homebrew, rustup, mise) and skips uninstalled ones
- Beautiful progress feedback: Real-time progress bars and status updates in the terminal
- Detailed logging: Each step's output is logged for easy troubleshooting
- 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 - 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
- Version information: Check version with
devtool -V
ordevtool --version
đ ī¸ Supported Tools
devtool
currently supports automatic detection and updating of:
- Homebrew: Update index, upgrade packages, cleanup old versions
- Rust (rustup): Update
stable
Rust toolchain - 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 (New in v0.6.0)
For faster updates, use the new parallel execution mode:
# Enable parallel execution with default 4 concurrent jobs
# Control the number of concurrent jobs
# Parallel execution with dry run
Performance Benefits:
- Up to 3x faster execution with parallel mode
- Configurable concurrency with
--jobs
parameter - 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 ~/.cache/devtool/ by default |
|
--no-banner |
Don't show startup banner | |
--compact |
Use more compact output format for non-interactive environments | |
--parallel |
(Not implemented) Execute update steps in parallel | |
--no-color |
Disable colored output | |
--help |
-h |
Show help information |
Examples
Standard update:
[========================================] ) |
)
)
)
)
)
)
Dry run:
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.
đ§ 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