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

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. Finally, fling's --dotfiles option works correctly (and is on by default).

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

About

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

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages