bonds-cli 0.1.0

CLI for creating and managing symlink-based bonds
Documentation

bonds

A tool for creating and managing "bonds" between files and directories.

Build with symlinks and a SQLite

Inspired by GNU Stow

Status

  • Basic core & CLI
  • Library API
  • GUI application
  • Ecosystem & plugins

Usage


Creating a bond
# default target: ~/bonds
bond add ~/projects/my-app # creates a bond from ~/projects/my-app to ~/bonds/my-app
# custom target
bond add ~/projects/my-app ~/my-app-link
# bulk bond all contents of a directory
bond add ~/projects/ ~/bonds --contents # creates bonds for each child of ~/projects
# with a name
bond add ~/projects/my-app --name foo
Listing bonds
bond list
# OUTPUT:
# foo (abc12345)  -  ~/projects/my-app -> ~/bonds/my-app  (2026-04-06 12:00)
Inspecting bond details
bond info foo
# OUTPUT:
# ID: abc12345
# Source: ~/projects/my-app
# Target: ~/bonds/my-app
# Created At: 2026-04-06 12:00
# Health: Healthy (symlink intact)
Removing a bond
# remove by ID
bond remove abc12345
# remove by (specified) name
bond remove foo
# To also delete the target, use:
bond remove foo --with-target
Updating a bond
# Update source and/or target
bond update foo --source ~/new-source/my-app
bond update foo --target ~/new-target/my-app
# Update name
bond update foo --name new-name
Migrating bonds
# Move bond to a new default location (with auto-backup)
bond migrate foo ~/new-default-bonds/
# if the bond is located in a different location, you can run
bond migrate foo
# will automatically move the bond to the current default location (e.g., ~/bonds/)
Configuration
# Set default target directory
bond config set default ~/my-default-bonds
# Get current default target directory
bond config get default