Blacksmith v0.2.1 - First Public Release
🎉 Blacksmith v0.2.1 - First Public Release
I'm excited to announce the first public release of Blacksmith! 🔨
Blacksmith v0.2.1 is a cross-platform CLI tool that streamlines the installation of development and cybersecurity tools after a fresh OS install. This release introduces major cross-platform enhancements, making it easier than ever to create and manage tool sets that work seamlessly across Windows and Linux.
🚀 What's New
Cross-Platform Set Definitions
Blacksmith now supports true cross-platform tool sets with OS-specific manager preferences:
target_os- Define which operating systems your set supports (["windows"],["linux"], or["windows", "linux"])preferred_managers- Specify preferred package managers per OS (e.g., preferwingeton Windows,apton Linux)managers_supported- Limit installation to specific package managers
Sets are now package-manager-agnostic by default, automatically using the best available manager for each OS.
Enhanced Create Command
The blacksmith create command has been completely redesigned with a unified search experience:
- Unified search - Search across all selected managers simultaneously
- Multi-select - Select packages from multiple managers at once using checkboxes
- OS selection - Choose Windows, Linux, or both when creating sets
- Manager selection - Select which package managers to target for each OS
- Smart grouping - Automatically groups the same package from different managers
- Cancel/exit option - Easily cancel set creation without saving
New Commands
-
blacksmith info <set>- View detailed information about sets including:- OS compatibility badges
- Preferred package managers
- Package count and sample packages
- Manager preferences per OS
-
blacksmith export <set> --format <format>- Export sets to native package manager formats:winget- JSON array of package IDschocolatey/choco- XML packages.config formatapt- Plain text listpacman- Plain text listscoop- JSON array
Smart Manager Selection
Blacksmith now uses intelligent manager selection with:
- Preference-based selection - Respects
preferred_managersfrom set configuration - OS-specific defaults - Falls back to sensible defaults (e.g.,
winget>chocolatey>scoopon Windows) - Automatic fallback - If preferred manager isn't available, tries the next one in order
- OS compatibility checking - Warns if set isn't compatible with your OS (can be overridden with
--force) - Manager filtering - Respects
managers_supportedto limit which managers are considered
Enhanced Search
The blacksmith search command now includes:
- Manager aliases - Use
chocoforchocolatey,dnfforyum, etc. - OS-aware errors - Clear messages when requesting OS-specific managers (e.g.,
apton Windows) - Improved display - Results grouped by manager with descriptions
Update Support
All package managers now support updating installed packages:
- Check before install - Always checks if a package is already installed
- Update option - Prompt to update if package is installed and update is available
- Reinstall option - Option to reinstall if needed
- Skip option - Skip already installed packages
Supported for: winget, chocolatey, scoop, apt, pacman, yum/dnf, snap, and flatpak.
Enhanced List Command
The blacksmith list command now shows:
- OS compatibility badges - Visual indicators (🪟 Windows, 🐧 Linux, 🍎 macOS)
- Preferred managers - Shows which managers are preferred for each OS
- Compatibility status - Indicates if set is compatible with your current OS
📝 Configuration Format Updates
Basic Format (Backward Compatible)
Existing configuration files continue to work without changes:
name: "My Custom Set"
description: "My favorite development tools"
packages:
- name: git
managers:
apt: git
winget: Git.Git
chocolatey: gitAdvanced Format (New)
New cross-platform fields are available:
name: "Cross-Platform Dev Tools"
description: "Development tools for Windows and Linux"
target_os: ["windows", "linux"]
preferred_managers:
windows: ["winget", "chocolatey"]
linux: ["apt", "flatpak"]
managers_supported:
- winget
- chocolatey
- apt
- flatpak
packages:
- name: git
managers:
winget: Git.Git
chocolatey: git
apt: git
flatpak: org.gnome.gitg🔧 Installation Options
New installation options:
# Prefer a specific package manager (overrides set preferences)
blacksmith install development --prefer winget
# Force installation even if OS doesn't match set's target_os
blacksmith install development --force🐛 Bug Fixes
- Fixed
blacksmith infocommand error where manager names were misinterpreted as CLI arguments - Fixed
blacksmith createdefault package name extraction - Fixed "skip this manager" option not moving to next manager
- Fixed
winget searchUnicode encoding errors on Windows - Fixed
winget searchparsing for older winget versions (v1.12.350 and earlier) - Improved error messages for OS-specific package managers
📚 Documentation
- Updated README with all new features and commands
- Added comprehensive examples for cross-platform sets
- Enhanced development section with updated project structure
- Added guidance for creating cross-platform sets
🔄 Migration Guide
No migration required! All existing configuration files continue to work. The new cross-platform fields are optional and backward compatible.
To take advantage of cross-platform features:
- Add
target_osto specify which OSes your set supports - Add
preferred_managersto specify manager preferences per OS - Optionally add
managers_supportedto limit which managers are used
⚠️ Important Notes
- This is the first public release of Blacksmith (v0.2.1)
- This is an alpha release - the API may change in future versions
- Currently supports Linux and Windows (macOS support planned for future release)
- All changes are backward compatible
- Existing sets continue to work without modification
- New cross-platform features are optional
- Requires Python 3.8+
- Some operations may require administrator/sudo privileges
🙏 Acknowledgments
Thank you to everyone who tested the enhancements and provided feedback! Special thanks to the community for helping identify bugs and suggesting improvements.
📦 Installation
Install Blacksmith v0.2.1:
# Install from PyPI (recommended)
pip install jdi-blacksmith
# Or for current user only (no admin required)
pip install --user jdi-blacksmithOr use our installation scripts:
Linux:
curl -fsSL https://raw.githubusercontent.com/jimididit/blacksmith/main/install.sh | bashWindows:
irm https://raw.githubusercontent.com/jimididit/blacksmith/main/install.ps1 | iex🚀 Quick Start
After installation, get started with Blacksmith:
# Run Blacksmith interactively
blacksmith
# Or install a pre-made set
blacksmith install development
blacksmith install cybersecurity
blacksmith install minimal
# Search for packages
blacksmith search docker
# Create your own custom set
blacksmith create
# View set information
blacksmith info development
# List all available sets
blacksmith listThank you for using Blacksmith! If you find it useful, please consider giving it a ⭐ on GitHub!
For issues, feature requests, or questions, please visit our GitHub repository.