qmk_me

QMK Firmware userspace, keyboards, & keymaps
git clone git://git.pngu.org.org/qmk_me
Log | Files | Refs | Submodules | README | LICENSE

link.sh (1126B)


#!/bin/sh

set -e

link() {
  local subdir="$1"
  local SOURCE_DIR="$HOME/git/qmk_me"
  local TARGET_DIR="$HOME/git/qmk_firmware"
  local SOURCE_PATH="$SOURCE_DIR/keyboards/$subdir"
  local TARGET_PATH="$TARGET_DIR/keyboards/$subdir"

  printf "Linking: %s\n" $subdir

  if [[ ! -d "$TARGET_PATH" ]]; then
    mkdir -p "$TARGET_PATH"
  fi

  for item in "$SOURCE_PATH"/*; do
    local item_name=$(basename "$item")
    local target_item="$TARGET_PATH/$item_name"

    if [[ "$item_name" == "keymaps" ]]; then
      continue
    fi

    if [[ -e "$target_item" || -L "$target_item" ]]; then
      rm -rf "$target_item"
    fi

    ln -sv "$(realpath "$item")" "$target_item"

    if [[ ! -L "$target_item" ]]; then
      printf "Error: linking %s failed!\n" $subdir
    fi
  done

  local EXCLUDE_FILE="$TARGET_DIR/.git/info/exclude"
  local EXCLUDE_PATTERN="keyboards/$subdir"

  if ! grep -q "^$EXCLUDE_PATTERN" "$EXCLUDE_FILE" 2>/dev/null; then
    printf "Excluding %s in .git/info/exclude\n" $EXCLUDE_PATTERN
    echo "$EXCLUDE_PATTERN" >> "$EXCLUDE_FILE"
  fi
}

link endgame
link locus
link sweep
link unzahl
link xyz60