12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- #!/usr/bin/env bash
- export VSCODE_QUALITY="stable"
- while getopts ":i" opt; do
- case "$opt" in
- i)
- export VSCODE_QUALITY="insider"
- ;;
- *)
- ;;
- esac
- done
- check_file() {
- while [ $# -gt 1 ]; do
- git apply --reject "${1}"
- shift
- done
- if [[ -f "${1}.bak" ]]; then
- mv -f $1{.bak,}
- fi
- if [[ -f "${1}" ]]; then
- echo applying patch: "${1}"
- if ! git apply --ignore-whitespace "${1}"; then
- echo failed to apply patch "${1}"
- git apply --reject "${1}"
- git apply --reject "../patches/helper/settings.patch"
- read -rp "Press any key when the conflict have been resolved..." -n1 -s
- git restore .vscode/settings.json
- git add .
- git diff --staged -U1 > "${1}"
- fi
- git add .
- git reset -q --hard HEAD
- fi
- }
- cd vscode || { echo "'vscode' dir not found"; exit 1; }
- git add .
- git reset -q --hard HEAD
- for FILE in ../patches/*.patch; do
- check_file "${FILE}"
- done
- if [[ "${VSCODE_QUALITY}" == "insider" ]]; then
- for FILE in ../patches/insider/*.patch; do
- check_file "${FILE}"
- done
- fi
- for ARCH in alpine linux osx windows; do
- for FILE in "../patches/${ARCH}/"*.patch; do
- if [[ "${ARCH}" == "linux" && "${FILE}" == *"/arch-"* ]] || [[ "${ARCH}" == "windows" && "${FILE}" == *"/cli"* ]]; then
- echo "skip ${FILE}"
- else
- check_file "${FILE}"
- fi
- done
- if [[ "${ARCH}" == "linux" ]]; then
- check_file "../patches/cli.patch" "../patches/linux/arch-0-support.patch"
- check_file "../patches/cli.patch" "../patches/linux/arch-0-support.patch" "../patches/linux/arch-1-ppc64le.patch"
- check_file "../patches/cli.patch" "../patches/linux/arch-0-support.patch" "../patches/linux/arch-1-ppc64le.patch" "../patches/linux/arch-2-riscv64.patch"
- check_file "../patches/cli.patch" "../patches/linux/arch-0-support.patch" "../patches/linux/arch-1-ppc64le.patch" "../patches/linux/arch-2-riscv64.patch" "../patches/linux/arch-3-loong64.patch"
- check_file "../patches/cli.patch" "../patches/linux/arch-0-support.patch" "../patches/linux/arch-1-ppc64le.patch" "../patches/linux/arch-2-riscv64.patch" "../patches/linux/arch-3-loong64.patch" "../patches/linux/arch-4-s390x.patch"
- elif [[ "${ARCH}" == "windows" ]]; then
- check_file "../patches/cli.patch" "../patches/windows/cli.patch"
- fi
- for TARGET in client reh; do
- for FILE in "../patches/${ARCH}/${TARGET}/"*.patch; do
- check_file "${FILE}"
- done
- for FILE in "../patches/${ARCH}/${TARGET}/"*/*.patch; do
- check_file "${FILE}"
- done
- done
- done
|