From 977c579c02a5245b307544a49608db8989959de5 Mon Sep 17 00:00:00 2001 From: Joe Previte Date: Wed, 24 Feb 2021 13:49:48 -0700 Subject: [PATCH] feat: add update-vscode.sh script --- ci/dev/update-vscode.sh | 59 +++++++++++++++++++++++++++++++++++++++++ package.json | 2 +- 2 files changed, 60 insertions(+), 1 deletion(-) create mode 100755 ci/dev/update-vscode.sh diff --git a/ci/dev/update-vscode.sh b/ci/dev/update-vscode.sh new file mode 100755 index 000000000..b05fb7abd --- /dev/null +++ b/ci/dev/update-vscode.sh @@ -0,0 +1,59 @@ +#!/usr/bin/env bash +set -euo pipefail + +main() { + cd "$(dirname "$0")/../.." + + # Check if the remote exists + # if it doesn't, we add it + if ! git config remote.vscode.url > /dev/null; then + echo "Could not find 'vscode' as a remote" + echo "Adding with: git remote add -f vscode https://github.com/microsoft/vscode.git &> /dev/null" + echo "Supressing output with '&> /dev/null'" + git remote add -f vscode https://github.com/microsoft/vscode.git &> /dev/null + fi + + # Ask which version we should update to + # In the future, we'll automate this and grab the latest version automatically + read -p "What version of VSCode would you like to update to? (i.e. 1.52) " VSCODE_VERSION_TO_UPDATE + + # Check that this version exists + if [[ -z $(git ls-remote --heads vscode release/$VSCODE_VERSION_TO_UPDATE) ]]; then + echo "Oops, that doesn't look like a valid version." + echo "You entered: $VSCODE_VERSION_TO_UPDATE" + echo "Verify that this branches exists here: https://github.com/microsoft/vscode/branches/all?query=release%2F$VSCODE_VERSION_TO_UPDATE" + exit 1 + fi + + echo -e "Great! We'll prep a PR for updating to $VSCODE_VERSION_TO_UPDATE\n" + + # Check if GitHub CLI is installed + if ! command -v gh &> /dev/null; then + echo "GitHub CLI could not be found." + echo "If you install it before you run this script next time, we'll open a draft PR for you!" + echo -e "See docs here: https://github.com/cli/cli#installation\n" + exit + fi + + # Push branch to remote if not already pushed + # If we don't do this, the opening a draft PR step won't work + # because it will stop and ask where you want to push the branch + CURRENT_BRANCH=$(git branch --show-current) + if [[ -z $(git ls-remote --heads origin $CURRENT_BRANCH) ]]; then + echo "Doesn't look like you've pushed this branch to remote" + echo -e "Pushing now using: git push origin $CURRENT_BRANCH\n" + git push origin $CURRENT_BRANCH + fi + + echo "Opening a draft PR on GitHub" + # To read about these flags, visit the docs: https://cli.github.com/manual/gh_pr_create + gh pr create --base master --title "feat(vscode): update to version $VSCODE_VERSION_TO_UPDATE" --body "This PR updates `/lib/vscode` to version: $VSCODE_VERSION_TO_UPDATE" --reviewer @cdr/code-server-reviewers --repo cdr/code-server --draft + + + echo "Going to try to update vscode for you..." + echo -e "Running: git subtree pull --prefix lib/vscode vscode release/${VSCODE_VERSION_TO_UPDATE} --squash\n" + # Try to run subtree update command + git subtree pull --prefix lib/vscode vscode release/${VSCODE_VERSION_TO_UPDATE} --squash --message "chore(vscode): update to $VSCODE_VERSION_TO_UPDATE" +} + +main "$@" diff --git a/package.json b/package.json index decec942a..a41bd6b9d 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,6 @@ "repository": "https://github.com/cdr/code-server", "scripts": { "clean": "./ci/build/clean.sh", - "vscode:reset": "./ci/dev/reset-vscode.sh", "build": "./ci/build/build-code-server.sh", "build:vscode": "./ci/build/build-vscode.sh", "release": "./ci/build/build-release.sh", @@ -20,6 +19,7 @@ "test:standalone-release": "./ci/build/test-standalone-release.sh", "package": "./ci/build/build-packages.sh", "postinstall": "./ci/dev/postinstall.sh", + "update:vscode": "./ci/dev/update-vscode.sh", "_____": "", "fmt": "./ci/dev/fmt.sh", "lint": "./ci/dev/lint.sh",