From: Ian Jackson Date: Sun, 17 Feb 2019 23:39:39 +0000 (+0000) Subject: wip X-Git-Tag: nailing-cargo/1.0.0~257 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=26af2e9f0832e659ffe91b68158349d66c86d64f;p=nailing-cargo.git wip --- 26af2e9f0832e659ffe91b68158349d66c86d64f diff --git a/fucking-cargo b/fucking-cargo new file mode 100755 index 0000000..4984d74 --- /dev/null +++ b/fucking-cargo @@ -0,0 +1,59 @@ +#!/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 + sed+=' s/^$what *=/$what = { path = ../'"${where//\//\\/}"' } +' +done +sed+='} +' + +exec 4<../Fuck +while read <&4 what where; do + wf=../$where/$f + rm -f $wf.fucking~ + sed <$wf >$wf.fucking~ +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 $wf.unfucked~ $wf.unfucked~ + fi + done +' EXIT + +exec 4<../Fuck +while read <&4 what where; do + wf=../$where/$f + rm $wf.fucked~ + mv -f $wf.fucking~ $wf +done + +"$@"