prepare_vscode.sh 9.8 KB

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