#!/bin/bash set -e lock=${PWD%/*}/.fuck.lock if [ "x$FUCKING_CARGO" != "x$lock" ]; then FUCKING_CARGO=$lock \ exec with-lock-ex -w "$lock" "$0" "$@" fi exec 3<../Fuck f=Cargo.toml sed=' /^ *\[dependencies\]/,/^ \[/{ ' exec 4<../Fuck while read <&4 what where; do if [ "x$what" = x- ]; then continue; fi qwhere="${where//\//\\/}" sed+=' s/^'$what' *=.*/'$what' = { path = "..\/'"${qwhere}"'" }/; ' done sed+='} ' exec 4<../Fuck while read <&4 what where; do wf=../$where/$f rm -f $wf.fucking~ sed <$wf >$wf.fucking~ "$sed" done exec 4<../Fuck while read <&4 what where; do wf=../$where/$f if ! test -e $wf.unfucked~; then ln $wf $wf.unfucked~ fi done trap ' set +e while read <&3 what where; do wf=../$where/$f if test -e $wf.unfucked~; then rm -f $wf.fucked~ ln $wf $wf.fucked~ mv -f $wf.unfucked~ $wf fi done echo >&2 'Unfucked' ' EXIT exec 4<../Fuck printf >&2 'Fucking' while read <&4 what where; do wf=../$where/$f printf >&2 ' %s' "$what" if cmp -s $wf.fucked~ $wf.fucking~; then mv -f $wf.fucked~ $wf rm -f $wf.fucking else mv -f $wf.fucking~ $wf rm -f $wf.fucked fi done echo >&2 "$@"