1#!/bin/bash -e 2 3SCRIPTS_DIR="$(dirname "$(realpath "$BASH_SOURCE")")" 4DEVICE_DIR="$(realpath "$SCRIPTS_DIR/../../")" 5CHIPS_DIR="$DEVICE_DIR/.chips" 6CHIP_DIR="$DEVICE_DIR/.chip" 7 8choose_chip() 9{ 10 CHIP_ARRAY=( $(ls "$CHIPS_DIR") ) 11 CHIP_ARRAY_LEN=${#CHIP_ARRAY[@]} 12 echo "Pick a chip:" 13 echo "" 14 15 echo ${CHIP_ARRAY[@]} | xargs -n 1 | sed "=" | sed "N;s/\n/. /" 16 17 local INDEX 18 read -p "Which would you like? [1]: " INDEX 19 INDEX=$((${INDEX:-1} - 1)) 20 CHIP="${CHIP_ARRAY[$INDEX]}" 21} 22 23CHIP=$1 24if [ -z "$CHIP" -o ! -e "$CHIPS_DIR/$CHIP" ]; then 25 choose_chip 26 [ "$CHIP" ] || exit 1 27fi 28 29echo "Releasing chip: $CHIP" 30 31cd "$DEVICE_DIR" 32 33ORIG_COMMIT=$(git log --oneline -1 | cut -d' ' -f1) 34 35COMMIT_MSG=$(mktemp) 36cat << EOF > $COMMIT_MSG 37Release $CHIP - $(date +%Y-%m-%d) 38 39Based on: 40$(git log -1 --format="%h %s") 41EOF 42 43git add -f . 44git stash &>/dev/null 45 46# Drop other chips 47rm -f "$CHIP_DIR" 48ln -rsf "$CHIPS_DIR/$CHIP" "$CHIP_DIR" 49ln -rsf "$CHIPS_DIR/$CHIP" . 50 51# Create new branch 52git branch -D $CHIP &>/dev/null || true 53git checkout --orphan $CHIP &>/dev/null 54git reset &>/dev/null 55git add -f .gitignore common "$CHIPS_DIR/$CHIP" "$CHIP_DIR" "$CHIP" 56git commit -s -F $COMMIT_MSG &>/dev/null 57rm -f $COMMIT_MSG 58 59# Recover 60git add -f . 61git checkout $ORIG_COMMIT &>/dev/null 62