| Crates.io | dotforge |
| lib.rs | dotforge |
| version | 0.3.2 |
| created_at | 2025-04-09 12:08:10.736107+00 |
| updated_at | 2025-04-24 05:13:46.628011+00 |
| description | A powerful symlink management tool designed as a modern alternative to GNU Stow |
| homepage | |
| repository | https://github.com/jwliles/rust-dotforge |
| max_upload_size | |
| id | 1626648 |
| size | 126,655 |
A powerful symlink management tool designed as a modern alternative to GNU Stow.
EARLY DEVELOPMENT NOTICE: This project is in its initial development stage. Features are being actively implemented and the API may change. Early versions are published to reserve the name and share development progress.
DotForge provides comprehensive symlink management with clear, intuitive commands:
The codebase is organized into modules following Rust conventions:
src/
├── main.rs # Entry point and CLI definition
├── cli/ # CLI handling
│ ├── mod.rs # CLI module exports
│ └── commands.rs # Command implementations
├── config/ # Configuration handling
│ └── mod.rs # Config struct and DB connection
├── dotfile/ # Core dotfile operations
│ ├── mod.rs # DotFile struct definition
│ ├── backup.rs # Backup functionality
│ ├── link.rs # Linking functionality
│ ├── list.rs # Listing dotfiles
│ └── unlink.rs # Unlinking functionality
├── scanner/ # Directory scanning
│ └── mod.rs # Scanning functionality
├── symlink/ # Symlink operations
│ └── mod.rs # Cross-platform symlink creation
└── utils/ # Utility functions
├── mod.rs # Utils module exports
└── path_utils.rs # Path manipulation utilities
DotForge excels at managing various symlink scenarios:
# Install from crates.io
cargo install dotforge
# Initialize current directory as a forge managed folder (uses directory name if no name provided)
dotforge init [--name dotfiles]
# Stage a file for symlinking (creates a temporary link)
dotforge stage nvim/init.lua
# Create permanent symlinks for all staged files
dotforge link
# Remove symlinks but keep files in the forge folder
dotforge unlink init.lua
# Remove files from forge folder but keep originals
dotforge remove init.lua
# Completely delete files from the system
dotforge delete init.lua
# List all tracked files
dotforge list
# List all available profiles
dotforge list --profiles
# Switch to a different profile
dotforge switch coding
Profiles allow you to maintain multiple configurations that target the same location:
# Create a new profile in a specific location
dotforge new profile coding ~/dotfiles/coding
# List available profiles
dotforge list --profiles
# Switch to a profile
dotforge switch coding
# Initialize current directory as a new profile
dotforge init --name coding
Launch the interactive TUI mode with:
dotforge -I
MIT License
DotForge is under active development with the following milestones:
v0.1.x - Core CLI structure and basic functionality
v0.2.x - Basic profile system
v0.3.x - Enhanced state management
v0.4.x - Interactive TUI mode
v1.0.0 - Production release
This project follows semantic versioning (SemVer) for crates.io releases:
docs branch is used for documentation developmentfeature/* branchesmain branch before publication to crates.ioContributions are welcome! Please feel free to submit a Pull Request.