prepare_vscode.sh 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239
  1. #!/usr/bin/env bash
  2. # shellcheck disable=SC1091,2154
  3. set -e
  4. # include common functions
  5. . ./utils.sh
  6. if [[ "${VSCODE_QUALITY}" == "insider" ]]; then
  7. cp -rp src/insider/* vscode/
  8. else
  9. cp -rp src/stable/* vscode/
  10. fi
  11. cp -f LICENSE vscode/LICENSE.txt
  12. cd vscode || { echo "'vscode' dir not found"; exit 1; }
  13. ../update_settings.sh
  14. # apply patches
  15. { set +x; } 2>/dev/null
  16. echo "APP_NAME=\"${APP_NAME}\""
  17. echo "APP_NAME_LC=\"${APP_NAME_LC}\""
  18. echo "BINARY_NAME=\"${BINARY_NAME}\""
  19. echo "GH_REPO_PATH=\"${GH_REPO_PATH}\""
  20. echo "ORG_NAME=\"${ORG_NAME}\""
  21. for file in ../patches/*.patch; do
  22. if [[ -f "${file}" ]]; then
  23. apply_patch "${file}"
  24. fi
  25. done
  26. if [[ "${VSCODE_QUALITY}" == "insider" ]]; then
  27. for file in ../patches/insider/*.patch; do
  28. if [[ -f "${file}" ]]; then
  29. apply_patch "${file}"
  30. fi
  31. done
  32. fi
  33. if [[ -d "../patches/${OS_NAME}/" ]]; then
  34. for file in "../patches/${OS_NAME}/"*.patch; do
  35. if [[ -f "${file}" ]]; then
  36. apply_patch "${file}"
  37. fi
  38. done
  39. fi
  40. for file in ../patches/user/*.patch; do
  41. if [[ -f "${file}" ]]; then
  42. apply_patch "${file}"
  43. fi
  44. done
  45. set -x
  46. export ELECTRON_SKIP_BINARY_DOWNLOAD=1
  47. export PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1
  48. if [[ "${OS_NAME}" == "linux" ]]; then
  49. export VSCODE_SKIP_NODE_VERSION_CHECK=1
  50. if [[ "${npm_config_arch}" == "arm" ]]; then
  51. export npm_config_arm_version=7
  52. fi
  53. elif [[ "${OS_NAME}" == "windows" ]]; then
  54. if [[ "${npm_config_arch}" == "arm" ]]; then
  55. export npm_config_arm_version=7
  56. fi
  57. fi
  58. mv .npmrc .npmrc.bak
  59. cp ../npmrc .npmrc
  60. for i in {1..5}; do # try 5 times
  61. npm ci && break
  62. if [[ $i == 3 ]]; then
  63. echo "Npm install failed too many times" >&2
  64. exit 1
  65. fi
  66. echo "Npm install failed $i, trying again..."
  67. sleep $(( 15 * (i + 1)))
  68. done
  69. mv .npmrc.bak .npmrc
  70. setpath() {
  71. local jsonTmp
  72. { set +x; } 2>/dev/null
  73. jsonTmp=$( jq --arg 'path' "${2}" --arg 'value' "${3}" 'setpath([$path]; $value)' "${1}.json" )
  74. echo "${jsonTmp}" > "${1}.json"
  75. set -x
  76. }
  77. setpath_json() {
  78. local jsonTmp
  79. { set +x; } 2>/dev/null
  80. jsonTmp=$( jq --arg 'path' "${2}" --argjson 'value' "${3}" 'setpath([$path]; $value)' "${1}.json" )
  81. echo "${jsonTmp}" > "${1}.json"
  82. set -x
  83. }
  84. # product.json
  85. cp product.json{,.bak}
  86. setpath "product" "checksumFailMoreInfoUrl" "https://go.microsoft.com/fwlink/?LinkId=828886"
  87. setpath "product" "documentationUrl" "https://go.microsoft.com/fwlink/?LinkID=533484#vscode"
  88. setpath_json "product" "extensionsGallery" '{"serviceUrl": "https://open-vsx.org/vscode/gallery", "itemUrl": "https://open-vsx.org/vscode/item", "extensionUrlTemplate": "https://open-vsx.org/vscode/gallery/{publisher}/{name}/latest"}'
  89. setpath "product" "introductoryVideosUrl" "https://go.microsoft.com/fwlink/?linkid=832146"
  90. setpath "product" "keyboardShortcutsUrlLinux" "https://go.microsoft.com/fwlink/?linkid=832144"
  91. setpath "product" "keyboardShortcutsUrlMac" "https://go.microsoft.com/fwlink/?linkid=832143"
  92. setpath "product" "keyboardShortcutsUrlWin" "https://go.microsoft.com/fwlink/?linkid=832145"
  93. setpath "product" "licenseUrl" "https://github.com/VSCodium/vscodium/blob/master/LICENSE"
  94. setpath_json "product" "linkProtectionTrustedDomains" '["https://open-vsx.org"]'
  95. setpath "product" "releaseNotesUrl" "https://go.microsoft.com/fwlink/?LinkID=533483#vscode"
  96. setpath "product" "reportIssueUrl" "https://github.com/VSCodium/vscodium/issues/new"
  97. setpath "product" "requestFeatureUrl" "https://go.microsoft.com/fwlink/?LinkID=533482"
  98. setpath "product" "tipsAndTricksUrl" "https://go.microsoft.com/fwlink/?linkid=852118"
  99. setpath "product" "twitterUrl" "https://go.microsoft.com/fwlink/?LinkID=533687"
  100. if [[ "${DISABLE_UPDATE}" != "yes" ]]; then
  101. setpath "product" "updateUrl" "https://raw.githubusercontent.com/VSCodium/versions/refs/heads/master"
  102. setpath "product" "downloadUrl" "https://github.com/VSCodium/vscodium/releases"
  103. fi
  104. if [[ "${VSCODE_QUALITY}" == "insider" ]]; then
  105. setpath "product" "nameShort" "VSCodium - Insiders"
  106. setpath "product" "nameLong" "VSCodium - Insiders"
  107. setpath "product" "applicationName" "codium-insiders"
  108. setpath "product" "dataFolderName" ".vscodium-insiders"
  109. setpath "product" "linuxIconName" "vscodium-insiders"
  110. setpath "product" "quality" "insider"
  111. setpath "product" "urlProtocol" "vscodium-insiders"
  112. setpath "product" "serverApplicationName" "codium-server-insiders"
  113. setpath "product" "serverDataFolderName" ".vscodium-server-insiders"
  114. setpath "product" "darwinBundleIdentifier" "com.vscodium.VSCodiumInsiders"
  115. setpath "product" "win32AppUserModelId" "VSCodium.VSCodiumInsiders"
  116. setpath "product" "win32DirName" "VSCodium Insiders"
  117. setpath "product" "win32MutexName" "vscodiuminsiders"
  118. setpath "product" "win32NameVersion" "VSCodium Insiders"
  119. setpath "product" "win32RegValueName" "VSCodiumInsiders"
  120. setpath "product" "win32ShellNameShort" "VSCodium Insiders"
  121. setpath "product" "win32AppId" "{{EF35BB36-FA7E-4BB9-B7DA-D1E09F2DA9C9}"
  122. setpath "product" "win32x64AppId" "{{B2E0DDB2-120E-4D34-9F7E-8C688FF839A2}"
  123. setpath "product" "win32arm64AppId" "{{44721278-64C6-4513-BC45-D48E07830599}"
  124. setpath "product" "win32UserAppId" "{{ED2E5618-3E7E-4888-BF3C-A6CCC84F586F}"
  125. setpath "product" "win32x64UserAppId" "{{20F79D0D-A9AC-4220-9A81-CE675FFB6B41}"
  126. setpath "product" "win32arm64UserAppId" "{{2E362F92-14EA-455A-9ABD-3E656BBBFE71}"
  127. else
  128. setpath "product" "nameShort" "VSCodium"
  129. setpath "product" "nameLong" "VSCodium"
  130. setpath "product" "applicationName" "codium"
  131. setpath "product" "linuxIconName" "vscodium"
  132. setpath "product" "quality" "stable"
  133. setpath "product" "urlProtocol" "vscodium"
  134. setpath "product" "serverApplicationName" "codium-server"
  135. setpath "product" "serverDataFolderName" ".vscodium-server"
  136. setpath "product" "darwinBundleIdentifier" "com.vscodium"
  137. setpath "product" "win32AppUserModelId" "VSCodium.VSCodium"
  138. setpath "product" "win32DirName" "VSCodium"
  139. setpath "product" "win32MutexName" "vscodium"
  140. setpath "product" "win32NameVersion" "VSCodium"
  141. setpath "product" "win32RegValueName" "VSCodium"
  142. setpath "product" "win32ShellNameShort" "VSCodium"
  143. setpath "product" "win32AppId" "{{763CBF88-25C6-4B10-952F-326AE657F16B}"
  144. setpath "product" "win32x64AppId" "{{88DA3577-054F-4CA1-8122-7D820494CFFB}"
  145. setpath "product" "win32arm64AppId" "{{67DEE444-3D04-4258-B92A-BC1F0FF2CAE4}"
  146. setpath "product" "win32UserAppId" "{{0FD05EB4-651E-4E78-A062-515204B47A3A}"
  147. setpath "product" "win32x64UserAppId" "{{2E1F05D1-C245-4562-81EE-28188DB6FD17}"
  148. setpath "product" "win32arm64UserAppId" "{{57FD70A5-1B8D-4875-9F40-C5553F094828}"
  149. fi
  150. jsonTmp=$( jq -s '.[0] * .[1]' product.json ../product.json )
  151. echo "${jsonTmp}" > product.json && unset jsonTmp
  152. cat product.json
  153. # package.json
  154. cp package.json{,.bak}
  155. setpath "package" "version" "$( echo "${RELEASE_VERSION}" | sed -n -E "s/^(.*)\.([0-9]+)(-insider)?$/\1/p" )"
  156. setpath "package" "release" "$( echo "${RELEASE_VERSION}" | sed -n -E "s/^(.*)\.([0-9]+)(-insider)?$/\2/p" )"
  157. replace 's|Microsoft Corporation|VSCodium|' package.json
  158. # announcements
  159. replace "s|\\[\\/\\* BUILTIN_ANNOUNCEMENTS \\*\\/\\]|$( tr -d '\n' < ../announcements-builtin.json )|" src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStarted.ts
  160. ../undo_telemetry.sh
  161. replace 's|Microsoft Corporation|VSCodium|' build/lib/electron.js
  162. replace 's|Microsoft Corporation|VSCodium|' build/lib/electron.ts
  163. replace 's|([0-9]) Microsoft|\1 VSCodium|' build/lib/electron.js
  164. replace 's|([0-9]) Microsoft|\1 VSCodium|' build/lib/electron.ts
  165. if [[ "${OS_NAME}" == "linux" ]]; then
  166. # microsoft adds their apt repo to sources
  167. # unless the app name is code-oss
  168. # as we are renaming the application to vscodium
  169. # we need to edit a line in the post install template
  170. if [[ "${VSCODE_QUALITY}" == "insider" ]]; then
  171. sed -i "s/code-oss/codium-insiders/" resources/linux/debian/postinst.template
  172. else
  173. sed -i "s/code-oss/codium/" resources/linux/debian/postinst.template
  174. fi
  175. # fix the packages metadata
  176. # code.appdata.xml
  177. sed -i 's|Visual Studio Code|VSCodium|g' resources/linux/code.appdata.xml
  178. sed -i 's|https://code.visualstudio.com/docs/setup/linux|https://github.com/VSCodium/vscodium#download-install|' resources/linux/code.appdata.xml
  179. sed -i 's|https://code.visualstudio.com/home/home-screenshot-linux-lg.png|https://vscodium.com/img/vscodium.png|' resources/linux/code.appdata.xml
  180. sed -i 's|https://code.visualstudio.com|https://vscodium.com|' resources/linux/code.appdata.xml
  181. # control.template
  182. sed -i 's|Microsoft Corporation <vscode-linux@microsoft.com>|VSCodium Team https://github.com/VSCodium/vscodium/graphs/contributors|' resources/linux/debian/control.template
  183. sed -i 's|Visual Studio Code|VSCodium|g' resources/linux/debian/control.template
  184. sed -i 's|https://code.visualstudio.com/docs/setup/linux|https://github.com/VSCodium/vscodium#download-install|' resources/linux/debian/control.template
  185. sed -i 's|https://code.visualstudio.com|https://vscodium.com|' resources/linux/debian/control.template
  186. # code.spec.template
  187. sed -i 's|Microsoft Corporation|VSCodium Team|' resources/linux/rpm/code.spec.template
  188. sed -i 's|Visual Studio Code Team <vscode-linux@microsoft.com>|VSCodium Team https://github.com/VSCodium/vscodium/graphs/contributors|' resources/linux/rpm/code.spec.template
  189. sed -i 's|Visual Studio Code|VSCodium|' resources/linux/rpm/code.spec.template
  190. sed -i 's|https://code.visualstudio.com/docs/setup/linux|https://github.com/VSCodium/vscodium#download-install|' resources/linux/rpm/code.spec.template
  191. sed -i 's|https://code.visualstudio.com|https://vscodium.com|' resources/linux/rpm/code.spec.template
  192. # snapcraft.yaml
  193. sed -i 's|Visual Studio Code|VSCodium|' resources/linux/rpm/code.spec.template
  194. elif [[ "${OS_NAME}" == "windows" ]]; then
  195. # code.iss
  196. sed -i 's|https://code.visualstudio.com|https://vscodium.com|' build/win32/code.iss
  197. sed -i 's|Microsoft Corporation|VSCodium|' build/win32/code.iss
  198. fi
  199. cd ..