#!/bin/sh # mp-make-patches if [[ $# -eq 0 || $1 == "help" ]] then echo "Usage example:" echo "cd $(port dir bash-completion)" echo "sudo port extract" echo "sudo cp -R ./work/$(port info --version bash-completion | sed -e 's,version: ,bash-completion-,') ./a" echo "sudo cp -R ./a ./b" echo "# Edit files in b" echo "sudo bash -c 'echo 1234 > b/newfile'" echo "mkdir ./files" echo "mp-make-patches a b" echo "# Example mp-make-patches stdout:" echo "patch.pre_args -p1" echo "patchfiles patch-newfile.diff" echo "# Copy mp-make-patches stdout and paste into Portfile" exit 1 fi PROCESSED_FILES=0 CHANGED_FILES=$(diff -Nqur -x "\.*" $1 $2 | awk '{print $2}' | sed "s;$1/;;" | sed 's/\([^ ]+\)/\1 /g') CHANGED_FILES=($CHANGED_FILES) COUNTER=0 if [ ${#CHANGED_FILES[@]} -gt 0 ] then echo "patch.pre_args -p1" while [ $COUNTER -lt ${#CHANGED_FILES[@]} ] do DIFF_NAME=$(echo ${CHANGED_FILES[$COUNTER]} | sed 's;/;-;g') diff -Nu {$1,$2}/${CHANGED_FILES[$COUNTER]} > files/patch-$DIFF_NAME.diff let COUNTER=COUNTER+1 if [ $COUNTER -eq ${#CHANGED_FILES[@]} ] then EOL="" else EOL=" \\" fi if [ $COUNTER -eq 1 ] then echo "patchfiles patch-${DIFF_NAME}.diff${EOL}" else echo " patch-${DIFF_NAME}.diff${EOL}" fi done fi exit 0