Skip to content
/ fling Public

File/directory symlinker similar to GNU Stow. Manages dotfiles well

License

Notifications You must be signed in to change notification settings

bbkane/fling

Folders and files

NameName
Last commit message
Last commit date

Latest commit

41ad532 · Jan 23, 2025

History

77 Commits
Apr 28, 2024
Feb 24, 2023
Jan 15, 2025
Dec 8, 2023
Jan 15, 2025
Apr 28, 2024
Nov 26, 2023
Dec 4, 2021
Jan 23, 2025
Dec 4, 2022
Dec 4, 2022
Jan 6, 2025
Jan 6, 2025
Nov 15, 2023
Jan 4, 2025
Jan 4, 2025
Jan 4, 2025

Repository files navigation

fling

demo

fling computes and creates/removes the minimal amount of symlinks needed in a directory to refer to files and directories in another directory, similar to GNU Stow. I use fling to manage my dotfiles

fling is much dumber than GNU Stow - it's missing several options, only considers one directory at a time, and deals with absolute paths only (in contrast, GNU Stow works exclusively with relative paths).

As a tradeoff, fling's codebase is simpler. fling compiles to a single binary and contains fewer lines of code. It's very easy to understand what fling will do for a particular invocation: fling prints out (in color!) what it plans to link/unlink and asks you (by default) before continuing.

Install

scoop bucket add bbkane https://github.com/bbkane/scoop-bucket
scoop install bbkane/fling
  • Download Mac/Linux executable: GitHub releases
  • Go: go install go.bbkane.com/fling@latest
  • Build with goreleaser after cloning: goreleaser --snapshot --skip-publish --rm-dist

Notes

If you're migrating from GNU Stow, you may see an error similar to the following when you attempt to fling link something:

Proposed link mismatch errors:

- src: /Users/bbkane/Git/dotfiles/sqlite3/dot-sqliterc
  link: /Users/bbkane/.sqliterc
  err: link is already a symlink to src: Git/dotfiles/sqlite3/dot-sqliterc

This is because GNU Stow works with relative symlinks and fling works with absolute symlinks. Either unstow your directory (stow -D) or manually erase the symlink: unlink /Users/bbkane/.sqliterc