prepare_vscode.sh 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234
  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}" 1>&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}" 1>&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}" 1>&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 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
  148. unset jsonTmp
  149. cat product.json
  150. # package.json
  151. cp package.json package.json.bak
  152. setpath "package" "version" "$( echo "${RELEASE_VERSION}" | sed -n -E "s/^(.*)\.([0-9]+)(-insider)?$/\1/p" )"
  153. setpath "package" "release" "$( echo "${RELEASE_VERSION}" | sed -n -E "s/^(.*)\.([0-9]+)(-insider)?$/\2/p" )"
  154. replace 's|Microsoft Corporation|VSCodium|' package.json
  155. # announcements
  156. replace "s|\\[\\/\\* BUILTIN_ANNOUNCEMENTS \\*\\/\\]|$( tr -d '\n' < ../announcements-builtin.json )|" src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStarted.ts
  157. ../undo_telemetry.sh
  158. replace 's|Microsoft Corporation|VSCodium|' build/lib/electron.js
  159. replace 's|Microsoft Corporation|VSCodium|' build/lib/electron.ts
  160. replace 's|([0-9]) Microsoft|\1 VSCodium|' build/lib/electron.js
  161. replace 's|([0-9]) Microsoft|\1 VSCodium|' build/lib/electron.ts
  162. if [[ "${OS_NAME}" == "linux" ]]; then
  163. # microsoft adds their apt repo to sources
  164. # unless the app name is code-oss
  165. # as we are renaming the application to vscodium
  166. # we need to edit a line in the post install template
  167. if [[ "${VSCODE_QUALITY}" == "insider" ]]; then
  168. sed -i "s/code-oss/codium-insiders/" resources/linux/debian/postinst.template
  169. else
  170. sed -i "s/code-oss/codium/" resources/linux/debian/postinst.template
  171. fi
  172. # fix the packages metadata
  173. # code.appdata.xml
  174. sed -i 's|Visual Studio Code|VSCodium|g' resources/linux/code.appdata.xml
  175. sed -i 's|https://code.visualstudio.com/docs/setup/linux|https://github.com/VSCodium/vscodium#download-install|' resources/linux/code.appdata.xml
  176. sed -i 's|https://code.visualstudio.com/home/home-screenshot-linux-lg.png|https://vscodium.com/img/vscodium.png|' resources/linux/code.appdata.xml
  177. sed -i 's|https://code.visualstudio.com|https://vscodium.com|' resources/linux/code.appdata.xml
  178. # control.template
  179. sed -i 's|Microsoft Corporation <vscode-linux@microsoft.com>|VSCodium Team https://github.com/VSCodium/vscodium/graphs/contributors|' resources/linux/debian/control.template
  180. sed -i 's|https://code.visualstudio.com|https://vscodium.com|' resources/linux/debian/control.template
  181. sed -i 's|Visual Studio Code|VSCodium|g' resources/linux/debian/control.template
  182. sed -i 's|https://code.visualstudio.com/docs/setup/linux|https://github.com/VSCodium/vscodium#download-install|' resources/linux/debian/control.template
  183. # code.spec.template
  184. sed -i 's|https://code.visualstudio.com/docs/setup/linux|https://github.com/VSCodium/vscodium#download-install|' resources/linux/rpm/code.spec.template
  185. sed -i 's|Microsoft Corporation|VSCodium Team|' resources/linux/rpm/code.spec.template
  186. 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
  187. sed -i 's|https://code.visualstudio.com|https://vscodium.com|' resources/linux/rpm/code.spec.template
  188. sed -i 's|Visual Studio Code|VSCodium|' resources/linux/rpm/code.spec.template
  189. # snapcraft.yaml
  190. sed -i 's|Visual Studio Code|VSCodium|' resources/linux/rpm/code.spec.template
  191. elif [[ "${OS_NAME}" == "windows" ]]; then
  192. # code.iss
  193. sed -i 's|https://code.visualstudio.com|https://vscodium.com|' build/win32/code.iss
  194. sed -i 's|Microsoft Corporation|VSCodium|' build/win32/code.iss
  195. fi
  196. cd ..