12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- #!/bin/bash
-
- . $(ffoom path)
-
- ffoo import pretty
-
- DEFAULT_TARGET=$HOME
- TRY_RELPATH=true
-
- PY_SCRIPT="
- import os.path
- import sys
- src, dst = sys.argv[1:]
- r = os.path.relpath(src, dst)
- a = os.path.abspath(src)
- if len(a) < len (r):
- print a
- else:
- print r
- "
-
- usage() {
- usage_is "[-t|--target TARGET] [SOURCE] [NAME]"
- }
-
- expand_tilde() {
- #
- # Exchange "~" for home
- #
- perl -pe "s|^[[:space:]]*~|$HOME|"
- }
-
- maybe_relpath() {
- local src="$1"
- local dst="$2"
- $TRY_RELPATH || { echo "$src"; return 0; }
- {
- echo 'import os.path'
- echo 'import sys'
- echo 'src, dst = sys.argv[1:]'
- echo 'r = os.path.relpath(src, dst)'
- echo 'a = os.path.abspath(src)'
- echo 'if len(a) < len (r):'
- echo ' print a'
- echo 'else:'
- echo ' print r'
- } | python "$src" "$dst"
- }
-
- link() {
- local src=$1
- local dst=$2
- debug -v src dst
- if $TRY_RELPATH;
- then
- src=$(python <(echo "$PY_SCRIPT") "$src" "$(dirname $dst)")
- fi
- think "linking $src to $dst"
- rm -f $dst
- ln -s $src $dst
- }
-
- load() {
- saturnin conf -p ln.dir.$1 | expand_tilde
- }
-
- while true; do case $1 in
- -t|--target) target=$2 shift 2 ;;
- --help) usage ;;
- -*) usage ;;
- *) src=$1; name=$2; break ;;
- esac done
-
- test -z "$target" && target=$(load target)
- test -z "$target" && target=$DEFAULT_TARGET
- test -z "$name" && name="$(basename "$PWD")"
- test -z "$src" && src="."
-
- debug -v name target
-
- mkdir -p $target
- link $src $target/$name
|