1*60e5225eSJethro Beekman#!/bin/bash 2*60e5225eSJethro Beekman# Recommended command-line: 3*60e5225eSJethro Beekman# 4*60e5225eSJethro Beekman# GIT_DIR=/your/rust/dir/.git ./edit-patches.sh 5*60e5225eSJethro Beekman 6*60e5225eSJethro Beekmanprompt_changes() { 7*60e5225eSJethro Beekman bold_arrow; echo "Editing $IO_COMMIT" 8*60e5225eSJethro Beekman bold_arrow; echo -e "Remember to test your changes with: \e[1;36mcargo build\e[0m" 9*60e5225eSJethro Beekman 10*60e5225eSJethro Beekman local MAIN_GIT_DIR="$GIT_DIR" 11*60e5225eSJethro Beekman local GIT_DIR=./.git CORE_IO_COMMIT=$IO_COMMIT 12*60e5225eSJethro Beekman export CORE_IO_COMMIT 13*60e5225eSJethro Beekman 14*60e5225eSJethro Beekman git init > /dev/null 15*60e5225eSJethro Beekman git add . 16*60e5225eSJethro Beekman git commit -m "rust src import" > /dev/null 17*60e5225eSJethro Beekman IMPORT_COMMIT=$(git log -n1 --pretty=format:%H) 18*60e5225eSJethro Beekman patch -s -p1 < $PATCH_DIR/$IO_COMMIT.patch 19*60e5225eSJethro Beekman git commit -a -m "existing patch for $IO_COMMIT" > /dev/null 20*60e5225eSJethro Beekman 21*60e5225eSJethro Beekman bold_arrow; echo -e "Applying patch from \e[1;36m$TMP_PATCH\e[0m" 22*60e5225eSJethro Beekman patch -p1 < $TMP_PATCH || true 23*60e5225eSJethro Beekman bold_arrow; echo -e "Make your changes now (\e[1;36mctrl-D\e[0m when finished)" 24*60e5225eSJethro Beekman bash_diff_loop "No changes were made" 25*60e5225eSJethro Beekman bold_arrow; echo "Replacing $IO_COMMIT.patch with updated version" 26*60e5225eSJethro Beekman git diff > $TMP_PATCH 27*60e5225eSJethro Beekman git clean -f -x 28*60e5225eSJethro Beekman git diff > $PATCH_DIR/$IO_COMMIT.patch 29*60e5225eSJethro Beekman rm -rf .git 30*60e5225eSJethro Beekman} 31*60e5225eSJethro Beekman 32*60e5225eSJethro Beekmanif [ ! -t 1 ] || [ ! -t 2 ]; then 33*60e5225eSJethro Beekman echo "==> /dev/stdout or /dev/stderr is not attached to a terminal!" 34*60e5225eSJethro Beekman echo "==> This script must be run interactively." 35*60e5225eSJethro Beekman exit 1 36*60e5225eSJethro Beekmanfi 37*60e5225eSJethro Beekman 38*60e5225eSJethro Beekmancd "$(dirname "$0")" 39*60e5225eSJethro Beekman 40*60e5225eSJethro Beekman. ./functions.sh 41*60e5225eSJethro Beekman 42*60e5225eSJethro BeekmanPATCH_DIR="$PWD/patches" 43*60e5225eSJethro BeekmanPATCH_COMMITS=$(get_patch_commits|sort -u) 44*60e5225eSJethro Beekman 45*60e5225eSJethro BeekmanTMP_PATCH=$(mktemp) 46*60e5225eSJethro Beekman 47*60e5225eSJethro Beekmanset -e 48*60e5225eSJethro Beekmanset -o pipefail 49*60e5225eSJethro Beekman 50*60e5225eSJethro Beekmanfind src -mindepth 1 -type d -prune -exec rm -rf {} \; 51*60e5225eSJethro Beekman 52*60e5225eSJethro Beekmanfor IO_COMMIT in $(git_commits_ordered %H $PATCH_COMMITS|tac); do 53*60e5225eSJethro Beekman prepare_version 54*60e5225eSJethro Beekman cd src/$IO_COMMIT 55*60e5225eSJethro Beekman prompt_changes 56*60e5225eSJethro Beekman cd ../.. 57*60e5225eSJethro Beekmandone 58*60e5225eSJethro Beekman 59*60e5225eSJethro Beekmanrm -rf $TMP_PATCH 60*60e5225eSJethro Beekman 61*60e5225eSJethro Beekmanbold_arrow; echo "Done" 62