prepare_vscode.sh 10 KB

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