saturnin-ln 972B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #!/bin/bash
  2. . $(ffoom path)
  3. ffoo import config
  4. ffoo import pretty
  5. DEFAULT_TARGET=$HOME
  6. usage() {
  7. usage_is "[-t|--target TARGET] [SOURCE] [NAME]"
  8. }
  9. expand_tilde() {
  10. #
  11. # Exchange "~" for home
  12. #
  13. perl -pe "s|^[[:space:]]*~|$HOME|"
  14. }
  15. link() {
  16. local src=$1
  17. local dst=$2
  18. think "linking $src to $dst"
  19. rm -f $dst
  20. ln -sr $src $dst
  21. }
  22. load() {
  23. inigrep -p ln.dir.$1 | expand_tilde
  24. }
  25. while true; do case $1 in
  26. -t|--target) target=$2 shift 2 ;;
  27. --help) usage ;;
  28. -*) usage ;;
  29. *) src=$1; name=$2; break ;;
  30. esac done
  31. test -z "$target" && target=$(load target)
  32. test -z "$target" && target=$DEFAULT_TARGET
  33. test -z "$name" && name="$(basename "$PWD")"
  34. test -z "$src" && src="."
  35. debug -v src name target
  36. mkdir -p "$target"
  37. link "$src" "$target/$name"