From 08ebe0416709d852b6a76cb57e9f31d0aefc5625 Mon Sep 17 00:00:00 2001 From: Baptiste Augrain Date: Sat, 26 Apr 2025 11:02:29 +0200 Subject: [PATCH] feat: package cli (#2346) --- check_tags.sh | 126 ++++++++++++++------------ prepare_assets.sh | 28 +++++- release.sh | 10 +- release_notes.txt => release_notes.md | 66 +++++++++++--- 4 files changed, 157 insertions(+), 73 deletions(-) rename release_notes.txt => release_notes.md (81%) diff --git a/check_tags.sh b/check_tags.sh index fee07ac..0c04325 100755 --- a/check_tags.sh +++ b/check_tags.sh @@ -105,6 +105,13 @@ elif [[ "${ASSETS}" != "null" ]]; then export SHOULD_BUILD_REH_WEB="no" fi + if [[ -z $( contains "${APP_NAME_LC}-cli-darwin-${VSCODE_ARCH}-${RELEASE_VERSION}.tar.gz" ) ]]; then + echo "Building on MacOS because we have no CLI archive" + export SHOULD_BUILD="yes" + else + export SHOULD_BUILD_CLI="no" + fi + if [[ "${SHOULD_BUILD}" != "yes" ]]; then echo "Already have all the MacOS builds" fi @@ -136,67 +143,15 @@ elif [[ "${ASSETS}" != "null" ]]; then export SHOULD_BUILD_REH="no" export SHOULD_BUILD_REH_WEB="no" - if [[ "${SHOULD_BUILD}" != "yes" ]]; then - echo "Already have all the Windows arm64 builds" - fi - - # windows-ia32 - elif [[ "${VSCODE_ARCH}" == "ia32" ]]; then - if [[ -z $( contains "${APP_NAME}Setup-${VSCODE_ARCH}-${RELEASE_VERSION}.exe" ) ]]; then - echo "Building on Windows ia32 because we have no system setup" + if [[ -z $( contains "${APP_NAME_LC}-cli-win32-${VSCODE_ARCH}-${RELEASE_VERSION}.tar.gz" ) ]]; then + echo "Building on Windows arm64 because we have no CLI archive" export SHOULD_BUILD="yes" else - export SHOULD_BUILD_EXE_SYS="no" - fi - - if [[ -z $( contains "UserSetup-${VSCODE_ARCH}-${RELEASE_VERSION}.exe" ) ]]; then - echo "Building on Windows ia32 because we have no user setup" - export SHOULD_BUILD="yes" - else - export SHOULD_BUILD_EXE_USR="no" - fi - - if [[ -z $( contains "${APP_NAME}-win32-${VSCODE_ARCH}-${RELEASE_VERSION}.zip" ) ]]; then - echo "Building on Windows ia32 because we have no zip" - export SHOULD_BUILD="yes" - else - export SHOULD_BUILD_ZIP="no" - fi - - if [[ "${DISABLE_MSI}" == "yes" ]]; then - export SHOULD_BUILD_MSI="no" - elif [[ -z $( contains "${APP_NAME}-${VSCODE_ARCH}-${RELEASE_VERSION}.msi" ) ]]; then - echo "Building on Windows ia32 because we have no msi" - export SHOULD_BUILD="yes" - else - export SHOULD_BUILD_MSI="no" - fi - - if [[ "${DISABLE_MSI}" == "yes" ]]; then - export SHOULD_BUILD_MSI_NOUP="no" - elif [[ -z $( contains "${APP_NAME}-${VSCODE_ARCH}-updates-disabled-${RELEASE_VERSION}.msi" ) ]]; then - echo "Building on Windows ia32 because we have no updates-disabled msi" - export SHOULD_BUILD="yes" - else - export SHOULD_BUILD_MSI_NOUP="no" - fi - - if [[ -z $( contains "${APP_NAME_LC}-reh-win32-${VSCODE_ARCH}-${RELEASE_VERSION}.tar.gz" ) ]]; then - echo "Building on Windows ia32 because we have no REH archive" - export SHOULD_BUILD="yes" - else - export SHOULD_BUILD_REH="no" - fi - - if [[ -z $( contains "${APP_NAME_LC}-reh-web-win32-${VSCODE_ARCH}-${RELEASE_VERSION}.tar.gz" ) ]]; then - echo "Building on Windows ia32 because we have no REH-web archive" - export SHOULD_BUILD="yes" - else - export SHOULD_BUILD_REH_WEB="no" + export SHOULD_BUILD_CLI="no" fi if [[ "${SHOULD_BUILD}" != "yes" ]]; then - echo "Already have all the Windows ia32 builds" + echo "Already have all the Windows arm64 builds" fi # windows-x64 @@ -254,6 +209,13 @@ elif [[ "${ASSETS}" != "null" ]]; then export SHOULD_BUILD_REH_WEB="no" fi + if [[ -z $( contains "${APP_NAME_LC}-cli-win32-${VSCODE_ARCH}-${RELEASE_VERSION}.tar.gz" ) ]]; then + echo "Building on Windows x64 because we have no CLI archive" + export SHOULD_BUILD="yes" + else + export SHOULD_BUILD_CLI="no" + fi + if [[ "${SHOULD_BUILD}" != "yes" ]]; then echo "Already have all the Windows x64 builds" fi @@ -326,6 +288,14 @@ elif [[ "${ASSETS}" != "null" ]]; then export SHOULD_BUILD_APPIMAGE="no" + if [[ -z $( contains "${APP_NAME_LC}-cli-linux-${VSCODE_ARCH}-${RELEASE_VERSION}.tar.gz" ) ]]; then + echo "Building on Linux arm64 because we have no CLI archive" + export SHOULD_BUILD="yes" + else + export SHOULD_BUILD_CLI="no" + fi + + if [[ "${SHOULD_BUILD}" != "yes" ]]; then echo "Already have all the Linux arm64 builds" fi @@ -370,6 +340,14 @@ elif [[ "${ASSETS}" != "null" ]]; then export SHOULD_BUILD_APPIMAGE="no" + if [[ -z $( contains "${APP_NAME_LC}-cli-linux-${VSCODE_ARCH}-${RELEASE_VERSION}.tar.gz" ) ]]; then + echo "Building on Linux arm because we have no CLI archive" + export SHOULD_BUILD="yes" + else + export SHOULD_BUILD_CLI="no" + fi + + if [[ "${SHOULD_BUILD}" != "yes" ]]; then echo "Already have all the Linux arm builds" fi @@ -403,6 +381,13 @@ elif [[ "${ASSETS}" != "null" ]]; then export SHOULD_BUILD_REH_WEB="no" fi + if [[ -z $( contains "${APP_NAME_LC}-cli-linux-${VSCODE_ARCH}-${RELEASE_VERSION}.tar.gz" ) ]]; then + echo "Building on Linux PowerPC64LE because we have no CLI archive" + export SHOULD_BUILD="yes" + else + export SHOULD_BUILD_CLI="no" + fi + if [[ "${SHOULD_BUILD}" != "yes" ]]; then echo "Already have all the Linux PowerPC64LE builds" fi @@ -435,6 +420,13 @@ elif [[ "${ASSETS}" != "null" ]]; then export SHOULD_BUILD_REH_WEB="no" fi + if [[ -z $( contains "${APP_NAME_LC}-cli-linux-${VSCODE_ARCH}-${RELEASE_VERSION}.tar.gz" ) ]]; then + echo "Building on Linux RISC-V 64 because we have no CLI archive" + export SHOULD_BUILD="yes" + else + export SHOULD_BUILD_CLI="no" + fi + if [[ "${SHOULD_BUILD}" != "yes" ]]; then echo "Already have all the Linux riscv64 builds" fi @@ -467,6 +459,13 @@ elif [[ "${ASSETS}" != "null" ]]; then export SHOULD_BUILD_REH_WEB="no" fi + if [[ -z $( contains "${APP_NAME_LC}-cli-linux-${VSCODE_ARCH}-${RELEASE_VERSION}.tar.gz" ) ]]; then + echo "Building on Linux Loong64 because we have no CLI archive" + export SHOULD_BUILD="yes" + else + export SHOULD_BUILD_CLI="no" + fi + if [[ "${SHOULD_BUILD}" != "yes" ]]; then echo "Already have all the Linux Loong64 builds" fi @@ -493,6 +492,13 @@ elif [[ "${ASSETS}" != "null" ]]; then export SHOULD_BUILD_REH_WEB="no" fi + if [[ -z $( contains "${APP_NAME_LC}-cli-linux-${VSCODE_ARCH}-${RELEASE_VERSION}.tar.gz" ) ]]; then + echo "Building on Linux s390x because we have no CLI archive" + export SHOULD_BUILD="yes" + else + export SHOULD_BUILD_CLI="no" + fi + if [[ "${SHOULD_BUILD}" != "yes" ]]; then echo "Already have all the Linux s390x builds" fi @@ -551,6 +557,13 @@ elif [[ "${ASSETS}" != "null" ]]; then export SHOULD_BUILD_REH_WEB="no" fi + if [[ -z $( contains "${APP_NAME_LC}-cli-linux-${VSCODE_ARCH}-${RELEASE_VERSION}.tar.gz" ) ]]; then + echo "Building on Linux x64 because we have no CLI archive" + export SHOULD_BUILD="yes" + else + export SHOULD_BUILD_CLI="no" + fi + if [[ "${SHOULD_BUILD}" != "yes" ]]; then echo "Already have all the Linux x64 builds" fi @@ -658,6 +671,7 @@ echo "SHOULD_BUILD_MSI=${SHOULD_BUILD_MSI}" >> "${GITHUB_ENV}" echo "SHOULD_BUILD_MSI_NOUP=${SHOULD_BUILD_MSI_NOUP}" >> "${GITHUB_ENV}" echo "SHOULD_BUILD_REH=${SHOULD_BUILD_REH}" >> "${GITHUB_ENV}" echo "SHOULD_BUILD_REH_WEB=${SHOULD_BUILD_REH_WEB}" >> "${GITHUB_ENV}" +echo "SHOULD_BUILD_CLI=${SHOULD_BUILD_CLI}" >> "${GITHUB_ENV}" echo "SHOULD_BUILD_RPM=${SHOULD_BUILD_RPM}" >> "${GITHUB_ENV}" echo "SHOULD_BUILD_SNAP=${SHOULD_BUILD_SNAP}" >> "${GITHUB_ENV}" echo "SHOULD_BUILD_TAR=${SHOULD_BUILD_TAR}" >> "${GITHUB_ENV}" diff --git a/prepare_assets.sh b/prepare_assets.sh index 5c1261e..29b2811 100755 --- a/prepare_assets.sh +++ b/prepare_assets.sh @@ -71,7 +71,7 @@ if [[ "${OS_NAME}" == "osx" ]]; then cd .. fi - if [[ "${SHOULD_BUILD_DMG}" != "no" ]]; then + if [[ -n "${CERTIFICATE_OSX_P12_DATA}" && "${SHOULD_BUILD_DMG}" != "no" ]]; then echo "Building and moving DMG" pushd "VSCode-darwin-${VSCODE_ARCH}" npx create-dmg ./*.app . @@ -216,6 +216,32 @@ if [[ "${SHOULD_BUILD_REH_WEB}" != "no" ]]; then cd .. fi +set -ex + +if [[ "${SHOULD_BUILD_CLI}" != "no" ]]; then + echo "Building and moving CLI" + + APPLICATION_NAME="$( node -p "require(\"./vscode/product.json\").applicationName" )" + NAME_SHORT="$( node -p "require(\"./vscode/product.json\").nameShort" )" + TUNNEL_APPLICATION_NAME="$( node -p "require(\"./vscode/product.json\").tunnelApplicationName" )" + + mkdir -p "vscode-cli" + + cd "vscode-cli" + + if [[ "${OS_NAME}" == "osx" ]]; then + cp "../VSCode-${VSCODE_PLATFORM}-${VSCODE_ARCH}/${NAME_SHORT}.app/Contents/Resources/app/bin/${TUNNEL_APPLICATION_NAME}" "${APPLICATION_NAME}" + elif [[ "${OS_NAME}" == "windows" ]]; then + cp "../VSCode-${VSCODE_PLATFORM}-${VSCODE_ARCH}/bin/${TUNNEL_APPLICATION_NAME}.exe" "${APPLICATION_NAME}.exe" + else + cp "../VSCode-${VSCODE_PLATFORM}-${VSCODE_ARCH}/bin/${TUNNEL_APPLICATION_NAME}" "${APPLICATION_NAME}" + fi + + tar czf "../assets/${APP_NAME_LC}-cli-${VSCODE_PLATFORM}-${VSCODE_ARCH}-${RELEASE_VERSION}.tar.gz" . + + cd .. +fi + if [[ "${OS_NAME}" != "windows" ]]; then ./prepare_checksums.sh fi diff --git a/release.sh b/release.sh index 937af53..de85daa 100755 --- a/release.sh +++ b/release.sh @@ -27,12 +27,12 @@ if [[ $( gh release view "${RELEASE_VERSION}" --repo "${ASSETS_REPOSITORY}" 2>&1 RELEASE_NOTES=$( gh release view "${RELEASE_VERSION}" --repo "${ASSETS_REPOSITORY}" --json "body" --jq ".body" ) - replace "s|MS_TAG_SHORT|$( echo "${MS_TAG//./_}" | cut -d'_' -f 1,2 )|" release_notes.txt - replace "s|MS_TAG|${MS_TAG}|" release_notes.txt - replace "s|RELEASE_VERSION|${RELEASE_VERSION}|g" release_notes.txt - replace "s|RELEASE_NOTES|${RELEASE_NOTES//$'\n'/\\n}|" release_notes.txt + replace "s|MS_TAG_SHORT|$( echo "${MS_TAG//./_}" | cut -d'_' -f 1,2 )|" release_notes.md + replace "s|MS_TAG|${MS_TAG}|" release_notes.md + replace "s|RELEASE_VERSION|${RELEASE_VERSION}|g" release_notes.md + replace "s|RELEASE_NOTES|${RELEASE_NOTES//$'\n'/\\n}|" release_notes.md - gh release edit "${RELEASE_VERSION}" --repo "${ASSETS_REPOSITORY}" --notes-file release_notes.txt + gh release edit "${RELEASE_VERSION}" --repo "${ASSETS_REPOSITORY}" --notes-file release_notes.md fi fi diff --git a/release_notes.txt b/release_notes.md similarity index 81% rename from release_notes.txt rename to release_notes.md index 8c4c62b..43a77ce 100644 --- a/release_notes.txt +++ b/release_notes.md @@ -6,7 +6,7 @@ RELEASE_NOTES - + @@ -35,7 +35,11 @@ RELEASE_NOTES - + + + + + @@ -52,7 +56,11 @@ RELEASE_NOTES - + + + + + @@ -83,6 +91,10 @@ RELEASE_NOTES + + + + @@ -98,7 +110,7 @@ RELEASE_NOTES
WindowsWindows User Installer VSCodiumUserSetup-x64-RELEASE_VERSION.exe
vscodium-reh-web-win32-x64-RELEASE_VERSION.tar.gz
macOSCLIvscodium-cli-win32-x64-RELEASE_VERSION.tar.gz
macOS .dmg VSCodium.x64.RELEASE_VERSION.dmg
vscodium-reh-web-darwin-x64-RELEASE_VERSION.tar.gz
LinuxCLIvscodium-cli-darwin-x64-RELEASE_VERSION.tar.gz
Linux .deb codium_RELEASE_VERSION_amd64.deb
Web Host vscodium-reh-web-linux-x64-RELEASE_VERSION.tar.gz
CLIvscodium-cli-linux-x64-RELEASE_VERSION.tar.gz
Alpine Remote Host
- + @@ -111,7 +123,11 @@ RELEASE_NOTES - + + + + + @@ -128,7 +144,11 @@ RELEASE_NOTES - + + + + + @@ -152,6 +172,10 @@ RELEASE_NOTES + + + + @@ -167,7 +191,7 @@ RELEASE_NOTES
WindowsWindows User Installer VSCodiumUserSetup-arm64-RELEASE_VERSION.exe
VSCodium-win32-arm64-RELEASE_VERSION.zip
macOSCLIvscodium-cli-win32-arm64-RELEASE_VERSION.tar.gz
macOS .dmg VSCodium.arm64.RELEASE_VERSION.dmg
vscodium-reh-web-darwin-arm64-RELEASE_VERSION.tar.gz
LinuxCLIvscodium-cli-darwin-arm64-RELEASE_VERSION.tar.gz
Linux .deb codium_RELEASE_VERSION_arm64.deb
Web Host vscodium-reh-web-linux-arm64-RELEASE_VERSION.tar.gz
CLIvscodium-cli-linux-arm64-RELEASE_VERSION.tar.gz
Alpine Remote Host
- + @@ -187,13 +211,17 @@ RELEASE_NOTES + + + +
LinuxLinux .deb codium_RELEASE_VERSION_armhf.deb
Web Host vscodium-reh-web-linux-armhf-RELEASE_VERSION.tar.gz
CLIvscodium-cli-linux-armhf-RELEASE_VERSION.tar.gz
## PPC 64bits - + @@ -205,13 +233,17 @@ RELEASE_NOTES + + + +
LinuxLinux .tar.gz VSCodium-linux-ppc64le-RELEASE_VERSION.tar.gz
Web Host vscodium-reh-web-linux-ppc64le-RELEASE_VERSION.tar.gz
CLIvscodium-cli-linux-ppc64le-RELEASE_VERSION.tar.gz
## RISC-V 64bits - + @@ -223,13 +255,17 @@ RELEASE_NOTES + + + +
LinuxLinux .tar.gz VSCodium-linux-riscv64-RELEASE_VERSION.tar.gz
Web Host vscodium-reh-web-linux-riscv64-RELEASE_VERSION.tar.gz
CLIvscodium-cli-linux-riscv64-RELEASE_VERSION.tar.gz
## Loong 64bits - + @@ -241,13 +277,17 @@ RELEASE_NOTES + + + +
LinuxLinux .tar.gz VSCodium-linux-loong64-RELEASE_VERSION.tar.gz
Web Host vscodium-reh-web-linux-loong64-RELEASE_VERSION.tar.gz
CLIvscodium-cli-linux-loong64-RELEASE_VERSION.tar.gz
## s390x - + @@ -255,4 +295,8 @@ RELEASE_NOTES + + + +
LinuxLinux Remote Host vscodium-reh-linux-s390x-RELEASE_VERSION.tar.gz
Web Host vscodium-reh-web-linux-s390x-RELEASE_VERSION.tar.gz
CLIvscodium-cli-linux-s390x-RELEASE_VERSION.tar.gz