Compare commits
104 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f05272f2d0 | ||
|
|
383b7ef4f8 | ||
|
|
2874277aa4 | ||
|
|
8883466ef5 | ||
|
|
fdc6b32d8b | ||
|
|
81836873af | ||
|
|
3fa8eee9fe | ||
|
|
55d502d659 | ||
|
|
f6a99949c5 | ||
|
|
85126f1a7c | ||
|
|
bca4eea470 | ||
|
|
2b190dfe51 | ||
|
|
c4583ad3f0 | ||
|
|
79a9f4a292 | ||
|
|
112f730493 | ||
|
|
7313f3ad25 | ||
|
|
bbaaed2ec1 | ||
|
|
3737c9f4e2 | ||
|
|
90bc38c840 | ||
|
|
84b4396476 | ||
|
|
add78d6829 | ||
|
|
98d30bdc2c | ||
|
|
31355417a8 | ||
|
|
c3debb387d | ||
|
|
c53a88ee51 | ||
|
|
c2469ff520 | ||
|
|
70082e0f0f | ||
|
|
e9ea41fcfa | ||
|
|
014d9a339d | ||
|
|
4855694fd6 | ||
|
|
e480df5b1f | ||
|
|
0932463dfb | ||
|
|
65e376786f | ||
|
|
afe72aba83 | ||
|
|
bff2e71e55 | ||
|
|
966ae12699 | ||
|
|
843ef66728 | ||
|
|
8336a4c7ad | ||
|
|
1eff01d6f0 | ||
|
|
db8d1e7a8d | ||
|
|
c741ae3347 | ||
|
|
becd52f518 | ||
|
|
7ee4f2f735 | ||
|
|
3208188249 | ||
|
|
be445bcba6 | ||
|
|
3277bd4fa1 | ||
|
|
08b0b1b3e5 | ||
|
|
c46abc14ee | ||
|
|
5bd755a9cc | ||
|
|
1cbc6e55bf | ||
|
|
351460f992 | ||
|
|
f7e1c11ea7 | ||
|
|
50197bbeef | ||
|
|
b319b178ea | ||
|
|
2dab7cfcdf | ||
|
|
6a86200d38 | ||
|
|
c803059121 | ||
|
|
d529fd3c20 | ||
|
|
f817226abd | ||
|
|
353c002605 | ||
|
|
3f00a255b1 | ||
|
|
23152cf50f | ||
|
|
1f31a1c27b | ||
|
|
49eb715333 | ||
|
|
bbcdc2be11 | ||
|
|
dfd7ebbf85 | ||
|
|
e087f00ff1 | ||
|
|
79bc275386 | ||
|
|
851b5f2659 | ||
|
|
e5de9c3096 | ||
|
|
3b6954231f | ||
|
|
99840540ac | ||
|
|
3103c80234 | ||
|
|
6a4668040b | ||
|
|
02755e7599 | ||
|
|
36b06dd66b | ||
|
|
33a6670cad | ||
|
|
1ef601a79b | ||
|
|
c67c2ad9f5 | ||
|
|
d164e43b78 | ||
|
|
f3ba593ae7 | ||
|
|
78b32d7931 | ||
|
|
c71f2250ce | ||
|
|
b0154c7831 | ||
|
|
23313d41ba | ||
|
|
cf48030b59 | ||
|
|
848aabfe54 | ||
|
|
10a0cb4b30 | ||
|
|
0469329683 | ||
|
|
6acd2fbfe1 | ||
|
|
38810539a7 | ||
|
|
34b399c05a | ||
|
|
b0ff3b4f34 | ||
|
|
ca2dc5fcaf | ||
|
|
962326e182 | ||
|
|
d3371f8aab | ||
|
|
0f5a7d4a1b | ||
|
|
02cc193086 | ||
|
|
e564685c1e | ||
|
|
85cbd0b0f2 | ||
|
|
b748657b09 | ||
|
|
db02ad1133 | ||
|
|
573c0230c5 | ||
|
|
bb483f44e2 |
25
.editorconfig
Normal file
@@ -0,0 +1,25 @@
|
||||
root = true
|
||||
|
||||
[*]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
tab_width = 2
|
||||
end_of_line = lf
|
||||
charset = utf-8
|
||||
trim_trailing_whitespace = true
|
||||
insert_final_newline = true
|
||||
|
||||
[*.sh]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
|
||||
[*.{yml,yaml}]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
|
||||
[*.patch]
|
||||
trim_trailing_whitespace = false
|
||||
insert_final_newline = false
|
||||
|
||||
[*.svg]
|
||||
insert_final_newline = false
|
||||
1
.gitattributes
vendored
@@ -1 +0,0 @@
|
||||
*.zip filter=lfs diff=lfs merge=lfs -text
|
||||
2
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@@ -30,7 +30,7 @@ A clear and concise description of what you expected to happen.
|
||||
If applicable, add screenshots to help explain your problem.
|
||||
|
||||
**Desktop (please complete the following information):**
|
||||
- OS: [e.g. Mac OS, Ubuntu 16.04, etc]
|
||||
- OS: [e.g. Mac OS, Ubuntu 20.04, etc]
|
||||
- Architecture [e.g. x64, ia32, arm64]
|
||||
- Version [e.g. 1.33.0]
|
||||
|
||||
|
||||
106
.github/workflows/linux.yml
vendored
@@ -9,9 +9,9 @@ on:
|
||||
branches: [ master ]
|
||||
|
||||
jobs:
|
||||
linux:
|
||||
release:
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
container:
|
||||
image: ${{ matrix.image }}
|
||||
env:
|
||||
OS_NAME: 'linux'
|
||||
@@ -20,7 +20,6 @@ jobs:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
vscode_arch: [x64, arm64, armhf]
|
||||
include:
|
||||
- vscode_arch: x64
|
||||
npm_arch: x64
|
||||
@@ -33,22 +32,25 @@ jobs:
|
||||
image: vscodium/vscodium-linux-build-agent:stretch-armhf
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Install GH
|
||||
run: ./install_gh.sh
|
||||
|
||||
- name: Setup Node.js environment
|
||||
uses: actions/setup-node@v1
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 14
|
||||
node-version: 16
|
||||
|
||||
- name: Install Yarn
|
||||
run: npm install -g yarn
|
||||
|
||||
- name: Check PR or cron
|
||||
run: ./check_cron_or_pr.sh
|
||||
|
||||
- name: Clone VSCode repo
|
||||
run: ./get_repo.sh
|
||||
|
||||
- name: Check PR or cron
|
||||
run: ./check_cron_or_pr.sh
|
||||
|
||||
- name: Check existing VSCodium tags/releases
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
@@ -66,7 +68,7 @@ jobs:
|
||||
if: env.SHOULD_BUILD == 'yes'
|
||||
|
||||
- name: Cache yarn directory
|
||||
uses: actions/cache@v2
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: ${{ steps.yarnCacheDirPath.outputs.dir }}
|
||||
key: linux-${{ matrix.npm_arch }}-yarnCacheDir-${{ steps.yarnCacheKey.outputs.value }}
|
||||
@@ -80,46 +82,68 @@ jobs:
|
||||
run: ./build.sh
|
||||
if: env.SHOULD_BUILD == 'yes'
|
||||
|
||||
- name: Zip release
|
||||
run: |
|
||||
cd VSCode-linux-${VSCODE_ARCH}
|
||||
tar czf ../VSCodium-linux-${VSCODE_ARCH}-${MS_TAG}.tar.gz .
|
||||
- name: Prepare artifacts
|
||||
run: ./prepare_artifacts.sh
|
||||
if: env.SHOULD_BUILD == 'yes' && env.SHOULD_DEPLOY == 'yes'
|
||||
|
||||
- name: Move/rename build artifacts
|
||||
run: |
|
||||
cp vscode/.build/linux/deb/*/deb/*.deb .
|
||||
cp vscode/.build/linux/rpm/*/*.rpm .
|
||||
|
||||
if [[ "${VSCODE_ARCH}" == "x64" ]]; then
|
||||
cp build/linux/appimage/out/*.AppImage* .
|
||||
fi
|
||||
if: env.SHOULD_BUILD == 'yes' && env.SHOULD_DEPLOY == 'yes'
|
||||
|
||||
- name: Generate shasums
|
||||
run: ./sum.sh
|
||||
if: env.SHOULD_BUILD == 'yes' && env.SHOULD_DEPLOY == 'yes'
|
||||
|
||||
- name: Release
|
||||
uses: softprops/action-gh-release@v1
|
||||
if: env.SHOULD_BUILD == 'yes' && env.SHOULD_DEPLOY == 'yes'
|
||||
with:
|
||||
tag_name: ${{ env.MS_TAG }}
|
||||
files: |
|
||||
./*.sha256
|
||||
./*.zip
|
||||
./*.tar.gz
|
||||
./*.deb
|
||||
./*.rpm
|
||||
./VSCodium-*.AppImage
|
||||
./VSCodium-*.AppImage.zsync
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
run: ./release.sh
|
||||
if: env.SHOULD_BUILD == 'yes' && env.SHOULD_DEPLOY == 'yes'
|
||||
|
||||
- name: Update versions repo
|
||||
if: env.SHOULD_BUILD == 'yes' && env.SHOULD_DEPLOY == 'yes'
|
||||
run: ./update_version.sh
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.STRONGER_GITHUB_TOKEN }}
|
||||
GITHUB_USERNAME: ${{ github.repository_owner }}
|
||||
if: env.SHOULD_BUILD == 'yes' && env.SHOULD_DEPLOY == 'yes'
|
||||
|
||||
snap:
|
||||
needs: release
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
platform:
|
||||
- amd64
|
||||
# - arm64
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Check version
|
||||
run: ./stores/snapcraft/check_version.sh
|
||||
env:
|
||||
ARCHITECTURE: ${{ matrix.platform }}
|
||||
SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAP_STORE_LOGIN }}
|
||||
|
||||
# - uses: docker/setup-qemu-action@v1
|
||||
# if: env.SHOULD_DEPLOY == 'yes'
|
||||
|
||||
# - uses: diddlesnaps/snapcraft-multiarch-action@v1
|
||||
# with:
|
||||
# path: stores/snapcraft
|
||||
# architecture: ${{ matrix.platform }}
|
||||
# id: build
|
||||
# if: env.SHOULD_DEPLOY == 'yes'
|
||||
|
||||
# - uses: diddlesnaps/snapcraft-review-action@v1
|
||||
# with:
|
||||
# snap: ${{ steps.build.outputs.snap }}
|
||||
# isClassic: 'true'
|
||||
# if: env.SHOULD_DEPLOY == 'yes'
|
||||
- uses: snapcore/action-build@v1
|
||||
with:
|
||||
path: stores/snapcraft
|
||||
id: build
|
||||
if: env.SHOULD_DEPLOY == 'yes'
|
||||
|
||||
|
||||
- uses: snapcore/action-publish@master
|
||||
env:
|
||||
SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAP_STORE_LOGIN }}
|
||||
with:
|
||||
snap: ${{ steps.build.outputs.snap }}
|
||||
release: stable
|
||||
if: env.SHOULD_DEPLOY == 'yes'
|
||||
|
||||
15
.github/workflows/lock.yml
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
name: Lock Threads
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '0 0 * * Mon'
|
||||
|
||||
jobs:
|
||||
lock:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: dessant/lock-threads@v3
|
||||
with:
|
||||
github-token: ${{ github.token }}
|
||||
issue-inactive-days: '90'
|
||||
pr-inactive-days: '90'
|
||||
77
.github/workflows/macos.yml
vendored
@@ -10,31 +10,39 @@ on:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: macOS-latest
|
||||
runs-on: ${{ matrix.runner }}
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- runner: macOS-10.15
|
||||
vscode_arch: x64
|
||||
- runner: [self-hosted, macOS, ARM64]
|
||||
vscode_arch: arm64
|
||||
|
||||
env:
|
||||
OS_NAME: "osx"
|
||||
VSCODE_ARCH: "x64"
|
||||
VSCODE_ARCH: ${{ matrix.vscode_arch }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Setup Node.js environment
|
||||
uses: actions/setup-node@v1
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 14
|
||||
|
||||
- name: Check PR or cron
|
||||
run: |
|
||||
. check_cron_or_pr.sh
|
||||
node-version: 16
|
||||
|
||||
- name: Clone VSCode repo
|
||||
run: |
|
||||
. get_repo.sh
|
||||
run: . get_repo.sh
|
||||
|
||||
- name: Check PR or cron
|
||||
run: . check_cron_or_pr.sh
|
||||
|
||||
- name: Check existing VSCodium tags/releases
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
run: |
|
||||
. check_tags.sh
|
||||
run: . check_tags.sh
|
||||
if: env.SHOULD_DEPLOY == 'yes'
|
||||
|
||||
- name: Compute cache key
|
||||
@@ -48,7 +56,7 @@ jobs:
|
||||
if: env.SHOULD_BUILD == 'yes'
|
||||
|
||||
- name: Cache yarn directory
|
||||
uses: actions/cache@v2
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: ${{ steps.yarnCacheDirPath.outputs.dir }}
|
||||
key: ${{ env.OS_NAME }}-${{ env.VSCODE_ARCH }}-yarnCacheDir-${{ steps.yarnCacheKey.outputs.value }}
|
||||
@@ -72,7 +80,7 @@ jobs:
|
||||
cd "VSCode-darwin-${VSCODE_ARCH}"
|
||||
export CERTIFICATE_P12=VSCodium.p12
|
||||
echo $CERTIFICATE_OSX_P12 | base64 --decode > $CERTIFICATE_P12
|
||||
export KEYCHAIN=build.keychain
|
||||
export KEYCHAIN=$RUNNER_TEMP/build.keychain
|
||||
security create-keychain -p mysecretpassword $KEYCHAIN
|
||||
security default-keychain -s $KEYCHAIN
|
||||
security unlock-keychain -p mysecretpassword $KEYCHAIN
|
||||
@@ -81,35 +89,15 @@ jobs:
|
||||
codesign --deep --force --verbose --sign "$CERTIFICATE_OSX_ID" VSCodium.app
|
||||
fi
|
||||
|
||||
- name: Zip release
|
||||
run: |
|
||||
cd "VSCode-darwin-${VSCODE_ARCH}"
|
||||
zip -r -X -y ../VSCodium-darwin-${VSCODE_ARCH}-${MS_TAG}.zip ./*.app
|
||||
- name: Prepare artifacts
|
||||
run: ./prepare_artifacts.sh
|
||||
if: env.SHOULD_BUILD == 'yes' && env.SHOULD_DEPLOY == 'yes'
|
||||
|
||||
- name: DMG the release
|
||||
run: |
|
||||
pushd "VSCode-darwin-${VSCODE_ARCH}"
|
||||
npx create-dmg VSCodium.app ..
|
||||
mv "../VSCodium ${MS_TAG}.dmg" "../VSCodium.${VSCODE_ARCH}.${MS_TAG}.dmg"
|
||||
popd
|
||||
if: env.SHOULD_BUILD == 'yes' && env.SHOULD_DEPLOY == 'yes'
|
||||
|
||||
- name: Generate shasums
|
||||
run: ./sum.sh
|
||||
if: env.SHOULD_BUILD == 'yes' && env.SHOULD_DEPLOY == 'yes'
|
||||
|
||||
- name: Release
|
||||
uses: softprops/action-gh-release@v1
|
||||
if: env.SHOULD_BUILD == 'yes' && env.SHOULD_DEPLOY == 'yes'
|
||||
with:
|
||||
tag_name: ${{ env.MS_TAG }}
|
||||
files: |
|
||||
./*.zip
|
||||
./*.dmg
|
||||
./*.sha256
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
run: ./release.sh
|
||||
if: env.SHOULD_BUILD == 'yes' && env.SHOULD_DEPLOY == 'yes'
|
||||
|
||||
- name: Update versions repo
|
||||
if: env.SHOULD_BUILD == 'yes' && env.SHOULD_DEPLOY == 'yes'
|
||||
@@ -118,3 +106,12 @@ jobs:
|
||||
GITHUB_TOKEN: ${{ secrets.STRONGER_GITHUB_TOKEN }}
|
||||
GITHUB_USERNAME: ${{ github.repository_owner }}
|
||||
|
||||
- name: Clean up keychain
|
||||
if: always()
|
||||
run: |
|
||||
KEYCHAIN=$RUNNER_TEMP/build.keychain
|
||||
|
||||
if [ -f "$KEYCHAIN" ];
|
||||
then
|
||||
security delete-keychain $KEYCHAIN
|
||||
fi
|
||||
|
||||
79
.github/workflows/windows.yml
vendored
@@ -10,50 +10,47 @@ on:
|
||||
|
||||
jobs:
|
||||
windows:
|
||||
runs-on: windows-2016
|
||||
runs-on: windows-2019
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
env:
|
||||
VSCODE_ARCH: ${{ matrix.vscode_arch }}
|
||||
OS_NAME: 'windows'
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
vscode_arch: [x64, ia32, arm64]
|
||||
vscode_arch:
|
||||
- x64
|
||||
- ia32
|
||||
- arm64
|
||||
|
||||
steps:
|
||||
- name: Checkout github repo (+ download lfs dependencies)
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
lfs: true
|
||||
|
||||
- name: Checkout LFS objects
|
||||
run: git lfs checkout
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Setup Node.js environment
|
||||
uses: actions/setup-node@v1
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 14
|
||||
node-version: 16
|
||||
|
||||
- name: Install Yarn
|
||||
run: npm install -g yarn
|
||||
|
||||
- name: Setup Python 2
|
||||
uses: actions/setup-python@v2
|
||||
- name: Setup Python 3
|
||||
uses: actions/setup-python@v3
|
||||
with:
|
||||
python-version: '2.x'
|
||||
|
||||
- name: Check PR or cron
|
||||
run: ./check_cron_or_pr.sh
|
||||
shell: bash
|
||||
python-version: '3.x'
|
||||
|
||||
- name: Clone VSCode repo
|
||||
run: ./get_repo.sh
|
||||
shell: bash
|
||||
|
||||
- name: Check PR or cron
|
||||
run: ./check_cron_or_pr.sh
|
||||
|
||||
- name: Check existing VSCodium tags/releases
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
run: ./check_tags.sh
|
||||
shell: bash
|
||||
if: env.SHOULD_DEPLOY == 'yes'
|
||||
|
||||
- name: Compute cache key
|
||||
@@ -67,7 +64,7 @@ jobs:
|
||||
if: env.SHOULD_BUILD == 'yes'
|
||||
|
||||
- name: Cache yarn directory
|
||||
uses: actions/cache@v2
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: ${{ steps.yarnCacheDirPath.outputs.dir }}
|
||||
key: ${{ env.OS_NAME }}-${{ env.VSCODE_ARCH }}-yarnCacheDir-${{ steps.yarnCacheKey.outputs.value }}
|
||||
@@ -80,46 +77,30 @@ jobs:
|
||||
npm_config_arch: ${{ matrix.vscode_arch }}
|
||||
npm_config_target_arch: ${{ matrix.vscode_arch }}
|
||||
run: ./build.sh
|
||||
shell: bash
|
||||
if: env.SHOULD_BUILD == 'yes'
|
||||
|
||||
- name: Move/rename build artifacts
|
||||
run: |
|
||||
mv vscode\\.build\\win32-${VSCODE_ARCH}\\system-setup\\VSCodeSetup.exe VSCodiumSetup-${VSCODE_ARCH}-${MS_TAG}.exe
|
||||
mv vscode\\.build\\win32-${VSCODE_ARCH}\\user-setup\\VSCodeSetup.exe VSCodiumUserSetup-${VSCODE_ARCH}-${MS_TAG}.exe
|
||||
mv vscode\\.build\\win32-${VSCODE_ARCH}\\archive\\VSCode-win32-${VSCODE_ARCH}.zip VSCodium-win32-${VSCODE_ARCH}-${MS_TAG}.zip
|
||||
|
||||
if [[ "${VSCODE_ARCH}" == "ia32" || "${VSCODE_ARCH}" == "x64" ]]; then
|
||||
mv build\\windows\\msi\\releasedir\\VSCodium-${VSCODE_ARCH}-${MS_TAG}.msi .
|
||||
mv build\\windows\\msi\\releasedir\\VSCodium-${VSCODE_ARCH}-updates-disabled-${MS_TAG}.msi .
|
||||
fi
|
||||
shell: bash
|
||||
- name: Prepare artifacts
|
||||
run: ./prepare_artifacts.sh
|
||||
if: env.SHOULD_BUILD == 'yes' && env.SHOULD_DEPLOY == 'yes'
|
||||
|
||||
- name: Generate shasums
|
||||
run: ./sum.sh
|
||||
shell: bash
|
||||
if: env.SHOULD_BUILD == 'yes' && env.SHOULD_DEPLOY == 'yes'
|
||||
|
||||
- name: Release
|
||||
uses: softprops/action-gh-release@v1
|
||||
if: env.SHOULD_BUILD == 'yes' && env.SHOULD_DEPLOY == 'yes'
|
||||
with:
|
||||
tag_name: ${{ env.MS_TAG }}
|
||||
files: |
|
||||
./*.sha256
|
||||
./VSCodium*.zip
|
||||
./VSCodiumUserSetup*.exe
|
||||
./VSCodiumSetup*.exe
|
||||
./VSCodium*.msi
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
run: ./release.sh
|
||||
if: env.SHOULD_BUILD == 'yes' && env.SHOULD_DEPLOY == 'yes'
|
||||
|
||||
- name: Update versions repo
|
||||
if: env.SHOULD_BUILD == 'yes' && env.SHOULD_DEPLOY == 'yes'
|
||||
run: ./update_version.sh
|
||||
shell: bash
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.STRONGER_GITHUB_TOKEN }}
|
||||
GITHUB_USERNAME: ${{ github.repository_owner }}
|
||||
|
||||
- if: env.SHOULD_BUILD == 'yes' && env.SHOULD_DEPLOY == 'yes'
|
||||
name: Release to WinGet
|
||||
uses: vedantmgoyal2009/winget-releaser@latest
|
||||
with:
|
||||
identifier: VSCodium.VSCodium
|
||||
release-tag: env.MS_TAG
|
||||
installers-regex: '\.exe$' # only .exe files
|
||||
token: ${{ secrets.STRONGER_GITHUB_TOKEN }}
|
||||
|
||||
9
.gitignore
vendored
@@ -1,7 +1,12 @@
|
||||
vscode
|
||||
VS*/*
|
||||
VSCode*
|
||||
.DS_Store
|
||||
build/linux/appimage/out
|
||||
build/linux/appimage/pkg2appimage.AppDir
|
||||
build/linux/appimage/pkg2appimage-*.AppImage
|
||||
build/linux/appimage/squashfs-root
|
||||
build/linux/appimage/VSCodium
|
||||
build/windows/msi/releasedir
|
||||
build/windows/rtf/Readme (Abridged).txt
|
||||
build/windows/rtf/TXT to RTF Converter.exe
|
||||
build/windows/msi/Files*.wxs
|
||||
build/windows/msi/Files*.wixobj
|
||||
|
||||
@@ -2,45 +2,122 @@
|
||||
|
||||
## Our Pledge
|
||||
|
||||
In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
|
||||
We as members, contributors, and leaders pledge to make participation in our
|
||||
community a harassment-free experience for everyone, regardless of age, body
|
||||
size, visible or invisible disability, ethnicity, sex characteristics, gender
|
||||
identity and expression, level of experience, education, socio-economic status,
|
||||
nationality, personal appearance, race, caste, color, religion, or sexual
|
||||
identity and orientation.
|
||||
|
||||
We pledge to act and interact in ways that contribute to an open, welcoming,
|
||||
diverse, inclusive, and healthy community.
|
||||
|
||||
## Our Standards
|
||||
|
||||
Examples of behavior that contributes to creating a positive environment include:
|
||||
Examples of behavior that contributes to a positive environment for our
|
||||
community include:
|
||||
|
||||
* Using welcoming and inclusive language
|
||||
* Being respectful of differing viewpoints and experiences
|
||||
* Gracefully accepting constructive criticism
|
||||
* Focusing on what is best for the community
|
||||
* Showing empathy towards other community members
|
||||
* Demonstrating empathy and kindness toward other people
|
||||
* Being respectful of differing opinions, viewpoints, and experiences
|
||||
* Giving and gracefully accepting constructive feedback
|
||||
* Accepting responsibility and apologizing to those affected by our mistakes,
|
||||
and learning from the experience
|
||||
* Focusing on what is best not just for us as individuals, but for the overall
|
||||
community
|
||||
|
||||
Examples of unacceptable behavior by participants include:
|
||||
Examples of unacceptable behavior include:
|
||||
|
||||
* The use of sexualized language or imagery and unwelcome sexual attention or advances
|
||||
* Trolling, insulting/derogatory comments, and personal or political attacks
|
||||
* The use of sexualized language or imagery, and sexual attention or advances of
|
||||
any kind
|
||||
* Trolling, insulting or derogatory comments, and personal or political attacks
|
||||
* Public or private harassment
|
||||
* Publishing others' private information, such as a physical or electronic address, without explicit permission
|
||||
* Other conduct which could reasonably be considered inappropriate in a professional setting
|
||||
* Publishing others' private information, such as a physical or email address,
|
||||
without their explicit permission
|
||||
* Other conduct which could reasonably be considered inappropriate in a
|
||||
professional setting
|
||||
|
||||
## Our Responsibilities
|
||||
## Enforcement Responsibilities
|
||||
|
||||
Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
|
||||
Community leaders are responsible for clarifying and enforcing our standards of
|
||||
acceptable behavior and will take appropriate and fair corrective action in
|
||||
response to any behavior that they deem inappropriate, threatening, offensive,
|
||||
or harmful.
|
||||
|
||||
Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
|
||||
Community leaders have the right and responsibility to remove, edit, or reject
|
||||
comments, commits, code, wiki edits, issues, and other contributions that are
|
||||
not aligned to this Code of Conduct, and will communicate reasons for moderation
|
||||
decisions when appropriate.
|
||||
|
||||
## Scope
|
||||
|
||||
This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
|
||||
This Code of Conduct applies within all community spaces, and also applies when
|
||||
an individual is officially representing the community in public spaces.
|
||||
Examples of representing our community include using an official e-mail address,
|
||||
posting via an official social media account, or acting as an appointed
|
||||
representative at an online or offline event.
|
||||
|
||||
## Enforcement
|
||||
|
||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at vscodium@protonmail.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
|
||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
||||
reported to the community leaders responsible for enforcement at
|
||||
vscodium@protonmail.com.
|
||||
All complaints will be reviewed and investigated promptly and fairly.
|
||||
|
||||
Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
|
||||
All community leaders are obligated to respect the privacy and security of the
|
||||
reporter of any incident.
|
||||
|
||||
## Enforcement Guidelines
|
||||
|
||||
Community leaders will follow these Community Impact Guidelines in determining
|
||||
the consequences for any action they deem in violation of this Code of Conduct:
|
||||
|
||||
### 1. Correction
|
||||
|
||||
**Community Impact**: Use of inappropriate language or other behavior deemed
|
||||
unprofessional or unwelcome in the community.
|
||||
|
||||
**Consequence**: A private, written warning from community leaders, providing
|
||||
clarity around the nature of the violation and an explanation of why the
|
||||
behavior was inappropriate. A public apology may be requested.
|
||||
|
||||
### 2. Warning
|
||||
|
||||
**Community Impact**: A violation through a single incident or series of
|
||||
actions.
|
||||
|
||||
**Consequence**: A warning with consequences for continued behavior. No
|
||||
interaction with the people involved, including unsolicited interaction with
|
||||
those enforcing the Code of Conduct, for a specified period of time. This
|
||||
includes avoiding interactions in community spaces as well as external channels
|
||||
like social media. Violating these terms may lead to a temporary or permanent
|
||||
ban.
|
||||
|
||||
### 3. Temporary Ban
|
||||
|
||||
**Community Impact**: A serious violation of community standards, including
|
||||
sustained inappropriate behavior.
|
||||
|
||||
**Consequence**: A temporary ban from any sort of interaction or public
|
||||
communication with the community for a specified period of time. No public or
|
||||
private interaction with the people involved, including unsolicited interaction
|
||||
with those enforcing the Code of Conduct, is allowed during this period.
|
||||
Violating these terms may lead to a permanent ban.
|
||||
|
||||
### 4. Permanent Ban
|
||||
|
||||
**Community Impact**: Demonstrating a pattern of violation of community
|
||||
standards, including sustained inappropriate behavior, harassment of an
|
||||
individual, or aggression toward or disparagement of classes of individuals.
|
||||
|
||||
**Consequence**: A permanent ban from any sort of public interaction within the
|
||||
community.
|
||||
|
||||
## Attribution
|
||||
|
||||
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]
|
||||
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
|
||||
version 2.1, available at
|
||||
[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
|
||||
|
||||
[homepage]: http://contributor-covenant.org
|
||||
[version]: http://contributor-covenant.org/version/1/4/
|
||||
|
||||
[homepage]: https://www.contributor-covenant.org
|
||||
[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
|
||||
|
||||
26
DOCS.md
@@ -11,6 +11,7 @@
|
||||
- [Migrating from Visual Studio Code to VSCodium](#migrating)
|
||||
- [Sign in with GitHub](#signin-github)
|
||||
- [How do I run VSCodium in portable mode?](#portable)
|
||||
- [How do I fix the default file manager?](#file-manager)
|
||||
- [How do I press and hold a key and have it repeat in VSCodium?](#press-and-hold)
|
||||
- [How do I open VSCodium from the terminal?](#terminal-support)
|
||||
- [From Linux .tar.gz](#from-linux-targz)
|
||||
@@ -52,7 +53,7 @@ See [this article](https://www.gitpod.io/blog/open-vsx/) for more information on
|
||||
|
||||
### <a id="howto-vscode-marketplace"></a>How to use the VS Code Marketplace
|
||||
|
||||
You can switch and use the VS Code marketplace by using the following solutions. However, note that [it is not clear whether this is legal](https://github.com/microsoft/vscode/issues/31168).
|
||||
You can switch and use the VS Code marketplace by using the following solutions. However, note that [ this is not legal](https://github.com/microsoft/vscode/issues/31168).
|
||||
|
||||
With the following environment variables:
|
||||
- `VSCODE_GALLERY_SERVICE_URL='https://marketplace.visualstudio.com/_apis/public/gallery'`
|
||||
@@ -82,13 +83,13 @@ with the content:
|
||||
|
||||
### <a id="proprietary-debugging-tools"></a>Proprietary Debugging Tools
|
||||
|
||||
The debugger provided with Microsoft's [C# extension](https://github.com/OmniSharp/omnisharp-vscode) as well as the (Windows) debugger provided with their [C++ extension](https://github.com/Microsoft/vscode-cpptools) are very restrictively licensed to only work with the offical Visual Studio Code build. See [this comment in the C# extension repo](https://github.com/OmniSharp/omnisharp-vscode/issues/2491#issuecomment-418811364) and [this comment in the C++ extension repo](https://github.com/Microsoft/vscode-cpptools/issues/21#issuecomment-248349017).
|
||||
The debugger provided with Microsoft's [C# extension](https://github.com/OmniSharp/omnisharp-vscode) as well as the (Windows) debugger provided with their [C++ extension](https://github.com/Microsoft/vscode-cpptools) are very restrictively licensed to only work with the official Visual Studio Code build. See [this comment in the C# extension repo](https://github.com/OmniSharp/omnisharp-vscode/issues/2491#issuecomment-418811364) and [this comment in the C++ extension repo](https://github.com/Microsoft/vscode-cpptools/issues/21#issuecomment-248349017).
|
||||
|
||||
A workaround exists to get debugging working in C# projects, by using Samsung's opensource [netcoredbg](https://github.com/Samsung/netcoredbg) package. See [this comment](https://github.com/VSCodium/vscodium/issues/82#issue-409806641) for instructions on how to set that up.
|
||||
|
||||
### <a id="proprietary-extensions"></a>Proprietary Extensions
|
||||
|
||||
Like the debuggers mentioned above, some extensions you may find in the marketplace (like the [Remote Development Extensions](https://code.visualstudio.com/docs/remote/remote-overview)) only function with the offical Visual Studio Code build. You can work around this by adding the extension's internal ID (found on the extension's page) to the `extensionAllowedProposedApi` property of the product.json in your VSCodium installation. For example:
|
||||
Like the debuggers mentioned above, some extensions you may find in the marketplace (like the [Remote Development Extensions](https://code.visualstudio.com/docs/remote/remote-overview)) only function with the official Visual Studio Code build. You can work around this by adding the extension's internal ID (found on the extension's page) to the `extensionAllowedProposedApi` property of the product.json in your VSCodium installation. For example:
|
||||
|
||||
```json
|
||||
"extensionAllowedProposedApi": [
|
||||
@@ -134,10 +135,27 @@ Select the scopes dependending of the extension which need access to GitHub. (Gi
|
||||
If you are getting the error `Writing login information to the keychain failed with error 'The name org.freedesktop.secrets was not provided by any .service files'.`, you need to install the package `gnome-keyring`.
|
||||
|
||||
## <a id="portable"></a>How do I run VSCodium in portable mode?
|
||||
You can follow the [Portable Mode instructions](https://code.visualstudio.com/docs/editor/portable) from the Visual Studio Code website.
|
||||
You can follow the [Portable Mode instructions](https://code.visualstudio.com/docs/editor/portable) from the Visual Studio Code website.
|
||||
- **Windows** / **Linux** : the instructions can be followed as written.
|
||||
- **macOS** : portable mode is enabled by the existence of a specially named folder. For Visual Studio Code that folder name is `code-portable-data`. For VSCodium, that folder name is `codium-portable-data`. So to enable portable mode for VSCodium on Mac OS, follow the instructions outlined in the [link above](https://code.visualstudio.com/docs/editor/portable), but create a folder named `codium-portable-data` instead of `code-portable-data`.
|
||||
|
||||
## <a id="file-manager"></a>How do I fix the default file manager (Linux)?
|
||||
|
||||
In some case, VSCodium becomes the file manager used to open directories (instead of apps like Dolphin or Nautilus).<br />
|
||||
It's due to that no application was defined as the default file manager and so the system is using the latest capable application.
|
||||
|
||||
To set the default app, create the file `~/.config/mimeapps.list` with the content like:
|
||||
```
|
||||
[Default Applications]
|
||||
inode/directory=org.gnome.Nautilus.desktop;
|
||||
```
|
||||
|
||||
You can find your regular file manager with the command:
|
||||
```
|
||||
> grep directory /usr/share/applications/mimeinfo.cache
|
||||
inode/directory=codium.desktop;org.gnome.Nautilus.desktop;
|
||||
```
|
||||
|
||||
## <a id="press-and-hold"></a>How do I press and hold a key and have it repeat in VSCodium (Mac)?
|
||||
|
||||
This is a common question for Visual Studio Code and the procedure is slightly different in VSCodium because the `defaults` path is different.
|
||||
|
||||
76
README.md
@@ -7,18 +7,22 @@
|
||||
|
||||
<div id="badges" align="center">
|
||||
|
||||
[](https://github.com/vscodium/vscodium/releases)
|
||||
[](https://dev.azure.com/vscodium/VSCodium/_build?definitionId=1)
|
||||
[](https://github.com/vscodium/vscodium/releases)
|
||||
[](https://github.com/VSCodium/vscodium/blob/master/LICENSE)
|
||||
[](https://gitter.im/VSCodium/Lobby)
|
||||
[](https://snapcraft.io/codium)
|
||||
[](https://snapcraft.io/codium)
|
||||
|
||||
[](https://github.com/VSCodium/vscodium/actions/workflows/linux.yml?query=branch%3Amaster)
|
||||
[](https://github.com/VSCodium/vscodium/actions/workflows/macos.yml?query=branch%3Amaster)
|
||||
[](https://github.com/VSCodium/vscodium/actions/workflows/windows.yml?query=branch%3Amaster)
|
||||
|
||||
</div>
|
||||
|
||||
**This is not a fork. This is a repository of scripts to automatically build Microsoft's `vscode` repository into freely-licensed binaries with a community-driven default configuration.**
|
||||
|
||||
## Table of Contents
|
||||
|
||||
- [Download/Install](#download-install)
|
||||
- [Install with Brew](#install-with-brew)
|
||||
- [Install with Windows Package Manager (WinGet)](#install-with-winget)
|
||||
@@ -28,36 +32,42 @@
|
||||
- [Install with Package Manager](#install-with-package-manager)
|
||||
- [Install on Arch Linux](#install-on-arch-linux)
|
||||
- [Flatpak Option](#flatpak)
|
||||
- [Build](#build)
|
||||
- [Why Does This Exist](#why)
|
||||
- [More Info](#more-info)
|
||||
- [Supported Platforms](#supported-platforms)
|
||||
|
||||
## <a id="download-install"></a>Download/Install
|
||||
|
||||
:tada: :tada: [Download latest release here](https://github.com/VSCodium/vscodium/releases) :tada: :tada:
|
||||
|
||||
[More info / helpful tips are here.](https://github.com/VSCodium/vscodium/blob/master/DOCS.md)
|
||||
|
||||
#### <a id="install-with-brew"></a>Install with Brew (Mac)
|
||||
|
||||
If you are on a Mac and have [Homebrew](https://brew.sh/) installed:
|
||||
```bash
|
||||
brew install --cask vscodium
|
||||
```
|
||||
|
||||
_Note for Mac macOS Mojave users: if you see "App can't be opened because Apple cannot check it for malicious software" when opening VSCodium the first time, you can right-click the application and choose Open. This should only be required the first time opening on Mojave._
|
||||
*Note for macOS users: if you can't open the App, please read [the following troubleshooting](https://github.com/VSCodium/vscodium/wiki/Troubleshooting#macos).*
|
||||
|
||||
#### <a id="install-with-winget"></a>Install with Windows Package Manager (WinGet)
|
||||
|
||||
If you use Windows and have [Windows Package Manager](https://github.com/microsoft/winget-cli) installed:
|
||||
```bash
|
||||
winget install vscodium
|
||||
```
|
||||
|
||||
#### <a id="install-with-choco"></a>Install with Chocolatey (Windows)
|
||||
|
||||
If you use Windows and have [Chocolatey](https://chocolatey.org) installed (thanks to [@Thilas](https://github.com/Thilas)):
|
||||
```bash
|
||||
choco install vscodium
|
||||
```
|
||||
|
||||
#### <a id="install-with-scoop"></a>Install with Scoop (Windows)
|
||||
|
||||
If you use Windows and have [Scoop](https://scoop.sh) installed:
|
||||
```bash
|
||||
scoop bucket add extras
|
||||
@@ -65,19 +75,23 @@ scoop install vscodium
|
||||
```
|
||||
|
||||
#### <a id="install-with-snap"></a>Install with snap (GNU/Linux)
|
||||
VSCodium is available in the [Snap Store](https://snapcraft.io/) as [Codium](https://snapcraft.io/codium), published by the [Snapcrafters](https://github.com/snapcrafters/codium) community.
|
||||
|
||||
VSCodium is available in the [Snap Store](https://snapcraft.io/) as [Codium](https://snapcraft.io/codium), thanks to the help of the [Snapcrafters](https://github.com/snapcrafters/codium) community.
|
||||
If your GNU/Linux distribution has support for [snaps](https://snapcraft.io/docs/installing-snapd):
|
||||
```bash
|
||||
snap install codium --classic
|
||||
```
|
||||
|
||||
#### <a id="install-with-package-manager"></a>Install with Package Manager (GNU/Linux)
|
||||
You can always install using the downloads (deb, rpm, tar) on the [releases page](https://github.com/VSCodium/vscodium/releases), but you can also install using your favorite package manager and get automatic updates. [@paulcarroty](https://github.com/paulcarroty) has set up a repository with instructions [here](https://gitlab.com/paulcarroty/vscodium-deb-rpm-repo). Any issues installing VSCodium using your package manager should be directed to that repository's issue tracker.
|
||||
|
||||
You can always install using the downloads (deb, rpm, tar) on the [releases page](https://github.com/VSCodium/vscodium/releases), but you can also install using your favorite package manager and get automatic updates. [@paulcarroty](https://github.com/paulcarroty) has set up a repository with instructions [here](https://gitlab.com/paulcarroty/vscodium-deb-rpm-repo). Any issues installing VSCodium using your package manager should be directed to that repository's issue tracker.
|
||||
|
||||
#### <a id="install-on-arch-linux"></a>Install on Arch Linux
|
||||
|
||||
VSCodium is available in [AUR](https://wiki.archlinux.org/index.php/Arch_User_Repository) as package [vscodium-bin](https://aur.archlinux.org/packages/vscodium-bin/), maintained by [@binex-dsk](https://github.com/binex-dsk). An alternative package [vscodium-git](https://aur.archlinux.org/packages/vscodium-git/), maintained by [@cedricroijakkers](https://github.com/cedricroijakkers), is also available should you wish to compile from source yourself.
|
||||
|
||||
#### <a id="flatpak"></a>Flatpak Option (GNU/Linux)
|
||||
|
||||
VSCodium is (unofficially) available as a Flatpak app [here](https://flathub.org/apps/details/com.vscodium.codium) and the build repo is [here](https://github.com/flathub/com.vscodium.codium). If your distribution has support for [flatpak](https://flathub.org), and you have enabled the [flathub repo](https://flatpak.org/setup/):
|
||||
```bash
|
||||
flatpak install flathub com.vscodium.codium
|
||||
@@ -85,24 +99,31 @@ flatpak install flathub com.vscodium.codium
|
||||
flatpak run com.vscodium.codium
|
||||
```
|
||||
|
||||
## <a id="build"></a>Build
|
||||
|
||||
Build instructions can be found [here](https://github.com/VSCodium/vscodium/blob/master/docs/build.md)
|
||||
|
||||
## <a id="why"></a>Why Does This Exist
|
||||
|
||||
This repository contains build files to generate free release binaries of Microsoft's VS Code. When we speak of "free software", we're talking about freedom, not price.
|
||||
|
||||
Microsoft's releases of Visual Studio Code are licensed under [this not-FLOSS license](https://code.visualstudio.com/license) and contain telemetry/tracking. According to [this comment](https://github.com/Microsoft/vscode/issues/60#issuecomment-161792005) from a Visual Studio Code maintainer:
|
||||
Microsoft's releases of Visual Studio Code are licensed under [this not-FLOSS license](https://code.visualstudio.com/license) and contain telemetry/tracking. According to [this comment](https://github.com/Microsoft/vscode/issues/60#issuecomment-161792005) from a Visual Studio Code maintainer:
|
||||
|
||||
> When we [Microsoft] build Visual Studio Code, we do exactly this. We clone the vscode repository, we lay down a customized product.json that has Microsoft specific functionality (telemetry, gallery, logo, etc.), and then produce a build that we release under our license.
|
||||
>
|
||||
>
|
||||
> When you clone and build from the vscode repo, none of these endpoints are configured in the default product.json. Therefore, you generate a "clean" build, without the Microsoft customizations, which is by default licensed under the MIT license
|
||||
|
||||
This repo exists so that you don't have to download+build from source. The build scripts in this repo clone Microsoft's vscode repo, run the build commands, and upload the resulting binaries to [GitHub releases](https://github.com/VSCodium/vscodium/releases). __These binaries are licensed under the MIT license. Telemetry is disabled.__
|
||||
|
||||
If you want to build from source yourself, head over to [Microsoft's vscode repo](https://github.com/Microsoft/vscode) and follow their [instructions](https://github.com/Microsoft/vscode/wiki/How-to-Contribute#build-and-run). This repo exists to make it easier to get the latest version of MIT-licensed VS Code.
|
||||
|
||||
Microsoft's build process (which we are running to build the binaries) does download additional files. This was brought up in [Microsoft/vscode#49159](https://github.com/Microsoft/vscode/issues/49159) and [Microsoft/vscode#45978](https://github.com/Microsoft/vscode/issues/45978). These are the packages downloaded during build:
|
||||
Microsoft's build process (which we are running to build the binaries) does download additional files. This was brought up in [Microsoft/vscode#141340](https://github.com/Microsoft/vscode/issues/141340) and [Microsoft/vscode#45978](https://github.com/Microsoft/vscode/issues/45978). These are the packages downloaded during build:
|
||||
|
||||
- Extensions from the Microsoft Marketplace:
|
||||
- [ms-vscode.node-debug2](https://marketplace.visualstudio.com/items?itemName=ms-vscode.node-debug2)
|
||||
- [ms-vscode.node-debug](https://marketplace.visualstudio.com/items?itemName=ms-vscode.node-debug)
|
||||
- [ms-vscode.references-view](https://marketplace.visualstudio.com/items?itemName=ms-vscode.references-view)
|
||||
- [ms-vscode.js-debug-companion](https://marketplace.visualstudio.com/items?itemName=ms-vscode.js-debug-companion)
|
||||
- [ms-vscode.js-debug](https://marketplace.visualstudio.com/items?itemName=ms-vscode.js-debug)
|
||||
- [ms-vscode.vscode-js-profile-table](https://marketplace.visualstudio.com/items?itemName=ms-vscode.vscode-js-profile-table)
|
||||
- From [Electron releases](https://github.com/electron/electron/releases) (using [gulp-atom-electron](https://github.com/joaomoreno/gulp-atom-electron))
|
||||
- electron
|
||||
- ffmpeg
|
||||
@@ -110,22 +131,26 @@ Microsoft's build process (which we are running to build the binaries) does down
|
||||
## <a id="more-info"></a>More Info
|
||||
|
||||
### Documentation
|
||||
|
||||
For more information on getting all the telemetry disabled and tips for migrating from Visual Studio Code to VSCodium, have a look at this [Docs](https://github.com/VSCodium/vscodium/blob/master/DOCS.md) page.
|
||||
|
||||
### Extensions and the Marketplace
|
||||
|
||||
According to the VS Code Marketplace [Terms of Use](https://aka.ms/vsmarketplace-ToU), _you may only install and use Marketplace Offerings with Visual Studio Products and Services._ For this reason, VSCodium uses [open-vsx.org](https://open-vsx.org/), an open source registry for VS Code extensions. See the [Extensions + Marketplace](https://github.com/VSCodium/vscodium/blob/master/DOCS.md#extensions-marketplace) section on the Docs page for more details.
|
||||
|
||||
Please note that some Visual Studio Code extensions have licenses that restrict their use to the official Visual Studio Code builds and therefore do not work with VSCodium. See [this note](https://github.com/VSCodium/vscodium/blob/master/DOCS.md#proprietary-debugging-tools) on the Docs page for what's been found so far and possible workarounds.
|
||||
|
||||
### How are the VSCodium binaries built?
|
||||
|
||||
If you would like to see the commands we run to build `vscode` into VSCodium binaries, have a look at the workflow files in `.github/workflows` for Windows, GNU/Linux and macOS. These build files call all the other scripts in the repo. If you find something that doesn't make sense, feel free to ask about it [on Gitter](https://gitter.im/VSCodium/Lobby).
|
||||
|
||||
The builds are run every day, but exit early if there isn't a new release from Microsoft.
|
||||
The builds are run every day, but exit early if there isn't a new release from Microsoft.
|
||||
|
||||
## <a id="supported-platforms"></a>Supported Platforms
|
||||
The minimal version is limitted by the core component Electron, you may want to check its [supported platform list](https://www.electronjs.org/docs/tutorial/support#supported-platforms).
|
||||
|
||||
The minimal version is limited by the core component Electron, you may want to check its [platform prerequisites](https://www.electronjs.org/docs/latest/development/build-instructions-gn#platform-prerequisites).
|
||||
- [x] macOS (`zip`, `dmg`) OS X 10.10 or newer x64
|
||||
- [x] macOS (`zip`, `dmg`) macOS 11.0 or newer arm64 via x64 emulation, see [status issue](https://github.com/VSCodium/vscodium/issues/597)
|
||||
- [x] macOS (`zip`, `dmg`) macOS 11.0 or newer arm64
|
||||
- [x] GNU/Linux x64 (`deb`, `rpm`, `AppImage`, `tar.gz`)
|
||||
- [x] GNU/Linux x86 (`deb`, `rpm`, `tar.gz`) ([up to v1.35.1](https://code.visualstudio.com/updates/v1_36#_linux-32bit-support-ends))
|
||||
- [x] GNU/Linux arm64 (`deb`, `tar.gz`)
|
||||
@@ -133,13 +158,32 @@ The minimal version is limitted by the core component Electron, you may want to
|
||||
- [x] Windows 7 or newer x64
|
||||
- [x] Windows 7 or newer x86
|
||||
- [x] Windows 10 arm64
|
||||
|
||||
|
||||
## <a id="donate"></a>Donate
|
||||
|
||||
If you would like to support the development of VSCodium, feel free to send BTC to `3PgjE95yzBDTrSPxPiqoxSgZFuKPPAix1N`.
|
||||
|
||||
Special thanks to:
|
||||
- @estatra for the latest logo
|
||||
- @jaredreich for the previous logo
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td>@estatra</td>
|
||||
<td>for the latest logo</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://github.com/jaredreich" target="_blank">@jaredreich</a></td>
|
||||
<td>for the previous logo</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://github.com/PalinuroSec" target="_blank">@PalinuroSec</a></td>
|
||||
<td>for CDN and domain name</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://www.macstadium.com" target="_blank"><img src="https://images.prismic.io/macstadium/66fbce64-707e-41f3-b547-241908884716_MacStadium_Logo.png?w=128&q=75" width="128" height="49" alt="MacStadium logo" /></a></td>
|
||||
<td>for providing a Mac mini M1</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
## <a id="license"></a>License
|
||||
|
||||
[MIT](https://github.com/VSCodium/vscodium/blob/master/LICENSE)
|
||||
|
||||
75
build.sh
@@ -2,14 +2,15 @@
|
||||
|
||||
set -ex
|
||||
|
||||
if [[ "$SHOULD_BUILD" == "yes" ]]; then
|
||||
if [[ "${SHOULD_BUILD}" == "yes" ]]; then
|
||||
npm config set scripts-prepend-node-path true
|
||||
npm config set node_gyp
|
||||
|
||||
echo "MS_COMMIT: ${MS_COMMIT}"
|
||||
|
||||
. prepare_vscode.sh
|
||||
|
||||
cd vscode || exit
|
||||
cd vscode || { echo "'vscode' dir not found"; exit 1; }
|
||||
|
||||
yarn monaco-compile-check
|
||||
yarn valid-layers-check
|
||||
@@ -19,30 +20,68 @@ if [[ "$SHOULD_BUILD" == "yes" ]]; then
|
||||
yarn gulp compile-extensions-build
|
||||
yarn gulp minify-vscode
|
||||
|
||||
if [[ "$OS_NAME" == "osx" ]]; then
|
||||
if [[ "${OS_NAME}" == "osx" ]]; then
|
||||
yarn gulp "vscode-darwin-${VSCODE_ARCH}-min-ci"
|
||||
elif [[ "$OS_NAME" == "windows" ]]; then
|
||||
|
||||
find "../VSCode-darwin-${VSCODE_ARCH}" -exec touch {} \;
|
||||
|
||||
VSCODE_PLATFORM="darwin"
|
||||
elif [[ "${OS_NAME}" == "windows" ]]; then
|
||||
. ../build/windows/rtf/make.sh
|
||||
|
||||
|
||||
yarn gulp "vscode-win32-${VSCODE_ARCH}-min-ci"
|
||||
yarn gulp "vscode-win32-${VSCODE_ARCH}-code-helper"
|
||||
yarn gulp "vscode-win32-${VSCODE_ARCH}-inno-updater"
|
||||
yarn gulp "vscode-win32-${VSCODE_ARCH}-archive"
|
||||
yarn gulp "vscode-win32-${VSCODE_ARCH}-system-setup"
|
||||
yarn gulp "vscode-win32-${VSCODE_ARCH}-user-setup"
|
||||
|
||||
if [[ "${VSCODE_ARCH}" == "ia32" || "${VSCODE_ARCH}" == "x64" ]]; then
|
||||
. ../build/windows/msi/build.sh
|
||||
. ../build/windows/msi/build-updates-disabled.sh
|
||||
|
||||
if [[ "${SHOULD_BUILD_ZIP}" != "no" ]]; then
|
||||
yarn gulp "vscode-win32-${VSCODE_ARCH}-archive"
|
||||
fi
|
||||
|
||||
if [[ "${SHOULD_BUILD_EXE_SYS}" != "no" ]]; then
|
||||
yarn gulp "vscode-win32-${VSCODE_ARCH}-system-setup"
|
||||
fi
|
||||
|
||||
if [[ "${SHOULD_BUILD_EXE_USR}" != "no" ]]; then
|
||||
yarn gulp "vscode-win32-${VSCODE_ARCH}-user-setup"
|
||||
fi
|
||||
|
||||
if [[ "${VSCODE_ARCH}" == "ia32" || "${VSCODE_ARCH}" == "x64" ]]; then
|
||||
if [[ "${SHOULD_BUILD_MSI}" != "no" ]]; then
|
||||
. ../build/windows/msi/build.sh
|
||||
fi
|
||||
|
||||
if [[ "${SHOULD_BUILD_MSI_NOUP}" != "no" ]]; then
|
||||
. ../build/windows/msi/build-updates-disabled.sh
|
||||
fi
|
||||
else
|
||||
SHOULD_BUILD_REH="no"
|
||||
fi
|
||||
|
||||
VSCODE_PLATFORM="win32"
|
||||
else # linux
|
||||
yarn gulp "vscode-linux-${VSCODE_ARCH}-min-ci"
|
||||
if [[ "$SKIP_LINUX_PACKAGES" != "True" ]]; then
|
||||
yarn gulp "vscode-linux-${VSCODE_ARCH}-build-deb"
|
||||
yarn gulp "vscode-linux-${VSCODE_ARCH}-build-rpm"
|
||||
|
||||
. ../build/linux/appimage/build.sh
|
||||
|
||||
find "../VSCode-linux-${VSCODE_ARCH}" -exec touch {} \;
|
||||
|
||||
if [[ "${SKIP_LINUX_PACKAGES}" != "True" ]]; then
|
||||
if [[ "${SHOULD_BUILD_DEB}" != "no" || "${SHOULD_BUILD_APPIMAGE}" != "no" ]]; then
|
||||
yarn gulp "vscode-linux-${VSCODE_ARCH}-build-deb"
|
||||
fi
|
||||
|
||||
if [[ "${SHOULD_BUILD_RPM}" != "no" ]]; then
|
||||
yarn gulp "vscode-linux-${VSCODE_ARCH}-build-rpm"
|
||||
fi
|
||||
|
||||
if [[ "${SHOULD_BUILD_APPIMAGE}" != "no" ]]; then
|
||||
. ../build/linux/appimage/build.sh
|
||||
fi
|
||||
fi
|
||||
|
||||
VSCODE_PLATFORM="linux"
|
||||
fi
|
||||
|
||||
if [[ "${SHOULD_BUILD_REH}" != "no" ]]; then
|
||||
yarn gulp minify-vscode-reh
|
||||
yarn gulp "vscode-reh-${VSCODE_PLATFORM}-${VSCODE_ARCH}-min-ci"
|
||||
fi
|
||||
|
||||
cd ..
|
||||
|
||||
@@ -3,6 +3,16 @@
|
||||
rm -rf VSCode*
|
||||
rm -rf vscode
|
||||
|
||||
UNAME_ARCH=$( uname -m )
|
||||
|
||||
if [[ "${UNAME_ARCH}" == "arm64" ]]; then
|
||||
export VSCODE_ARCH="arm64"
|
||||
else
|
||||
export VSCODE_ARCH="x64"
|
||||
fi
|
||||
|
||||
echo "-- VSCODE_ARCH: ${VSCODE_ARCH}"
|
||||
|
||||
. get_repo.sh
|
||||
|
||||
SHOULD_BUILD=yes CI_BUILD=no OS_NAME=osx VSCODE_ARCH=x64 . build.sh
|
||||
SHOULD_BUILD=yes CI_BUILD=no OS_NAME=osx . build.sh
|
||||
|
||||
@@ -6,7 +6,7 @@ CALLER_DIR=$( pwd )
|
||||
|
||||
cd "$( dirname "${BASH_SOURCE[0]}" )"
|
||||
|
||||
if [[ "$VSCODE_ARCH" == "x64" ]]; then
|
||||
if [[ "${VSCODE_ARCH}" == "x64" ]]; then
|
||||
wget -c https://github.com/$(wget -q https://github.com/AppImage/pkg2appimage/releases -O - | grep "pkg2appimage-.*-x86_64.AppImage" | head -n 1 | cut -d '"' -f 2)
|
||||
chmod +x ./pkg2appimage-*.AppImage
|
||||
|
||||
@@ -19,10 +19,10 @@ if [[ "$VSCODE_ARCH" == "x64" ]]; then
|
||||
sed -i 's/grep docker/# grep docker/' pkg2appimage.AppDir/usr/share/pkg2appimage/functions.sh
|
||||
|
||||
bash -ex pkg2appimage.AppDir/AppRun recipe.yml
|
||||
|
||||
|
||||
rm -f pkg2appimage-*.AppImage
|
||||
rm -rf pkg2appimage.AppDir
|
||||
rm -rf VSCodium
|
||||
fi
|
||||
|
||||
cd "${CALLER_DIR}"
|
||||
cd "${CALLER_DIR}"
|
||||
|
||||
@@ -30,11 +30,13 @@ script:
|
||||
- /usr/bin/convert vscodium.png -resize 48x48 usr/share/icons/hicolor/48x48/apps/vscodium.png
|
||||
- /usr/bin/convert vscodium.png -resize 32x32 usr/share/icons/hicolor/32x32/apps/vscodium.png
|
||||
- ( cd usr/bin/ ; ln -s ../share/codium/codium . )
|
||||
- rm -rf usr/lib/x86_64-linux-gnu
|
||||
- rm -f lib/x86_64-linux-gnu/libglib*
|
||||
- cat > AppRun <<\EOF
|
||||
- #!/bin/sh
|
||||
- HERE="$(dirname "$(readlink -f "${0}")")"
|
||||
- export PATH="${HERE}"/usr/bin/:"${HERE}"/usr/sbin/:"${HERE}"/usr/games/:"${HERE}"/bin/:"${HERE}"/sbin/:"${PATH}"
|
||||
- export LD_LIBRARY_PATH="${HERE}"/usr/lib/:"${HERE}"/usr/lib/i386-linux-gnu/:"${HERE}"/usr/lib/x86_64-linux-gnu/:"${HERE}"/usr/lib32/:"${HERE}"/usr/lib64/:"${HERE}"/lib/:"${HERE}"/lib/i386-linux-gnu/:"${HERE}"/lib/x86_64-linux-gnu/:"${HERE}"/lib32/:"${HERE}"/lib64/:"${LD_LIBRARY_PATH}"
|
||||
- export LD_LIBRARY_PATH="${HERE}"/usr/lib/:"${HERE}"/usr/lib32/:"${HERE}"/usr/lib64/:"${HERE}"/lib/:"${HERE}"/lib/i386-linux-gnu/:"${HERE}"/lib/x86_64-linux-gnu/:"${HERE}"/lib32/:"${HERE}"/lib64/:"${LD_LIBRARY_PATH}"
|
||||
- export XDG_DATA_DIRS="${HERE}"/usr/share/:"${XDG_DATA_DIRS}"
|
||||
- export PERLLIB="${HERE}"/usr/share/perl5/:"${HERE}"/usr/lib/perl5/:"${PERLLIB}"
|
||||
- export GSETTINGS_SCHEMA_DIR="${HERE}"/usr/share/glib-2.0/schemas/:"${GSETTINGS_SCHEMA_DIR}"
|
||||
|
||||
20
build/update_api.sh
Executable file
@@ -0,0 +1,20 @@
|
||||
#!/bin/bash
|
||||
|
||||
URL=`curl -s "https://update.code.visualstudio.com/api/update/win32-x64-archive/stable/VERSION" | jq -c '.url' | sed -E 's/.*"([^"]+)".*/\1/'`
|
||||
# echo "url: ${URL}"
|
||||
FILE=`echo "${URL}" | sed -E 's|.*/([^/]+\.zip)$|\1|'`
|
||||
# echo "file: ${FILE}"
|
||||
DIRECTORY=`echo "${URL}" | sed -E 's|.*/([^/]+)\.zip$|\1|'`
|
||||
# echo "directory: ${DIRECTORY}"
|
||||
|
||||
if [[ ! -f "${FILE}" ]]; then
|
||||
wget "${URL}"
|
||||
fi
|
||||
|
||||
if [[ ! -d "${DIRECTORY}" ]]; then
|
||||
unzip "${FILE}" -d "${DIRECTORY}"
|
||||
fi
|
||||
|
||||
APIS=`cat ${DIRECTORY}/resources/app/product.json | jq -r '.extensionEnabledApiProposals'`
|
||||
|
||||
cat <<< $(jq --argjson v "${APIS}" 'setpath(["extensionEnabledApiProposals"]; $v)' product.json) > product.json
|
||||
21
build/update_patches.sh
Executable file
@@ -0,0 +1,21 @@
|
||||
#!/bin/bash
|
||||
|
||||
cd vscode || { echo "'vscode' dir not found"; exit 1; }
|
||||
|
||||
git add .
|
||||
git reset -q --hard HEAD
|
||||
|
||||
for file in ../patches/*.patch; do
|
||||
if [ -f "${file}" ]; then
|
||||
echo applying patch: "${file}"
|
||||
git apply --ignore-whitespace "${file}"
|
||||
if [ $? -ne 0 ]; then
|
||||
echo failed to apply patch "${file}"
|
||||
git apply --reject "${file}"
|
||||
read -p "Press any key when the conflict have been resolved..." -n1 -s
|
||||
git diff > "${file}"
|
||||
fi
|
||||
git add .
|
||||
git reset -q --hard HEAD
|
||||
fi
|
||||
done
|
||||
@@ -8,7 +8,7 @@ cd "$( dirname "${BASH_SOURCE[0]}" )"
|
||||
|
||||
SCRIPT_DIR=$( pwd )
|
||||
|
||||
cd ../../../VSCode-win32-${VSCODE_ARCH}/resources/app
|
||||
cd "../../../VSCode-win32-${VSCODE_ARCH}/resources/app"
|
||||
|
||||
cp product.json product.json.bak
|
||||
cat product.json.bak | jq "del(.updateUrl)" > product.json
|
||||
@@ -16,6 +16,6 @@ rm -f product.json.bak
|
||||
|
||||
cd "${SCRIPT_DIR}"
|
||||
|
||||
. build.sh "updates-disabled"
|
||||
./build.sh "updates-disabled"
|
||||
|
||||
cd "${CALLER_DIR}"
|
||||
|
||||
@@ -24,10 +24,10 @@ ICON_DIR="..\\..\\..\\src\\resources\\win32"
|
||||
LICENSE_DIR="..\\..\\..\\vscode"
|
||||
PROGRAM_FILES_86=$( env | sed -n 's/^ProgramFiles(x86)=//p' )
|
||||
|
||||
if [[ -z "$1" ]]; then
|
||||
if [[ -z "${1}" ]]; then
|
||||
OUTPUT_BASE_FILENAME="${PRODUCT_NAME}-${VSCODE_ARCH}-${MS_TAG}"
|
||||
else
|
||||
OUTPUT_BASE_FILENAME="${PRODUCT_NAME}-${VSCODE_ARCH}-$1-${MS_TAG}"
|
||||
OUTPUT_BASE_FILENAME="${PRODUCT_NAME}-${VSCODE_ARCH}-${1}-${MS_TAG}"
|
||||
fi
|
||||
|
||||
if [[ "${VSCODE_ARCH}" == "ia32" ]]; then
|
||||
@@ -38,8 +38,8 @@ fi
|
||||
|
||||
|
||||
BuildSetupTranslationTransform() {
|
||||
local CULTURE=$1
|
||||
local LANGID=$2
|
||||
local CULTURE=${1}
|
||||
local LANGID=${2}
|
||||
|
||||
LANGIDS="${LANGIDS},${LANGID}"
|
||||
|
||||
@@ -47,13 +47,13 @@ BuildSetupTranslationTransform() {
|
||||
|
||||
"${WIX}bin\\light.exe" vscodium.wixobj "Files-${OUTPUT_BASE_FILENAME}.wixobj" -ext WixUIExtension -ext WixUtilExtension -ext WixNetFxExtension -spdb -cc "${TEMP}\\vscodium-cab-cache\\${PLATFORM}" -reusecab -out "${SETUP_RELEASE_DIR}\\${OUTPUT_BASE_FILENAME}.${CULTURE}.msi" -loc "i18n\\${PRODUCT_SKU}.${CULTURE}.wxl" -cultures:"${CULTURE}" -sice:ICE60 -sice:ICE69
|
||||
|
||||
cscript "${PROGRAM_FILES_86}\\Windows Kits\\${WIN_SDK_MAJOR_VERSION}\\bin\\${WIN_SDK_FULL_VERSION}\\${PLATFORM}\\WiLangId.vbs" ${SETUP_RELEASE_DIR}\\${OUTPUT_BASE_FILENAME}.${CULTURE}.msi Product "${LANGID}"
|
||||
cscript "${PROGRAM_FILES_86}\\Windows Kits\\${WIN_SDK_MAJOR_VERSION}\\bin\\${WIN_SDK_FULL_VERSION}\\${PLATFORM}\\WiLangId.vbs" "${SETUP_RELEASE_DIR}\\${OUTPUT_BASE_FILENAME}.${CULTURE}.msi" Product "${LANGID}"
|
||||
|
||||
"${PROGRAM_FILES_86}\\Windows Kits\\${WIN_SDK_MAJOR_VERSION}\\bin\\${WIN_SDK_FULL_VERSION}\\x86\\msitran" -g "${SETUP_RELEASE_DIR}\\${OUTPUT_BASE_FILENAME}.msi" "${SETUP_RELEASE_DIR}\\${OUTPUT_BASE_FILENAME}.${CULTURE}.msi" "${SETUP_RELEASE_DIR}\\${OUTPUT_BASE_FILENAME}.${CULTURE}.mst"
|
||||
|
||||
cscript "${PROGRAM_FILES_86}\\Windows Kits\\${WIN_SDK_MAJOR_VERSION}\\bin\\${WIN_SDK_FULL_VERSION}\\${PLATFORM}\\wisubstg.vbs" ${SETUP_RELEASE_DIR}\\${OUTPUT_BASE_FILENAME}.msi ${SETUP_RELEASE_DIR}\\${OUTPUT_BASE_FILENAME}.${CULTURE}.mst "${LANGID}"
|
||||
cscript "${PROGRAM_FILES_86}\\Windows Kits\\${WIN_SDK_MAJOR_VERSION}\\bin\\${WIN_SDK_FULL_VERSION}\\${PLATFORM}\\wisubstg.vbs" "${SETUP_RELEASE_DIR}\\${OUTPUT_BASE_FILENAME}.msi" "${SETUP_RELEASE_DIR}\\${OUTPUT_BASE_FILENAME}.${CULTURE}.mst" "${LANGID}"
|
||||
|
||||
cscript "${PROGRAM_FILES_86}\\Windows Kits\\${WIN_SDK_MAJOR_VERSION}\\bin\\${WIN_SDK_FULL_VERSION}\\${PLATFORM}\\wisubstg.vbs" ${SETUP_RELEASE_DIR}\\${OUTPUT_BASE_FILENAME}.msi
|
||||
cscript "${PROGRAM_FILES_86}\\Windows Kits\\${WIN_SDK_MAJOR_VERSION}\\bin\\${WIN_SDK_FULL_VERSION}\\${PLATFORM}\\wisubstg.vbs" "${SETUP_RELEASE_DIR}\\${OUTPUT_BASE_FILENAME}.msi"
|
||||
|
||||
rm -f "${SETUP_RELEASE_DIR}\\${OUTPUT_BASE_FILENAME}.${CULTURE}.msi"
|
||||
rm -f "${SETUP_RELEASE_DIR}\\${OUTPUT_BASE_FILENAME}.${CULTURE}.mst"
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:c3eac997fba9d3d5596c503a826fe5d54c87b1cf899a790b6d077e4d196bd5e9
|
||||
size 373978
|
||||
@@ -1,15 +1,20 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -ex
|
||||
cd "$( dirname "${BASH_SOURCE[0]}" )"/../../../vscode || { echo "'vscode' dir not found"; exit 1; }
|
||||
|
||||
CALLER_DIR=$( pwd )
|
||||
input=LICENSE.txt
|
||||
target=LICENSE.rtf
|
||||
|
||||
cd "$( dirname "${BASH_SOURCE[0]}" )"
|
||||
cat - >$target <<_EOF
|
||||
{\rtf1\ansi\deff0{\fonttbl{\f0\fnil\fcharset0 Consolas;}}
|
||||
\viewkind4\uc1\pard\lang1033\f0\fs22
|
||||
|
||||
7z x -y TXT2RTF.zip
|
||||
_EOF
|
||||
|
||||
LICENSE=$( powershell.exe -Command "[System.IO.Path]::GetFullPath( '../../../vscode/LICENSE.txt' )" )
|
||||
sed -zE -e 's/([A-Za-z,])\r?\n([A-Za-z])/\1 \2/g' -e 's/\r?\n\r?\n/\\par\n\n/g' -e 's/(\\par\n)/\\line\1/g' -e 's/\s*(Copyright)/\\line\n\1/g' -e 's/(\\par)\\line/\1\n/g' $input >> $target
|
||||
|
||||
"./TXT to RTF Converter.exe" "${LICENSE}"
|
||||
|
||||
cd "${CALLER_DIR}"
|
||||
cat - >>$target <<_EOF
|
||||
\par
|
||||
}
|
||||
_EOF
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
|
||||
set -e
|
||||
|
||||
if [[ $GITHUB_EVENT_NAME == "pull_request" ]]; then
|
||||
if [[ "${GITHUB_EVENT_NAME}" == "pull_request" ]]; then
|
||||
echo "It's a PR"
|
||||
|
||||
export SHOULD_BUILD="yes"
|
||||
export SHOULD_DEPLOY="no"
|
||||
elif [[ $GITHUB_EVENT_NAME == "push" ]]; then
|
||||
elif [[ "${GITHUB_EVENT_NAME}" == "push" ]]; then
|
||||
echo "It's a Push"
|
||||
|
||||
export SHOULD_BUILD="yes"
|
||||
@@ -18,7 +18,7 @@ else
|
||||
export SHOULD_DEPLOY="yes"
|
||||
fi
|
||||
|
||||
if [[ $GITHUB_ENV ]]; then
|
||||
echo "SHOULD_BUILD=$SHOULD_BUILD" >> $GITHUB_ENV
|
||||
echo "SHOULD_DEPLOY=$SHOULD_DEPLOY" >> $GITHUB_ENV
|
||||
if [[ "${GITHUB_ENV}" ]]; then
|
||||
echo "SHOULD_BUILD=${SHOULD_BUILD}" >> "${GITHUB_ENV}"
|
||||
echo "SHOULD_DEPLOY=${SHOULD_DEPLOY}" >> "${GITHUB_ENV}"
|
||||
fi
|
||||
411
check_tags.sh
@@ -2,143 +2,304 @@
|
||||
|
||||
set -e
|
||||
|
||||
if [[ -z "${GITHUB_TOKEN}" ]]; then
|
||||
echo "Will not build because no GITHUB_TOKEN defined"
|
||||
exit
|
||||
fi
|
||||
|
||||
REPOSITORY="${GITHUB_REPOSITORY:-"VSCodium/vscodium"}"
|
||||
GITHUB_RESPONSE=$( curl -s -H "Authorization: token $GITHUB_TOKEN" https://api.github.com/repos/$REPOSITORY/releases/tags/$MS_TAG)
|
||||
VSCODIUM_ASSETS=$( echo $GITHUB_RESPONSE | jq -c '.assets | map(.name)?' )
|
||||
GITHUB_RESPONSE=$( curl -s -H "Authorization: token ${GITHUB_TOKEN}" "https://api.github.com/repos/${REPOSITORY}/releases/tags/${MS_TAG}")
|
||||
VSCODIUM_ASSETS=$( echo "${GITHUB_RESPONSE}" | jq -c '.assets | map(.name)?' )
|
||||
|
||||
contains() {
|
||||
# add " to match the end of a string so any hashs won't be matched by mistake
|
||||
echo $VSCODIUM_ASSETS | grep "$1\""
|
||||
echo "${VSCODIUM_ASSETS}" | grep "${1}\""
|
||||
}
|
||||
|
||||
# if we just don't have the github token, get out fast
|
||||
if [ "$GITHUB_TOKEN" != "" ]; then
|
||||
if [ "$VSCODIUM_ASSETS" != "null" ]; then
|
||||
# macos
|
||||
if [[ "$OS_NAME" == "osx" ]]; then
|
||||
if [[ -z $( contains "darwin-$VSCODE_ARCH-$MS_TAG.zip" ) ]]; then
|
||||
echo "Building on Mac because we have no ZIP"
|
||||
if [ "${VSCODIUM_ASSETS}" != "null" ]; then
|
||||
# macos
|
||||
if [[ "${OS_NAME}" == "osx" ]]; then
|
||||
if [[ -z $( contains "VSCodium-darwin-${VSCODE_ARCH}-${MS_TAG}.zip" ) ]]; then
|
||||
echo "Building on MacOS because we have no ZIP"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_ZIP="no"
|
||||
fi
|
||||
|
||||
if [[ -z $( contains ".${VSCODE_ARCH}.${MS_TAG}.dmg" ) ]]; then
|
||||
echo "Building on MacOS because we have no DMG"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_DMG="no"
|
||||
fi
|
||||
|
||||
if [[ -z $( contains "vscodium-reh-darwin-${VSCODE_ARCH}-${MS_TAG}.tar.gz" ) ]]; then
|
||||
echo "Building on MacOS because we have no REH archive"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_REH="no"
|
||||
fi
|
||||
|
||||
if [[ "${SHOULD_BUILD}" != "yes" ]]; then
|
||||
echo "Already have all the MacOS builds"
|
||||
fi
|
||||
elif [[ "${OS_NAME}" == "windows" ]]; then
|
||||
|
||||
# windows-arm64
|
||||
if [[ ${VSCODE_ARCH} == "arm64" ]]; then
|
||||
if [[ -z $( contains "VSCodiumSetup-${VSCODE_ARCH}-${MS_TAG}.exe" ) ]]; then
|
||||
echo "Building on Windows arm64 because we have no system setup"
|
||||
export SHOULD_BUILD="yes"
|
||||
fi
|
||||
elif [[ "$OS_NAME" == "windows" ]]; then
|
||||
# windows-arm64
|
||||
if [[ $VSCODE_ARCH == "arm64" ]]; then
|
||||
if [[ -z $( contains "VSCodiumSetup-$VSCODE_ARCH-$MS_TAG.exe" ) ]]; then
|
||||
echo "Building on Windows arm64 because we have no system setup"
|
||||
export SHOULD_BUILD="yes"
|
||||
fi
|
||||
if [[ -z $( contains "UserSetup-$VSCODE_ARCH-$MS_TAG.exe" ) ]]; then
|
||||
echo "Building on Windows arm64 because we have no user setup"
|
||||
export SHOULD_BUILD="yes"
|
||||
fi
|
||||
if [[ -z $( contains "win32-$VSCODE_ARCH-$MS_TAG.zip" ) ]]; then
|
||||
echo "Building on Windows arm64 because we have no zip"
|
||||
export SHOULD_BUILD="yes"
|
||||
fi
|
||||
if [[ "$SHOULD_BUILD" != "yes" ]]; then
|
||||
echo "Already have all the Windows arm64 builds"
|
||||
fi
|
||||
# windows-ia32
|
||||
elif [[ $VSCODE_ARCH == "ia32" ]]; then
|
||||
if [[ -z $( contains "VSCodiumSetup-$VSCODE_ARCH-$MS_TAG.exe" ) ]]; then
|
||||
echo "Building on Windows ia32 because we have no system setup"
|
||||
export SHOULD_BUILD="yes"
|
||||
fi
|
||||
if [[ -z $( contains "UserSetup-$VSCODE_ARCH-$MS_TAG.exe" ) ]]; then
|
||||
echo "Building on Windows ia32 because we have no user setup"
|
||||
export SHOULD_BUILD="yes"
|
||||
fi
|
||||
if [[ -z $( contains "win32-$VSCODE_ARCH-$MS_TAG.zip" ) ]]; then
|
||||
echo "Building on Windows ia32 because we have no zip"
|
||||
export SHOULD_BUILD="yes"
|
||||
fi
|
||||
if [[ -z $( contains "VSCodium-$VSCODE_ARCH-$MS_TAG.msi" ) ]]; then
|
||||
echo "Building on Windows ia32 because we have no msi"
|
||||
export SHOULD_BUILD="yes"
|
||||
fi
|
||||
if [[ -z $( contains "VSCodium-$VSCODE_ARCH-updates-disabled-$MS_TAG.msi" ) ]]; then
|
||||
echo "Building on Windows ia32 because we have no updates-disabled msi"
|
||||
export SHOULD_BUILD="yes"
|
||||
fi
|
||||
if [[ "$SHOULD_BUILD" != "yes" ]]; then
|
||||
echo "Already have all the Windows ia32 builds"
|
||||
fi
|
||||
# windows-x64
|
||||
else
|
||||
if [[ -z $( contains "VSCodiumSetup-$VSCODE_ARCH-$MS_TAG.exe" ) ]]; then
|
||||
echo "Building on Windows x64 because we have no system setup"
|
||||
export SHOULD_BUILD="yes"
|
||||
fi
|
||||
if [[ -z $( contains "UserSetup-$VSCODE_ARCH-$MS_TAG.exe" ) ]]; then
|
||||
echo "Building on Windows x64 because we have no user setup"
|
||||
export SHOULD_BUILD="yes"
|
||||
fi
|
||||
if [[ -z $( contains "win32-$VSCODE_ARCH-$MS_TAG.zip" ) ]]; then
|
||||
echo "Building on Windows x64 because we have no zip"
|
||||
export SHOULD_BUILD="yes"
|
||||
fi
|
||||
if [[ -z $( contains "VSCodium-$VSCODE_ARCH-$MS_TAG.msi" ) ]]; then
|
||||
echo "Building on Windows x64 because we have no msi"
|
||||
export SHOULD_BUILD="yes"
|
||||
fi
|
||||
if [[ -z $( contains "VSCodium-$VSCODE_ARCH-updates-disabled-$MS_TAG.msi" ) ]]; then
|
||||
echo "Building on Windows x64 because we have no updates-disabled msi"
|
||||
export SHOULD_BUILD="yes"
|
||||
fi
|
||||
if [[ "$SHOULD_BUILD" != "yes" ]]; then
|
||||
echo "Already have all the Windows x64 builds"
|
||||
fi
|
||||
export SHOULD_BUILD_EXE_SYS="no"
|
||||
fi
|
||||
elif [[ "$OS_NAME" == "linux" ]]; then
|
||||
# linux-arm64
|
||||
if [[ $VSCODE_ARCH == "arm64" ]]; then
|
||||
if [[ -z $( contains "arm64.deb" ) ]]; then
|
||||
echo "Building on Linux arm64 because we have no DEB"
|
||||
export SHOULD_BUILD="yes"
|
||||
fi
|
||||
if [[ -z $( contains "arm64-$MS_TAG.tar.gz" ) ]]; then
|
||||
echo "Building on Linux arm64 because we have no TAR"
|
||||
export SHOULD_BUILD="yes"
|
||||
fi
|
||||
if [[ "$SHOULD_BUILD" != "yes" ]]; then
|
||||
echo "Already have all the Linux arm64 builds"
|
||||
fi
|
||||
# linux-armhf
|
||||
elif [[ $VSCODE_ARCH == "armhf" ]]; then
|
||||
if [[ -z $( contains "armhf.deb" ) ]]; then
|
||||
echo "Building on Linux arm because we have no DEB"
|
||||
export SHOULD_BUILD="yes"
|
||||
fi
|
||||
if [[ -z $( contains "armhf-${MS_TAG}.tar.gz" ) ]]; then
|
||||
echo "Building on Linux arm because we have no TAR"
|
||||
export SHOULD_BUILD="yes"
|
||||
fi
|
||||
if [[ "$SHOULD_BUILD" != "yes" ]]; then
|
||||
echo "Already have all the Linux arm builds"
|
||||
fi
|
||||
# linux-x64
|
||||
|
||||
if [[ -z $( contains "UserSetup-${VSCODE_ARCH}-${MS_TAG}.exe" ) ]]; then
|
||||
echo "Building on Windows arm64 because we have no user setup"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
if [[ -z $( contains "x86_64.rpm" ) ]]; then
|
||||
echo "Building on Linux x64 because we have no RPM"
|
||||
export SHOULD_BUILD="yes"
|
||||
fi
|
||||
if [[ -z $( contains "amd64.deb" ) ]]; then
|
||||
echo "Building on Linux x64 because we have no DEB"
|
||||
export SHOULD_BUILD="yes"
|
||||
fi
|
||||
if [[ -z $( contains "x64-$MS_TAG.tar.gz" ) ]]; then
|
||||
echo "Building on Linux x64 because we have no TAR"
|
||||
export SHOULD_BUILD="yes"
|
||||
fi
|
||||
if [[ "$SHOULD_BUILD" != "yes" ]]; then
|
||||
echo "Already have all the Linux x64 builds"
|
||||
fi
|
||||
export SHOULD_BUILD_EXE_USR="no"
|
||||
fi
|
||||
|
||||
if [[ -z $( contains "VSCodium-win32-${VSCODE_ARCH}-${MS_TAG}.zip" ) ]]; then
|
||||
echo "Building on Windows arm64 because we have no zip"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_ZIP="no"
|
||||
fi
|
||||
|
||||
export SHOULD_BUILD_REH="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 "VSCodiumSetup-${VSCODE_ARCH}-${MS_TAG}.exe" ) ]]; then
|
||||
echo "Building on Windows ia32 because we have no system setup"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_EXE_SYS="no"
|
||||
fi
|
||||
|
||||
if [[ -z $( contains "UserSetup-${VSCODE_ARCH}-${MS_TAG}.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 "VSCodium-win32-${VSCODE_ARCH}-${MS_TAG}.zip" ) ]]; then
|
||||
echo "Building on Windows ia32 because we have no zip"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_ZIP="no"
|
||||
fi
|
||||
|
||||
if [[ -z $( contains "VSCodium-${VSCODE_ARCH}-${MS_TAG}.msi" ) ]]; then
|
||||
echo "Building on Windows ia32 because we have no msi"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_MSI="no"
|
||||
fi
|
||||
|
||||
if [[ -z $( contains "VSCodium-${VSCODE_ARCH}-updates-disabled-${MS_TAG}.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 "vscodium-reh-win32-${VSCODE_ARCH}-${MS_TAG}.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 [[ "${SHOULD_BUILD}" != "yes" ]]; then
|
||||
echo "Already have all the Windows ia32 builds"
|
||||
fi
|
||||
|
||||
# windows-x64
|
||||
else
|
||||
if [[ -z $( contains "VSCodiumSetup-${VSCODE_ARCH}-${MS_TAG}.exe" ) ]]; then
|
||||
echo "Building on Windows x64 because we have no system setup"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_EXE_SYS="no"
|
||||
fi
|
||||
|
||||
if [[ -z $( contains "UserSetup-${VSCODE_ARCH}-${MS_TAG}.exe" ) ]]; then
|
||||
echo "Building on Windows x64 because we have no user setup"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_EXE_USR="no"
|
||||
fi
|
||||
|
||||
if [[ -z $( contains "VSCodium-win32-${VSCODE_ARCH}-${MS_TAG}.zip" ) ]]; then
|
||||
echo "Building on Windows x64 because we have no zip"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_ZIP="no"
|
||||
fi
|
||||
|
||||
if [[ -z $( contains "VSCodium-${VSCODE_ARCH}-${MS_TAG}.msi" ) ]]; then
|
||||
echo "Building on Windows x64 because we have no msi"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_MSI="no"
|
||||
fi
|
||||
|
||||
if [[ -z $( contains "VSCodium-${VSCODE_ARCH}-updates-disabled-${MS_TAG}.msi" ) ]]; then
|
||||
echo "Building on Windows x64 because we have no updates-disabled msi"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_MSI_NOUP="no"
|
||||
fi
|
||||
|
||||
if [[ -z $( contains "vscodium-reh-win32-${VSCODE_ARCH}-${MS_TAG}.tar.gz" ) ]]; then
|
||||
echo "Building on Windows x64 because we have no REH archive"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_REH="no"
|
||||
fi
|
||||
|
||||
if [[ "${SHOULD_BUILD}" != "yes" ]]; then
|
||||
echo "Already have all the Windows x64 builds"
|
||||
fi
|
||||
fi
|
||||
elif [[ "${OS_NAME}" == "linux" ]]; then
|
||||
|
||||
# linux-arm64
|
||||
if [[ ${VSCODE_ARCH} == "arm64" ]]; then
|
||||
if [[ -z $( contains "arm64.deb" ) ]]; then
|
||||
echo "Building on Linux arm64 because we have no DEB"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_DEB="no"
|
||||
fi
|
||||
|
||||
if [[ -z $( contains "aarch64.rpm" ) ]]; then
|
||||
echo "Building on Linux arm64 because we have no RPM"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_RPM="no"
|
||||
fi
|
||||
|
||||
if [[ -z $( contains "VSCodium-linux-arm64-${MS_TAG}.tar.gz" ) ]]; then
|
||||
echo "Building on Linux arm64 because we have no TAR"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_TAR="no"
|
||||
fi
|
||||
|
||||
if [[ -z $( contains "vscodium-reh-linux-arm64-${MS_TAG}.tar.gz" ) ]]; then
|
||||
echo "Building on Linux arm64 because we have no REH archive"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_REH="no"
|
||||
fi
|
||||
|
||||
export SHOULD_BUILD_APPIMAGE="no"
|
||||
|
||||
if [[ "${SHOULD_BUILD}" != "yes" ]]; then
|
||||
echo "Already have all the Linux arm64 builds"
|
||||
fi
|
||||
|
||||
# linux-armhf
|
||||
elif [[ ${VSCODE_ARCH} == "armhf" ]]; then
|
||||
if [[ -z $( contains "armhf.deb" ) ]]; then
|
||||
echo "Building on Linux arm because we have no DEB"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_DEB="no"
|
||||
fi
|
||||
|
||||
if [[ -z $( contains "armv7hl.rpm" ) ]]; then
|
||||
echo "Building on Linux arm because we have no RPM"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_RPM="no"
|
||||
fi
|
||||
|
||||
if [[ -z $( contains "VSCodium-linux-armhf-${MS_TAG}.tar.gz" ) ]]; then
|
||||
echo "Building on Linux arm because we have no TAR"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_TAR="no"
|
||||
fi
|
||||
|
||||
if [[ -z $( contains "vscodium-reh-linux-armhf-${MS_TAG}.tar.gz" ) ]]; then
|
||||
echo "Building on Linux arm because we have no REH archive"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_REH="no"
|
||||
fi
|
||||
|
||||
export SHOULD_BUILD_APPIMAGE="no"
|
||||
|
||||
if [[ "${SHOULD_BUILD}" != "yes" ]]; then
|
||||
echo "Already have all the Linux arm builds"
|
||||
fi
|
||||
|
||||
# linux-x64
|
||||
else
|
||||
if [[ -z $( contains "amd64.deb" ) ]]; then
|
||||
echo "Building on Linux x64 because we have no DEB"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_DEB="no"
|
||||
fi
|
||||
|
||||
if [[ -z $( contains "x86_64.rpm" ) ]]; then
|
||||
echo "Building on Linux x64 because we have no RPM"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_RPM="no"
|
||||
fi
|
||||
|
||||
if [[ -z $( contains "VSCodium-linux-x64-${MS_TAG}.tar.gz" ) ]]; then
|
||||
echo "Building on Linux x64 because we have no TAR"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_TAR="no"
|
||||
fi
|
||||
|
||||
if [[ -z $( contains "x86_64.AppImage" ) ]]; then
|
||||
echo "Building on Linux x64 because we have no AppImage"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_APPIMAGE="no"
|
||||
fi
|
||||
|
||||
if [[ -z $( contains "vscodium-reh-linux-x64-${MS_TAG}.tar.gz" ) ]]; then
|
||||
echo "Building on Linux x64 because we have no REH archive"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_REH="no"
|
||||
fi
|
||||
|
||||
if [[ "${SHOULD_BUILD}" != "yes" ]]; then
|
||||
echo "Already have all the Linux x64 builds"
|
||||
fi
|
||||
fi
|
||||
else
|
||||
echo "Release assets do not exist at all, continuing build"
|
||||
export SHOULD_BUILD="yes"
|
||||
fi
|
||||
else
|
||||
echo "Release assets do not exist at all, continuing build"
|
||||
export SHOULD_BUILD="yes"
|
||||
fi
|
||||
|
||||
echo "SHOULD_BUILD=$SHOULD_BUILD" >> $GITHUB_ENV
|
||||
echo "SHOULD_BUILD=${SHOULD_BUILD}" >> "${GITHUB_ENV}"
|
||||
echo "SHOULD_BUILD_APPIMAGE=${SHOULD_BUILD_APPIMAGE}" >> "${GITHUB_ENV}"
|
||||
echo "SHOULD_BUILD_DEB=${SHOULD_BUILD_DEB}" >> "${GITHUB_ENV}"
|
||||
echo "SHOULD_BUILD_DMG=${SHOULD_BUILD_DMG}" >> "${GITHUB_ENV}"
|
||||
echo "SHOULD_BUILD_EXE_SYS=${SHOULD_BUILD_EXE_SYS}" >> "${GITHUB_ENV}"
|
||||
echo "SHOULD_BUILD_EXE_USR=${SHOULD_BUILD_EXE_USR}" >> "${GITHUB_ENV}"
|
||||
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_RPM=${SHOULD_BUILD_RPM}" >> "${GITHUB_ENV}"
|
||||
echo "SHOULD_BUILD_TAR=${SHOULD_BUILD_TAR}" >> "${GITHUB_ENV}"
|
||||
echo "SHOULD_BUILD_ZIP=${SHOULD_BUILD_ZIP}" >> "${GITHUB_ENV}"
|
||||
|
||||
@@ -8,16 +8,24 @@
|
||||
- [Windows](#dependencies-windows)
|
||||
- [Build Scripts](#build-scripts)
|
||||
- [Build in Docker](#build-docker)
|
||||
- [X64](#build-docker-x64)
|
||||
- [ARM 32bits](#build-docker-arm32)
|
||||
- [Patch Update Process](#patch-update-process)
|
||||
- [Semi-Automated](#patch-update-process-semiauto)
|
||||
- [Manual](#patch-update-process-manual)
|
||||
|
||||
## <a id="dependencies"></a>Dependencies
|
||||
|
||||
- node 14
|
||||
- node 16
|
||||
- yarn
|
||||
- jq
|
||||
- git
|
||||
|
||||
### <a id="dependencies-linux"></a>Linux
|
||||
|
||||
- GCC
|
||||
- make
|
||||
- pkg-config
|
||||
- libx11-dev
|
||||
- libxkbfile-dev
|
||||
- libsecret-1-dev
|
||||
@@ -25,6 +33,9 @@
|
||||
- rpm
|
||||
- rpmbuild
|
||||
- dpkg
|
||||
- python3
|
||||
- imagemagick (for AppImage)
|
||||
- ripgrep
|
||||
|
||||
### <a id="dependencies-macos"></a>MacOS
|
||||
|
||||
@@ -34,6 +45,8 @@
|
||||
- sed
|
||||
- 7z
|
||||
- [WiX Toolset](http://wixtoolset.org/releases/)
|
||||
- python3
|
||||
- 'Tools for Native Modules' from official Node.js installer
|
||||
|
||||
## <a id="build-scripts"></a>Build Scripts
|
||||
|
||||
@@ -47,21 +60,25 @@ Each platform has its build helper script in the directory `build`.
|
||||
|
||||
To build for Linux, you can alternatively build VSCodium in docker
|
||||
|
||||
### <a id="build-docker-x64"></a>X64
|
||||
|
||||
Firstly, create the container with:
|
||||
```
|
||||
docker run -ti --volume=<local vscodium source>:/root/vscodium --name=vscodium-build-agent vscodium/vscodium-linux-build-agent:bionic-x64 bash
|
||||
```
|
||||
like
|
||||
```
|
||||
docker run -ti --volume=$(pwd):/root/vscodium --name=vscodium-build-agent vscodium/vscodium-linux-build-agent:bionic-x64 bash
|
||||
```
|
||||
|
||||
When inside the container, you can use the following commands to build:
|
||||
```
|
||||
curl -fsSL https://deb.nodesource.com/setup_14.x | sudo -E bash -
|
||||
curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -
|
||||
sudo apt-get install -y nodejs desktop-file-utils
|
||||
|
||||
npm install -g yarn
|
||||
|
||||
git clone https://github.com/VSCodium/vscodium.git
|
||||
|
||||
cd vscodium
|
||||
cd /root/vscodium
|
||||
|
||||
./get_repo.sh
|
||||
|
||||
@@ -70,4 +87,56 @@ export OS_NAME=linux
|
||||
export VSCODE_ARCH=x64
|
||||
|
||||
./build.sh
|
||||
```
|
||||
```
|
||||
|
||||
### <a id="build-docker-arm32"></a>ARM 32bits
|
||||
|
||||
Firstly, create the container with:
|
||||
```
|
||||
docker run -ti --volume=<local vscodium source>:/root/vscodium --name=vscodium-build-agent vscodium/vscodium-linux-build-agent:stretch-armhf bash
|
||||
```
|
||||
like
|
||||
```
|
||||
docker run -ti --volume=$(pwd):/root/vscodium --name=vscodium-build-agent vscodium/vscodium-linux-build-agent:stretch-armhf bash
|
||||
```
|
||||
|
||||
When inside the container, you can use the following commands to build:
|
||||
```
|
||||
curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -
|
||||
sudo apt-get install -y nodejs desktop-file-utils
|
||||
|
||||
cd /root/vscodium
|
||||
|
||||
./get_repo.sh
|
||||
|
||||
export SHOULD_BUILD=yes
|
||||
export OS_NAME=linux
|
||||
export VSCODE_ARCH=armhf
|
||||
export npm_config_arch=armv7l
|
||||
export npm_config_force_process_config="true"
|
||||
|
||||
./build.sh
|
||||
```
|
||||
|
||||
## <a id="patch-update-process"></a>Patch Update Process
|
||||
|
||||
## <a id="patch-update-process-semiauto"></a>Semi-Automated
|
||||
|
||||
- run `./build/build_<os>.sh`, if a patch is failing then,
|
||||
- run `./build/update_patches.sh`
|
||||
- when the script pause at `Press any key when the conflict have been resolved...`, open `vscode` directory in **VSCodium**
|
||||
- fix all the `*.rej` files
|
||||
- run `yarn watch`
|
||||
- run `./script/code.sh` until everything ok
|
||||
- press any key to continue the script `update_patches.sh`
|
||||
|
||||
## <a id="patch-update-process-manual"></a>Manual
|
||||
|
||||
- run `./build/build_<os>.sh`, if a patch is failing then,
|
||||
- open `vscode` directory in **VSCodium**
|
||||
- revert all changes
|
||||
- run `git apply --reject ../patches/<name>.patch`
|
||||
- fix all the `*.rej` files
|
||||
- run `yarn watch`
|
||||
- run `./script/code.sh` until everything ok
|
||||
- run `git diff > ../patches/<name>.patch`
|
||||
|
||||
48
get_repo.sh
@@ -1,44 +1,44 @@
|
||||
#!/bin/bash
|
||||
|
||||
mkdir -p vscode
|
||||
cd vscode
|
||||
cd vscode || { echo "'vscode' dir not found"; exit 1; }
|
||||
|
||||
git init -q
|
||||
git remote add origin https://github.com/Microsoft/vscode.git
|
||||
|
||||
# figure out latest tag by calling MS update API
|
||||
if [ "$INSIDER" == "1" ]; then
|
||||
UPDATE_INFO=$(curl https://update.code.visualstudio.com/api/update/darwin/insider/lol)
|
||||
export MS_COMMIT=$(echo $UPDATE_INFO | jq -r '.version')
|
||||
export MS_TAG=$(echo $UPDATE_INFO | jq -r '.name')
|
||||
if [ "${INSIDER}" == "1" ]; then
|
||||
UPDATE_INFO=$(curl https://update.code.visualstudio.com/api/update/darwin/insider/lol)
|
||||
export MS_COMMIT=$(echo "${UPDATE_INFO}" | jq -r '.version')
|
||||
export MS_TAG=$(echo "${UPDATE_INFO}" | jq -r '.name')
|
||||
elif [[ -z "${MS_TAG}" ]]; then
|
||||
UPDATE_INFO=$(curl https://update.code.visualstudio.com/api/update/darwin/stable/lol)
|
||||
export MS_COMMIT=$(echo $UPDATE_INFO | jq -r '.version')
|
||||
export MS_TAG=$(echo $UPDATE_INFO | jq -r '.name')
|
||||
UPDATE_INFO=$(curl https://update.code.visualstudio.com/api/update/darwin/stable/lol)
|
||||
export MS_COMMIT=$(echo "${UPDATE_INFO}" | jq -r '.version')
|
||||
export MS_TAG=$(echo "${UPDATE_INFO}" | jq -r '.name')
|
||||
else
|
||||
reference=$( git ls-remote --tags | grep -x ".*refs\/tags\/${MS_TAG}" | head -1 )
|
||||
|
||||
if [[ -z "${reference}" ]]; then
|
||||
echo "The following tag can't be found: ${MS_TAG}"
|
||||
exit 1
|
||||
elif [[ "${reference}" =~ ^([[:alnum:]]+)[[:space:]]+refs\/tags\/([0-9]+\.[0-9]+\.[0-9]+)$ ]]; then
|
||||
export MS_COMMIT="${BASH_REMATCH[1]}"
|
||||
export MS_TAG="${BASH_REMATCH[2]}"
|
||||
else
|
||||
echo "The following reference can't be parsed: ${reference}"
|
||||
exit 1
|
||||
fi
|
||||
reference=$( git ls-remote --tags | grep -x ".*refs\/tags\/${MS_TAG}" | head -1 )
|
||||
|
||||
if [[ -z "${reference}" ]]; then
|
||||
echo "The following tag can't be found: ${MS_TAG}"
|
||||
exit 1
|
||||
elif [[ "${reference}" =~ ^([[:alnum:]]+)[[:space:]]+refs\/tags\/([0-9]+\.[0-9]+\.[0-9]+)$ ]]; then
|
||||
export MS_COMMIT="${BASH_REMATCH[1]}"
|
||||
export MS_TAG="${BASH_REMATCH[2]}"
|
||||
else
|
||||
echo "The following reference can't be parsed: ${reference}"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "Got the MS tag: ${MS_TAG} version: ${MS_COMMIT}"
|
||||
|
||||
git fetch --depth 1 origin $MS_COMMIT
|
||||
git fetch --depth 1 origin "${MS_COMMIT}"
|
||||
git checkout FETCH_HEAD
|
||||
|
||||
cd ..
|
||||
|
||||
# for GH actions
|
||||
if [[ $GITHUB_ENV ]]; then
|
||||
echo "MS_TAG=$MS_TAG" >> $GITHUB_ENV
|
||||
echo "MS_COMMIT=$MS_COMMIT" >> $GITHUB_ENV
|
||||
if [[ ${GITHUB_ENV} ]]; then
|
||||
echo "MS_TAG=${MS_TAG}" >> "${GITHUB_ENV}"
|
||||
echo "MS_COMMIT=${MS_COMMIT}" >> "${GITHUB_ENV}"
|
||||
fi
|
||||
|
||||
@@ -8,9 +8,9 @@ set -e
|
||||
check_programs() {
|
||||
for arg in "$@"
|
||||
do
|
||||
if ! command -v $arg >/dev/null 2>&1
|
||||
if ! command -v "${arg}" >/dev/null 2>&1
|
||||
then
|
||||
echo "$arg could not be found"
|
||||
echo "${arg} could not be found"
|
||||
exit
|
||||
fi
|
||||
done
|
||||
@@ -22,22 +22,22 @@ SRC_PREFIX=""
|
||||
VSCODE_PREFIX=""
|
||||
|
||||
build_darwin_types() {
|
||||
for file in ${VSCODE_PREFIX}vscode/resources/darwin/*
|
||||
for file in "${VSCODE_PREFIX}"vscode/resources/darwin/*
|
||||
do
|
||||
if [ -f "$file" ]; then
|
||||
name=$(basename $file '.icns')
|
||||
if [ -f "${file}" ]; then
|
||||
name=$(basename "${file}" '.icns')
|
||||
|
||||
if [[ $name != 'code' ]] && [ ! -f "${SRC_PREFIX}src/resources/darwin/$name.icns" ]; then
|
||||
icns2png -x -s 512x512 $file -o .
|
||||
if [[ ${name} != 'code' ]] && [ ! -f "${SRC_PREFIX}src/resources/darwin/${name}.icns" ]; then
|
||||
icns2png -x -s 512x512 "${file}" -o .
|
||||
|
||||
composite -blend 100% -geometry +323+365 icons/corner_512.png "${name}_512x512x32.png" "$name.png"
|
||||
composite icons/code_darwin.png "$name.png" "$name.png"
|
||||
composite -blend 100% -geometry +323+365 icons/corner_512.png "${name}_512x512x32.png" "${name}.png"
|
||||
composite icons/code_darwin.png "${name}.png" "${name}.png"
|
||||
|
||||
convert "$name.png" -resize 256x256 "${name}_256.png"
|
||||
convert "${name}.png" -resize 256x256 "${name}_256.png"
|
||||
|
||||
png2icns "${SRC_PREFIX}src/resources/darwin/$name.icns" "$name.png" "${name}_256.png"
|
||||
png2icns "${SRC_PREFIX}src/resources/darwin/${name}.icns" "${name}.png" "${name}_256.png"
|
||||
|
||||
rm "${name}_512x512x32.png" "$name.png" "${name}_256.png"
|
||||
rm "${name}_512x512x32.png" "${name}.png" "${name}_256.png"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
@@ -56,17 +56,17 @@ build_darwin_main() {
|
||||
}
|
||||
|
||||
build_win32() {
|
||||
for file in ${VSCODE_PREFIX}vscode/resources/win32/*.ico
|
||||
for file in "${VSCODE_PREFIX}"vscode/resources/win32/*.ico
|
||||
do
|
||||
if [ -f "$file" ]; then
|
||||
name=$(basename $file '.ico')
|
||||
if [ -f "${file}" ]; then
|
||||
name=$(basename "${file}" '.ico')
|
||||
|
||||
if [[ $name != 'code' ]] && [ ! -f "${SRC_PREFIX}src/resources/win32/$name.ico" ]; then
|
||||
icotool -x -w 256 $file
|
||||
if [[ ${name} != 'code' ]] && [ ! -f "${SRC_PREFIX}src/resources/win32/${name}.ico" ]; then
|
||||
icotool -x -w 256 "${file}"
|
||||
|
||||
composite -geometry +150+185 icons/code_64.png "${name}_9_256x256x32.png" "${name}.png"
|
||||
|
||||
convert "${name}.png" -define icon:auto-resize=256,128,96,64,48,32,24,20,16 "${SRC_PREFIX}src/resources/win32/$name.ico"
|
||||
convert "${name}.png" -define icon:auto-resize=256,128,96,64,48,32,24,20,16 "${SRC_PREFIX}src/resources/win32/${name}.ico"
|
||||
|
||||
rm "${name}_9_256x256x32.png" "${name}.png"
|
||||
fi
|
||||
@@ -144,7 +144,7 @@ build_win32() {
|
||||
fi
|
||||
}
|
||||
|
||||
if [ "$0" == "$BASH_SOURCE" ];
|
||||
if [ "${0}" == "${BASH_SOURCE}" ];
|
||||
then
|
||||
build_darwin_types
|
||||
build_win32
|
||||
|
||||
15
install_gh.sh
Executable file
@@ -0,0 +1,15 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
GH_ARCH="amd64"
|
||||
|
||||
VERSION=`curl "https://api.github.com/repos/cli/cli/releases/latest" | grep '"tag_name"' | sed -E 's/.*"([^"]+)".*/\1/' | cut -c2-`
|
||||
|
||||
curl -sSL "https://github.com/cli/cli/releases/download/v${VERSION}/gh_${VERSION}_linux_${GH_ARCH}.tar.gz" -o "gh_${VERSION}_linux_${GH_ARCH}.tar.gz"
|
||||
|
||||
tar xf "gh_${VERSION}_linux_${GH_ARCH}.tar.gz"
|
||||
|
||||
cp "gh_${VERSION}_linux_${GH_ARCH}/bin/gh" /usr/local/bin/
|
||||
|
||||
gh --version
|
||||
@@ -1,39 +1,30 @@
|
||||
diff --git a/build/gulpfile.vscode.js b/build/gulpfile.vscode.js
|
||||
index 6d3a369..57009d4 100644
|
||||
index 2686509..4fedec2 100644
|
||||
--- a/build/gulpfile.vscode.js
|
||||
+++ b/build/gulpfile.vscode.js
|
||||
@@ -276,7 +276,7 @@ function packageTask(platform, arch, sourceFolderName, destinationFolderName, op
|
||||
all = es.merge(all, gulp.src('resources/linux/code.png', { base: '.' }));
|
||||
@@ -289,7 +289,7 @@ function packageTask(platform, arch, sourceFolderName, destinationFolderName, op
|
||||
} else if (platform === 'darwin') {
|
||||
const shortcut = gulp.src('resources/darwin/bin/code.sh')
|
||||
.pipe(replace('@@APPNAME@@', product.applicationName))
|
||||
- .pipe(rename('bin/code'));
|
||||
+ .pipe(rename('bin/' + product.applicationName));
|
||||
|
||||
all = es.merge(all, shortcut);
|
||||
}
|
||||
@@ -483,7 +483,7 @@ const generateVSCodeConfigurationTask = task.define('generate-vscode-configurati
|
||||
const arch = process.env['VSCODE_ARCH'];
|
||||
const appRoot = path.join(buildDir, `VSCode-darwin-${arch}`);
|
||||
const appName = process.env.VSCODE_QUALITY === 'insider' ? 'Visual\\ Studio\\ Code\\ -\\ Insiders.app' : 'Visual\\ Studio\\ Code.app';
|
||||
- const appPath = path.join(appRoot, appName, 'Contents', 'Resources', 'app', 'bin', 'code');
|
||||
+ const appPath = path.join(appRoot, appName, 'Contents', 'Resources', 'app', 'bin', product.applicationName);
|
||||
const codeProc = cp.exec(
|
||||
`${appPath} --export-default-configuration='${allConfigDetailsPath}' --wait --user-data-dir='${userDataDir}' --extensions-dir='${extensionsDir}'`,
|
||||
(err, stdout, stderr) => {
|
||||
diff --git a/src/vs/platform/native/electron-main/nativeHostMainService.ts b/src/vs/platform/native/electron-main/nativeHostMainService.ts
|
||||
index 692db1d..cd173bc 100644
|
||||
index f7bd477..a489ae4 100644
|
||||
--- a/src/vs/platform/native/electron-main/nativeHostMainService.ts
|
||||
+++ b/src/vs/platform/native/electron-main/nativeHostMainService.ts
|
||||
@@ -341,7 +341,7 @@ export class NativeHostMainService extends Disposable implements INativeHostMain
|
||||
@@ -351,7 +351,7 @@ export class NativeHostMainService extends Disposable implements INativeHostMain
|
||||
}
|
||||
|
||||
private async getShellCommandLink(): Promise<{ readonly source: string, readonly target: string }> {
|
||||
private async getShellCommandLink(): Promise<{ readonly source: string; readonly target: string }> {
|
||||
- const target = resolve(this.environmentMainService.appRoot, 'bin', 'code');
|
||||
+ const target = resolve(this.environmentMainService.appRoot, 'bin', this.productService.applicationName);
|
||||
const source = `/usr/local/bin/${this.productService.applicationName}`;
|
||||
|
||||
// Ensure source exists
|
||||
@@ -551,7 +551,7 @@ export class NativeHostMainService extends Disposable implements INativeHostMain
|
||||
@@ -545,7 +545,7 @@ export class NativeHostMainService extends Disposable implements INativeHostMain
|
||||
|
||||
// macOS
|
||||
if (this.environmentMainService.isBuilt) {
|
||||
@@ -42,4 +33,3 @@ index 692db1d..cd173bc 100644
|
||||
}
|
||||
|
||||
return join(this.environmentMainService.appRoot, 'scripts', 'code-cli.sh');
|
||||
|
||||
|
||||
13
patches/cleanup-archive.patch
Normal file
@@ -0,0 +1,13 @@
|
||||
diff --git a/build/gulpfile.vscode.win32.js b/build/gulpfile.vscode.win32.js
|
||||
index 81ba509..59041e2 100644
|
||||
--- a/build/gulpfile.vscode.win32.js
|
||||
+++ b/build/gulpfile.vscode.win32.js
|
||||
@@ -137,7 +137,7 @@ defineWin32SetupTasks('arm64', 'user');
|
||||
*/
|
||||
function archiveWin32Setup(arch) {
|
||||
return cb => {
|
||||
- const args = ['a', '-tzip', zipPath(arch), '-x!CodeSignSummary*.md', '.', '-r'];
|
||||
+ const args = ['a', '-tzip', zipPath(arch), '-x!CodeSignSummary*.md', '-x!tools', '.', '-r'];
|
||||
|
||||
cp.spawn(_7z, args, { stdio: 'inherit', cwd: buildPath(arch) })
|
||||
.on('error', cb)
|
||||
@@ -1,17 +1,17 @@
|
||||
diff --git a/src/vs/base/common/product.ts b/src/vs/base/common/product.ts
|
||||
index 78d6060..dfa9de2 100644
|
||||
index f822373..30a0a66 100644
|
||||
--- a/src/vs/base/common/product.ts
|
||||
+++ b/src/vs/base/common/product.ts
|
||||
@@ -69,6 +69,7 @@ export interface IProductConfiguration {
|
||||
@@ -70,6 +70,7 @@ export interface IProductConfiguration {
|
||||
|
||||
readonly extensionsGallery?: {
|
||||
readonly serviceUrl: string;
|
||||
+ readonly cacheUrl?: string;
|
||||
readonly itemUrl: string;
|
||||
readonly publisherUrl: string;
|
||||
readonly resourceUrlTemplate: string;
|
||||
readonly controlUrl: string;
|
||||
diff --git a/src/vs/platform/product/common/product.ts b/src/vs/platform/product/common/product.ts
|
||||
index 09dfc64..fec0cfa 100644
|
||||
index 7e63a16..3bfeab8 100644
|
||||
--- a/src/vs/platform/product/common/product.ts
|
||||
+++ b/src/vs/platform/product/common/product.ts
|
||||
@@ -4,11 +4,12 @@
|
||||
@@ -26,11 +26,11 @@ index 09dfc64..fec0cfa 100644
|
||||
import { ISandboxConfiguration } from 'vs/base/parts/sandbox/common/sandboxTypes';
|
||||
+import { getUserDataPath } from 'vs/platform/environment/node/userDataPath';
|
||||
|
||||
let product: IProductConfiguration;
|
||||
|
||||
@@ -31,6 +32,32 @@ else if (typeof require?.__$__nodeRequire === 'function') {
|
||||
/**
|
||||
* @deprecated You MUST use `IProductService` if possible.
|
||||
@@ -34,6 +35,32 @@ else if (typeof require?.__$__nodeRequire === 'function') {
|
||||
product = require.__$__nodeRequire(joinPath(rootPath, 'product.json').fsPath);
|
||||
const pkg = require.__$__nodeRequire(joinPath(rootPath, 'package.json').fsPath) as { version: string; };
|
||||
const pkg = require.__$__nodeRequire(joinPath(rootPath, 'package.json').fsPath) as { version: string };
|
||||
|
||||
+ // Merge user-customized product.json
|
||||
+ try {
|
||||
@@ -61,7 +61,7 @@ index 09dfc64..fec0cfa 100644
|
||||
// Running out of sources
|
||||
if (env['VSCODE_DEV']) {
|
||||
Object.assign(product, {
|
||||
@@ -40,6 +67,19 @@ else if (typeof require?.__$__nodeRequire === 'function') {
|
||||
@@ -44,6 +71,19 @@ else if (typeof require?.__$__nodeRequire === 'function') {
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -1,144 +0,0 @@
|
||||
diff --git a/src/bootstrap-window.js b/src/bootstrap-window.js
|
||||
index 0cc92ec..8ba8fb0 100644
|
||||
--- a/src/bootstrap-window.js
|
||||
+++ b/src/bootstrap-window.js
|
||||
@@ -24,6 +24,7 @@
|
||||
const bootstrapLib = bootstrap();
|
||||
const preloadGlobals = sandboxGlobals();
|
||||
const safeProcess = preloadGlobals.process;
|
||||
+ const useCustomProtocol = safeProcess.sandboxed;
|
||||
|
||||
/**
|
||||
* @typedef {import('./vs/base/parts/sandbox/common/sandboxTypes').ISandboxConfiguration} ISandboxConfiguration
|
||||
@@ -107,9 +108,9 @@
|
||||
window['MonacoEnvironment'] = {};
|
||||
|
||||
const loaderConfig = {
|
||||
- baseUrl: `${bootstrapLib.fileUriFromPath(configuration.appRoot, { isWindows: safeProcess.platform === 'win32', scheme: 'vscode-file', fallbackAuthority: 'vscode-app' })}/out`,
|
||||
+ baseUrl: `${bootstrapLib.fileUriFromPath(configuration.appRoot, { isWindows: safeProcess.platform === 'win32' })}/out`,
|
||||
'vs/nls': nlsConfig,
|
||||
- preferScriptTags: true
|
||||
+ preferScriptTags: useCustomProtocol
|
||||
};
|
||||
|
||||
// use a trusted types policy when loading via script tags
|
||||
@@ -143,6 +144,14 @@
|
||||
loaderConfig.amdModulesPattern = /^vs\//;
|
||||
}
|
||||
|
||||
+ // Cached data config (node.js loading only)
|
||||
+ if (!useCustomProtocol && configuration.codeCachePath) {
|
||||
+ loaderConfig.nodeCachedData = {
|
||||
+ path: configuration.codeCachePath,
|
||||
+ seed: modulePaths.join('')
|
||||
+ };
|
||||
+ }
|
||||
+
|
||||
// Signal before require.config()
|
||||
if (typeof options?.beforeLoaderConfig === 'function') {
|
||||
options.beforeLoaderConfig(loaderConfig);
|
||||
diff --git a/src/vs/base/common/network.ts b/src/vs/base/common/network.ts
|
||||
index 41a3fe9..bbb06e3 100644
|
||||
--- a/src/vs/base/common/network.ts
|
||||
+++ b/src/vs/base/common/network.ts
|
||||
@@ -166,16 +166,7 @@ class FileAccessImpl {
|
||||
}
|
||||
|
||||
// Convert to `vscode-file` resource..
|
||||
- if (
|
||||
- // ...only ever for `file` resources
|
||||
- uri.scheme === Schemas.file &&
|
||||
- (
|
||||
- // ...and we run in native environments
|
||||
- platform.isNative ||
|
||||
- // ...or web worker extensions on desktop
|
||||
- (typeof platform.globals.importScripts === 'function' && platform.globals.origin === `${Schemas.vscodeFileResource}://${FileAccessImpl.FALLBACK_AUTHORITY}`)
|
||||
- )
|
||||
- ) {
|
||||
+ if (uri.scheme === Schemas.file && typeof platform.globals.importScripts === 'function' && platform.globals.origin === `${Schemas.vscodeFileResource}://${FileAccessImpl.FALLBACK_AUTHORITY}`) {
|
||||
return uri.with({
|
||||
scheme: Schemas.vscodeFileResource,
|
||||
// We need to provide an authority here so that it can serve
|
||||
diff --git a/src/vs/platform/protocol/electron-main/protocolMainService.ts b/src/vs/platform/protocol/electron-main/protocolMainService.ts
|
||||
index bde08d8..3f09ad1 100644
|
||||
--- a/src/vs/platform/protocol/electron-main/protocolMainService.ts
|
||||
+++ b/src/vs/platform/protocol/electron-main/protocolMainService.ts
|
||||
@@ -72,9 +72,24 @@ export class ProtocolMainService extends Disposable implements IProtocolMainServ
|
||||
//#region file://
|
||||
|
||||
private handleFileRequest(request: Electron.ProtocolRequest, callback: ProtocolCallback) {
|
||||
- const uri = URI.parse(request.url);
|
||||
+ const fileUri = URI.parse(request.url);
|
||||
+
|
||||
+ // first check by validRoots
|
||||
+ if (this.validRoots.findSubstr(fileUri)) {
|
||||
+ return callback({
|
||||
+ path: fileUri.fsPath
|
||||
+ });
|
||||
+ }
|
||||
|
||||
- this.logService.error(`Refused to load resource ${uri.fsPath} from ${Schemas.file}: protocol (original URL: ${request.url})`);
|
||||
+ // then check by validExtensions
|
||||
+ if (this.validExtensions.has(extname(fileUri))) {
|
||||
+ return callback({
|
||||
+ path: fileUri.fsPath
|
||||
+ });
|
||||
+ }
|
||||
+
|
||||
+ // finally block to load the resource
|
||||
+ this.logService.error(`${Schemas.file}: Refused to load resource ${fileUri.fsPath} from ${Schemas.file}: protocol (original URL: ${request.url})`);
|
||||
|
||||
return callback({ error: -3 /* ABORTED */ });
|
||||
}
|
||||
diff --git a/src/vs/workbench/services/timer/electron-sandbox/timerService.ts b/src/vs/workbench/services/timer/electron-sandbox/timerService.ts
|
||||
index 7cae207..1c54ac9 100644
|
||||
--- a/src/vs/workbench/services/timer/electron-sandbox/timerService.ts
|
||||
+++ b/src/vs/workbench/services/timer/electron-sandbox/timerService.ts
|
||||
@@ -19,7 +19,7 @@ import { process } from 'vs/base/parts/sandbox/electron-sandbox/globals';
|
||||
import { registerSingleton } from 'vs/platform/instantiation/common/extensions';
|
||||
import { IWorkbenchLayoutService } from 'vs/workbench/services/layout/browser/layoutService';
|
||||
import { IProductService } from 'vs/platform/product/common/productService';
|
||||
-import { IStorageService, StorageScope, StorageTarget } from 'vs/platform/storage/common/storage';
|
||||
+import { IStorageService } from 'vs/platform/storage/common/storage';
|
||||
|
||||
export class TimerService extends AbstractTimerService {
|
||||
|
||||
@@ -91,24 +91,23 @@ registerSingleton(ITimerService, TimerService);
|
||||
|
||||
//#region cached data logic
|
||||
|
||||
-const lastRunningCommitStorageKey = 'perf/lastRunningCommit';
|
||||
-let _didUseCachedData: boolean | undefined = undefined;
|
||||
-
|
||||
export function didUseCachedData(productService: IProductService, storageService: IStorageService, environmentService: INativeWorkbenchEnvironmentService): boolean {
|
||||
- // browser code loading: only a guess based on
|
||||
- // this being the first start with the commit
|
||||
- // or subsequent
|
||||
- if (typeof _didUseCachedData !== 'boolean') {
|
||||
- if (!environmentService.configuration.codeCachePath || !productService.commit) {
|
||||
- _didUseCachedData = false; // we only produce cached data whith commit and code cache path
|
||||
- } else if (storageService.get(lastRunningCommitStorageKey, StorageScope.GLOBAL) === productService.commit) {
|
||||
- _didUseCachedData = true; // subsequent start on same commit, assume cached data is there
|
||||
- } else {
|
||||
- storageService.store(lastRunningCommitStorageKey, productService.commit, StorageScope.GLOBAL, StorageTarget.MACHINE);
|
||||
- _didUseCachedData = false; // first time start on commit, assume cached data is not yet there
|
||||
+ if (!Boolean((<any>window).require.getConfig().nodeCachedData)) {
|
||||
+ return false;
|
||||
+ }
|
||||
+ // There are loader events that signal if cached data was missing, rejected,
|
||||
+ // or used. The former two mean no cached data.
|
||||
+ let cachedDataFound = 0;
|
||||
+ for (const event of require.getStats()) {
|
||||
+ switch (event.type) {
|
||||
+ case LoaderEventType.CachedDataRejected:
|
||||
+ return false;
|
||||
+ case LoaderEventType.CachedDataFound:
|
||||
+ cachedDataFound += 1;
|
||||
+ break;
|
||||
}
|
||||
}
|
||||
- return _didUseCachedData;
|
||||
+ return cachedDataFound > 0;
|
||||
}
|
||||
|
||||
//#endregion
|
||||
62
patches/fix-build-linux.patch
Normal file
@@ -0,0 +1,62 @@
|
||||
diff --git a/build/linux/debian/dependencies-generator.js b/build/linux/debian/dependencies-generator.js
|
||||
index 235ca26..4f0f06e 100644
|
||||
--- a/build/linux/debian/dependencies-generator.js
|
||||
+++ b/build/linux/debian/dependencies-generator.js
|
||||
@@ -17,7 +17,7 @@ const dep_lists_1 = require("./dep-lists");
|
||||
// If true, we fail the build if there are new dependencies found during that task.
|
||||
// The reference dependencies, which one has to update when the new dependencies
|
||||
// are valid, are in dep-lists.ts
|
||||
-const FAIL_BUILD_FOR_NEW_DEPENDENCIES = true;
|
||||
+const FAIL_BUILD_FOR_NEW_DEPENDENCIES = false;
|
||||
function getDependencies(buildDir, applicationName, arch, sysroot) {
|
||||
// Get the files for which we want to find dependencies.
|
||||
const nativeModulesPath = path.join(buildDir, 'resources', 'app', 'node_modules.asar.unpacked');
|
||||
diff --git a/build/linux/debian/dependencies-generator.ts b/build/linux/debian/dependencies-generator.ts
|
||||
index 9e3d466..776a4c2 100644
|
||||
--- a/build/linux/debian/dependencies-generator.ts
|
||||
+++ b/build/linux/debian/dependencies-generator.ts
|
||||
@@ -19,7 +19,7 @@ import { ArchString } from './types';
|
||||
// If true, we fail the build if there are new dependencies found during that task.
|
||||
// The reference dependencies, which one has to update when the new dependencies
|
||||
// are valid, are in dep-lists.ts
|
||||
-const FAIL_BUILD_FOR_NEW_DEPENDENCIES: boolean = true;
|
||||
+const FAIL_BUILD_FOR_NEW_DEPENDENCIES: boolean = false;
|
||||
|
||||
export function getDependencies(buildDir: string, applicationName: string, arch: ArchString, sysroot: string): string[] {
|
||||
// Get the files for which we want to find dependencies.
|
||||
diff --git a/build/linux/rpm/dependencies-generator.js b/build/linux/rpm/dependencies-generator.js
|
||||
index 90cfca9..c92579e 100644
|
||||
--- a/build/linux/rpm/dependencies-generator.js
|
||||
+++ b/build/linux/rpm/dependencies-generator.js
|
||||
@@ -16,7 +16,7 @@ const dep_lists_1 = require("./dep-lists");
|
||||
// If true, we fail the build if there are new dependencies found during that task.
|
||||
// The reference dependencies, which one has to update when the new dependencies
|
||||
// are valid, are in dep-lists.ts
|
||||
-const FAIL_BUILD_FOR_NEW_DEPENDENCIES = true;
|
||||
+const FAIL_BUILD_FOR_NEW_DEPENDENCIES = false;
|
||||
function getDependencies(buildDir, applicationName, arch) {
|
||||
// Get the files for which we want to find dependencies.
|
||||
const nativeModulesPath = path.join(buildDir, 'resources', 'app', 'node_modules.asar.unpacked');
|
||||
diff --git a/build/linux/rpm/dependencies-generator.ts b/build/linux/rpm/dependencies-generator.ts
|
||||
index 4b84640..55429fb 100644
|
||||
--- a/build/linux/rpm/dependencies-generator.ts
|
||||
+++ b/build/linux/rpm/dependencies-generator.ts
|
||||
@@ -16,7 +16,7 @@ import { ArchString } from './types';
|
||||
// If true, we fail the build if there are new dependencies found during that task.
|
||||
// The reference dependencies, which one has to update when the new dependencies
|
||||
// are valid, are in dep-lists.ts
|
||||
-const FAIL_BUILD_FOR_NEW_DEPENDENCIES: boolean = true;
|
||||
+const FAIL_BUILD_FOR_NEW_DEPENDENCIES: boolean = false;
|
||||
|
||||
export function getDependencies(buildDir: string, applicationName: string, arch: ArchString): string[] {
|
||||
// Get the files for which we want to find dependencies.
|
||||
diff --git a/resources/linux/rpm/code.spec.template b/resources/linux/rpm/code.spec.template
|
||||
index 00ddb6f..cea0e97 100644
|
||||
--- a/resources/linux/rpm/code.spec.template
|
||||
+++ b/resources/linux/rpm/code.spec.template
|
||||
@@ -72,3 +72,5 @@ update-mime-database /usr/share/mime &> /dev/null || :
|
||||
/usr/share/pixmaps/@@ICON@@.png
|
||||
/usr/share/bash-completion/completions/@@NAME@@
|
||||
/usr/share/zsh/site-functions/_@@NAME@@
|
||||
+
|
||||
+%config(noreplace) /usr/share/@@NAME@@/resources/app/product.json
|
||||
@@ -1,8 +0,0 @@
|
||||
--- vscode/resources/linux/rpm/code.spec.template 2021-03-02 19:26:53.000000000 +0100
|
||||
+++ vscode/resources/linux/rpm/code.spec.template.new 2021-03-02 19:28:12.000000000 +0100
|
||||
@@ -69,3 +69,5 @@
|
||||
/usr/share/pixmaps/@@ICON@@.png
|
||||
/usr/share/bash-completion/completions/@@NAME@@
|
||||
/usr/share/zsh/site-functions/_@@NAME@@
|
||||
+
|
||||
+%config(noreplace) /usr/share/@@NAME@@/resources/app/product.json
|
||||
12
patches/use-github-extensions.patch
Normal file
@@ -0,0 +1,12 @@
|
||||
diff --git a/build/gulpfile.extensions.js b/build/gulpfile.extensions.js
|
||||
--- a/build/gulpfile.extensions.js
|
||||
+++ b/build/gulpfile.extensions.js
|
||||
@@ -223,7 +223,7 @@ const cleanExtensionsBuildTask = task.define('clean-extensions-build', util.rimr
|
||||
const compileExtensionsBuildTask = task.define('compile-extensions-build', task.series(
|
||||
cleanExtensionsBuildTask,
|
||||
task.define('bundle-extensions-build', () => ext.packageLocalExtensionsStream(false).pipe(gulp.dest('.build'))),
|
||||
- task.define('bundle-marketplace-extensions-build', () => ext.packageMarketplaceExtensionsStream(false, product.extensionsGallery?.serviceUrl).pipe(gulp.dest('.build'))),
|
||||
+ task.define('bundle-marketplace-extensions-build', () => ext.packageMarketplaceExtensionsStream(false).pipe(gulp.dest('.build'))),
|
||||
));
|
||||
|
||||
gulp.task(compileExtensionsBuildTask);
|
||||
@@ -1,9 +1,12 @@
|
||||
diff --git a/extensions/github-authentication/src/githubServer.ts b/extensions/github-authentication/src/githubServer.ts
|
||||
index 3d36081..5bac245 100644
|
||||
index c366ff3..75f32da 100644
|
||||
--- a/extensions/github-authentication/src/githubServer.ts
|
||||
+++ b/extensions/github-authentication/src/githubServer.ts
|
||||
@@ -6,8 +6,6 @@
|
||||
import * as nls from 'vscode-nls';
|
||||
@@ -3,27 +3,13 @@
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
-import * as nls from 'vscode-nls';
|
||||
import * as vscode from 'vscode';
|
||||
import fetch, { Response } from 'node-fetch';
|
||||
-import { v4 as uuid } from 'uuid';
|
||||
@@ -11,247 +14,400 @@ index 3d36081..5bac245 100644
|
||||
import { ExperimentationTelemetry } from './experimentationService';
|
||||
import { AuthProviderType } from './github';
|
||||
import { Log } from './common/logger';
|
||||
@@ -15,8 +13,6 @@ import { Log } from './common/logger';
|
||||
const localize = nls.loadMessageBundle();
|
||||
-import { isSupportedEnvironment } from './common/env';
|
||||
-import { LoopbackAuthServer } from './authServer';
|
||||
-import path = require('path');
|
||||
-
|
||||
-const localize = nls.loadMessageBundle();
|
||||
-const CLIENT_ID = '01ab8ac9400c4e429b23';
|
||||
-const GITHUB_AUTHORIZE_URL = 'https://github.com/login/oauth/authorize';
|
||||
-// TODO: change to stable when that happens
|
||||
-const GITHUB_TOKEN_URL = 'https://vscode.dev/codeExchangeProxyEndpoints/github/login/oauth/access_token';
|
||||
-const NETWORK_ERROR = 'network error';
|
||||
|
||||
const NETWORK_ERROR = 'network error';
|
||||
-const AUTH_RELAY_SERVER = 'vscode-auth.github.com';
|
||||
-// const AUTH_RELAY_STAGING_SERVER = 'client-auth-staging-14a768b.herokuapp.com';
|
||||
-const REDIRECT_URL_STABLE = 'https://vscode.dev/redirect';
|
||||
-const REDIRECT_URL_INSIDERS = 'https://insiders.vscode.dev/redirect';
|
||||
+const NETWORK_ERROR = 'network error';
|
||||
|
||||
class UriEventHandler extends vscode.EventEmitter<vscode.Uri> implements vscode.UriHandler {
|
||||
constructor(private readonly Logger: Log) {
|
||||
@@ -29,14 +25,6 @@ class UriEventHandler extends vscode.EventEmitter<vscode.Uri> implements vscode.
|
||||
}
|
||||
@@ -43,14 +29,6 @@ export interface IGitHubServer extends vscode.Disposable {
|
||||
friendlyName: string;
|
||||
type: AuthProviderType;
|
||||
}
|
||||
|
||||
-function parseQuery(uri: vscode.Uri) {
|
||||
- return uri.query.split('&').reduce((prev: any, current) => {
|
||||
- const queryString = current.split('=');
|
||||
- prev[queryString[0]] = queryString[1];
|
||||
- return prev;
|
||||
- }, {});
|
||||
-
|
||||
-interface IGitHubDeviceCodeResponse {
|
||||
- device_code: string;
|
||||
- user_code: string;
|
||||
- verification_uri: string;
|
||||
- interval: number;
|
||||
-}
|
||||
-
|
||||
export interface IGitHubServer extends vscode.Disposable {
|
||||
login(scopes: string): Promise<string>;
|
||||
getUserInfo(token: string): Promise<{ id: string, accountName: string }>;
|
||||
@@ -96,11 +84,7 @@ async function getUserInfo(token: string, serverUri: vscode.Uri, logger: Log): P
|
||||
export class GitHubServer implements IGitHubServer {
|
||||
async function getScopes(token: string, serverUri: vscode.Uri, logger: Log): Promise<string[]> {
|
||||
try {
|
||||
logger.info('Getting token scopes...');
|
||||
@@ -118,23 +96,11 @@ export class GitHubServer implements IGitHubServer {
|
||||
friendlyName = 'GitHub';
|
||||
type = AuthProviderType.github;
|
||||
- private _statusBarItem: vscode.StatusBarItem | undefined;
|
||||
- private _onDidManuallyProvideToken = new vscode.EventEmitter<string | undefined>();
|
||||
|
||||
- private _pendingStates = new Map<string, string[]>();
|
||||
- private _codeExchangePromises = new Map<string, { promise: Promise<string>, cancel: vscode.EventEmitter<void> }>();
|
||||
private _statusBarCommandId = `${this.type}.provide-manually`;
|
||||
- private _pendingNonces = new Map<string, string[]>();
|
||||
- private _codeExchangePromises = new Map<string, { promise: Promise<string>; cancel: vscode.EventEmitter<void> }>();
|
||||
private _disposable: vscode.Disposable;
|
||||
private _uriHandler = new UriEventHandler(this._logger);
|
||||
@@ -115,150 +99,35 @@ export class GitHubServer implements IGitHubServer {
|
||||
this._disposable.dispose();
|
||||
}
|
||||
- private readonly getRedirectEndpoint: Thenable<string>;
|
||||
|
||||
- private isTestEnvironment(url: vscode.Uri): boolean {
|
||||
- return /\.azurewebsites\.net$/.test(url.authority) || url.authority.startsWith('localhost:');
|
||||
- }
|
||||
- constructor(private readonly _supportDeviceCodeFlow: boolean, private readonly _logger: Log, private readonly _telemetryReporter: ExperimentationTelemetry) {
|
||||
+ constructor(_supportDeviceCodeFlow: boolean, private readonly _logger: Log, private readonly _telemetryReporter: ExperimentationTelemetry) {
|
||||
this._disposable = vscode.window.registerUriHandler(this._uriHandler);
|
||||
-
|
||||
- // TODO@joaomoreno TODO@TylerLeonhardt
|
||||
- private async isNoCorsEnvironment(): Promise<boolean> {
|
||||
- const uri = await vscode.env.asExternalUri(vscode.Uri.parse(`${vscode.env.uriScheme}://vscode.github-authentication/dummy`));
|
||||
- return (uri.scheme === 'https' && /^(vscode|github)\./.test(uri.authority)) || (uri.scheme === 'http' && /^localhost/.test(uri.authority));
|
||||
- }
|
||||
-
|
||||
public async login(scopes: string): Promise<string> {
|
||||
this._logger.info(`Logging in for the following scopes: ${scopes}`);
|
||||
|
||||
- // TODO@joaomoreno TODO@TylerLeonhardt
|
||||
- const nocors = await this.isNoCorsEnvironment();
|
||||
- const callbackUri = await vscode.env.asExternalUri(vscode.Uri.parse(`${vscode.env.uriScheme}://vscode.github-authentication/did-authenticate${nocors ? '?nocors=true' : ''}`));
|
||||
-
|
||||
- if (this.isTestEnvironment(callbackUri)) {
|
||||
- const token = await vscode.window.showInputBox({ prompt: 'GitHub Personal Access Token', ignoreFocusOut: true });
|
||||
- if (!token) { throw new Error('Sign in failed: No token provided'); }
|
||||
-
|
||||
- const tokenScopes = await getScopes(token, this.getServerUri('/'), this._logger); // Example: ['repo', 'user']
|
||||
- const scopesList = scopes.split(' '); // Example: 'read:user repo user:email'
|
||||
- if (!scopesList.every(scope => {
|
||||
- const included = tokenScopes.includes(scope);
|
||||
- if (included || !scope.includes(':')) {
|
||||
- return included;
|
||||
- }
|
||||
+ const token = await vscode.window.showInputBox({ prompt: 'GitHub Personal Access Token', ignoreFocusOut: true });
|
||||
+ if (!token) { throw new Error('Sign in failed: No token provided'); }
|
||||
|
||||
- return scope.split(':').some(splitScopes => {
|
||||
- return tokenScopes.includes(splitScopes);
|
||||
- });
|
||||
- })) {
|
||||
- throw new Error(`The provided token is does not match the requested scopes: ${scopes}`);
|
||||
+ const tokenScopes = await getScopes(token, this.getServerUri('/'), this._logger); // Example: ['repo', 'user']
|
||||
+ const scopesList = scopes.split(' '); // Example: 'read:user repo user:email'
|
||||
+ if (!scopesList.every(scope => {
|
||||
+ const included = tokenScopes.includes(scope);
|
||||
+ if (included || !scope.includes(':')) {
|
||||
+ return included;
|
||||
}
|
||||
|
||||
- return token;
|
||||
- }
|
||||
-
|
||||
- this.updateStatusBarItem(true);
|
||||
-
|
||||
- const state = uuid();
|
||||
- const existingStates = this._pendingStates.get(scopes) || [];
|
||||
- this._pendingStates.set(scopes, [...existingStates, state]);
|
||||
-
|
||||
- const uri = vscode.Uri.parse(`https://${AUTH_RELAY_SERVER}/authorize/?callbackUri=${encodeURIComponent(callbackUri.toString())}&scope=${scopes}&state=${state}&responseType=code&authServer=https://github.com${nocors ? '&nocors=true' : ''}`);
|
||||
- await vscode.env.openExternal(uri);
|
||||
-
|
||||
- // Register a single listener for the URI callback, in case the user starts the login process multiple times
|
||||
- // before completing it.
|
||||
- let codeExchangePromise = this._codeExchangePromises.get(scopes);
|
||||
- if (!codeExchangePromise) {
|
||||
- codeExchangePromise = promiseFromEvent(this._uriHandler.event, this.exchangeCodeForToken(scopes));
|
||||
- this._codeExchangePromises.set(scopes, codeExchangePromise);
|
||||
+ return scope.split(':').some(splitScopes => {
|
||||
+ return tokenScopes.includes(splitScopes);
|
||||
+ });
|
||||
+ })) {
|
||||
+ throw new Error(`The provided token is does not match the requested scopes: ${scopes}`);
|
||||
}
|
||||
|
||||
- return Promise.race([
|
||||
- codeExchangePromise.promise,
|
||||
- promiseFromEvent<string | undefined, string>(this._onDidManuallyProvideToken.event, (token: string | undefined, resolve, reject): void => {
|
||||
- if (!token) {
|
||||
- reject('Cancelled');
|
||||
- } else {
|
||||
- resolve(token);
|
||||
- }
|
||||
- }).promise,
|
||||
- new Promise<string>((_, reject) => setTimeout(() => reject('Cancelled'), 60000))
|
||||
- ]).finally(() => {
|
||||
- this._pendingStates.delete(scopes);
|
||||
- codeExchangePromise?.cancel.fire();
|
||||
- this._codeExchangePromises.delete(scopes);
|
||||
- this.updateStatusBarItem(false);
|
||||
- this.getRedirectEndpoint = vscode.commands.executeCommand<{ [providerId: string]: string } | undefined>('workbench.getCodeExchangeProxyEndpoints').then((proxyEndpoints) => {
|
||||
- // If we are running in insiders vscode.dev, then ensure we use the redirect route on that.
|
||||
- let redirectUri = REDIRECT_URL_STABLE;
|
||||
- if (proxyEndpoints?.github && new URL(proxyEndpoints.github).hostname === 'insiders.vscode.dev') {
|
||||
- redirectUri = REDIRECT_URL_INSIDERS;
|
||||
- }
|
||||
- return redirectUri;
|
||||
- });
|
||||
+ return token;
|
||||
}
|
||||
|
||||
- private exchangeCodeForToken: (scopes: string) => PromiseAdapter<vscode.Uri, string> =
|
||||
- (scopes) => async (uri, resolve, reject) => {
|
||||
- const query = parseQuery(uri);
|
||||
- const code = query.code;
|
||||
-
|
||||
- const acceptedStates = this._pendingStates.get(scopes) || [];
|
||||
- if (!acceptedStates.includes(query.state)) {
|
||||
- // A common scenario of this happening is if you:
|
||||
- // 1. Trigger a sign in with one set of scopes
|
||||
- // 2. Before finishing 1, you trigger a sign in with a different set of scopes
|
||||
- // In this scenario we should just return and wait for the next UriHandler event
|
||||
- // to run as we are probably still waiting on the user to hit 'Continue'
|
||||
- this._logger.info('State not found in accepted state. Skipping this execution...');
|
||||
dispose() {
|
||||
@@ -152,181 +118,17 @@ export class GitHubServer implements IGitHubServer {
|
||||
|
||||
// Used for showing a friendlier message to the user when the explicitly cancel a flow.
|
||||
let userCancelled: boolean | undefined;
|
||||
- const yes = localize('yes', "Yes");
|
||||
- const no = localize('no', "No");
|
||||
- const promptToContinue = async () => {
|
||||
- if (userCancelled === undefined) {
|
||||
- // We haven't had a failure yet so wait to prompt
|
||||
- return;
|
||||
- }
|
||||
- const message = userCancelled
|
||||
- ? localize('userCancelledMessage', "Having trouble logging in? Would you like to try a different way?")
|
||||
- : localize('otherReasonMessage', "You have not yet finished authorizing this extension to use GitHub. Would you like to keep trying?");
|
||||
- const result = await vscode.window.showWarningMessage(message, yes, no);
|
||||
- if (result !== yes) {
|
||||
- throw new Error('Cancelled');
|
||||
- }
|
||||
- };
|
||||
-
|
||||
- const url = `https://${AUTH_RELAY_SERVER}/token?code=${code}&state=${query.state}`;
|
||||
- this._logger.info('Exchanging code for token...');
|
||||
- const nonce = uuid();
|
||||
- const callbackUri = await vscode.env.asExternalUri(vscode.Uri.parse(`${vscode.env.uriScheme}://vscode.github-authentication/did-authenticate?nonce=${encodeURIComponent(nonce)}`));
|
||||
-
|
||||
- // TODO@joao: remove
|
||||
- if (query.nocors) {
|
||||
- try {
|
||||
- const json: any = await vscode.commands.executeCommand('_workbench.fetchJSON', url, 'POST');
|
||||
- this._logger.info('Token exchange success!');
|
||||
- resolve(json.access_token);
|
||||
- } catch (err) {
|
||||
- reject(err);
|
||||
- const supported = isSupportedEnvironment(callbackUri);
|
||||
- if (supported) {
|
||||
- try {
|
||||
- return await this.doLoginWithoutLocalServer(scopes, nonce, callbackUri);
|
||||
- } catch (e) {
|
||||
- this._logger.error(e);
|
||||
- userCancelled = e.message ?? e === 'User Cancelled';
|
||||
- }
|
||||
- }
|
||||
-
|
||||
- // Starting a local server isn't supported in web
|
||||
- if (vscode.env.uiKind === vscode.UIKind.Desktop) {
|
||||
- try {
|
||||
- await promptToContinue();
|
||||
- return await this.doLoginWithLocalServer(scopes);
|
||||
- } catch (e) {
|
||||
- this._logger.error(e);
|
||||
- userCancelled = e.message ?? e === 'User Cancelled';
|
||||
- }
|
||||
- }
|
||||
|
||||
- if (this._supportDeviceCodeFlow) {
|
||||
- try {
|
||||
- await promptToContinue();
|
||||
- return await this.doLoginDeviceCodeFlow(scopes);
|
||||
- } catch (e) {
|
||||
- this._logger.error(e);
|
||||
- userCancelled = e.message ?? e === 'User Cancelled';
|
||||
- }
|
||||
- } else if (!supported) {
|
||||
- try {
|
||||
- await promptToContinue();
|
||||
- return await this.doLoginWithPat(scopes);
|
||||
- } catch (e) {
|
||||
- this._logger.error(e);
|
||||
- userCancelled = e.message ?? e === 'User Cancelled';
|
||||
- }
|
||||
+ try {
|
||||
+ return await this.doLoginWithPat(scopes);
|
||||
+ } catch (e) {
|
||||
+ this._logger.error(e);
|
||||
+ userCancelled = e.message ?? e === 'User Cancelled';
|
||||
}
|
||||
|
||||
throw new Error(userCancelled ? 'Cancelled' : 'No auth flow succeeded.');
|
||||
}
|
||||
|
||||
- private async doLoginWithoutLocalServer(scopes: string, nonce: string, callbackUri: vscode.Uri): Promise<string> {
|
||||
- this._logger.info(`Trying without local server... (${scopes})`);
|
||||
- return await vscode.window.withProgress<string>({
|
||||
- location: vscode.ProgressLocation.Notification,
|
||||
- title: localize('signingIn', "Signing in to github.com..."),
|
||||
- cancellable: true
|
||||
- }, async (_, token) => {
|
||||
- const existingNonces = this._pendingNonces.get(scopes) || [];
|
||||
- this._pendingNonces.set(scopes, [...existingNonces, nonce]);
|
||||
- const redirectUri = await this.getRedirectEndpoint;
|
||||
- const searchParams = new URLSearchParams([
|
||||
- ['client_id', CLIENT_ID],
|
||||
- ['redirect_uri', redirectUri],
|
||||
- ['scope', scopes],
|
||||
- ['state', encodeURIComponent(callbackUri.toString(true))]
|
||||
- ]);
|
||||
- const uri = vscode.Uri.parse(`${GITHUB_AUTHORIZE_URL}?${searchParams.toString()}`);
|
||||
- await vscode.env.openExternal(uri);
|
||||
-
|
||||
- // Register a single listener for the URI callback, in case the user starts the login process multiple times
|
||||
- // before completing it.
|
||||
- let codeExchangePromise = this._codeExchangePromises.get(scopes);
|
||||
- if (!codeExchangePromise) {
|
||||
- codeExchangePromise = promiseFromEvent(this._uriHandler.event, this.handleUri(scopes));
|
||||
- this._codeExchangePromises.set(scopes, codeExchangePromise);
|
||||
- }
|
||||
-
|
||||
- try {
|
||||
- return await Promise.race([
|
||||
- codeExchangePromise.promise,
|
||||
- new Promise<string>((_, reject) => setTimeout(() => reject('Cancelled'), 60000)),
|
||||
- promiseFromEvent<any, any>(token.onCancellationRequested, (_, __, reject) => { reject('User Cancelled'); }).promise
|
||||
- ]);
|
||||
- } finally {
|
||||
- this._pendingNonces.delete(scopes);
|
||||
- codeExchangePromise?.cancel.fire();
|
||||
- this._codeExchangePromises.delete(scopes);
|
||||
- }
|
||||
- });
|
||||
- }
|
||||
-
|
||||
- private async doLoginWithLocalServer(scopes: string): Promise<string> {
|
||||
- this._logger.info(`Trying with local server... (${scopes})`);
|
||||
- return await vscode.window.withProgress<string>({
|
||||
- location: vscode.ProgressLocation.Notification,
|
||||
- title: localize('signingInAnotherWay', "Signing in to github.com..."),
|
||||
- cancellable: true
|
||||
- }, async (_, token) => {
|
||||
- const redirectUri = await this.getRedirectEndpoint;
|
||||
- const searchParams = new URLSearchParams([
|
||||
- ['client_id', CLIENT_ID],
|
||||
- ['redirect_uri', redirectUri],
|
||||
- ['scope', scopes],
|
||||
- ]);
|
||||
- const loginUrl = `${GITHUB_AUTHORIZE_URL}?${searchParams.toString()}`;
|
||||
- const server = new LoopbackAuthServer(path.join(__dirname, '../media'), loginUrl);
|
||||
- const port = await server.start();
|
||||
-
|
||||
- let codeToExchange;
|
||||
- try {
|
||||
- vscode.env.openExternal(vscode.Uri.parse(`http://127.0.0.1:${port}/signin?nonce=${encodeURIComponent(server.nonce)}`));
|
||||
- const { code } = await Promise.race([
|
||||
- server.waitForOAuthResponse(),
|
||||
- new Promise<any>((_, reject) => setTimeout(() => reject('Cancelled'), 60000)),
|
||||
- promiseFromEvent<any, any>(token.onCancellationRequested, (_, __, reject) => { reject('User Cancelled'); }).promise
|
||||
- ]);
|
||||
- codeToExchange = code;
|
||||
- } finally {
|
||||
- setTimeout(() => {
|
||||
- void server.stop();
|
||||
- }, 5000);
|
||||
- }
|
||||
-
|
||||
- const accessToken = await this.exchangeCodeForToken(codeToExchange);
|
||||
- return accessToken;
|
||||
- });
|
||||
- }
|
||||
-
|
||||
- private async doLoginDeviceCodeFlow(scopes: string): Promise<string> {
|
||||
- this._logger.info(`Trying device code flow... (${scopes})`);
|
||||
-
|
||||
- // Get initial device code
|
||||
- const uri = `https://github.com/login/device/code?client_id=${CLIENT_ID}&scope=${scopes}`;
|
||||
- const result = await fetch(uri, {
|
||||
- method: 'POST',
|
||||
- headers: {
|
||||
- Accept: 'application/json'
|
||||
- }
|
||||
- });
|
||||
- if (!result.ok) {
|
||||
- throw new Error(`Failed to get one-time code: ${await result.text()}`);
|
||||
- }
|
||||
-
|
||||
- const json = await result.json() as IGitHubDeviceCodeResponse;
|
||||
-
|
||||
-
|
||||
- const modalResult = await vscode.window.showInformationMessage(
|
||||
- localize('code.title', "Your Code: {0}", json.user_code),
|
||||
- {
|
||||
- modal: true,
|
||||
- detail: localize('code.detail', "To finish authenticating, navigate to GitHub and paste in the above one-time code.")
|
||||
- }, 'Copy & Continue to GitHub');
|
||||
-
|
||||
- if (modalResult !== 'Copy & Continue to GitHub') {
|
||||
- throw new Error('User Cancelled');
|
||||
- }
|
||||
-
|
||||
- await vscode.env.clipboard.writeText(json.user_code);
|
||||
-
|
||||
- const uriToOpen = await vscode.env.asExternalUri(vscode.Uri.parse(json.verification_uri));
|
||||
- await vscode.env.openExternal(uriToOpen);
|
||||
-
|
||||
- return await this.waitForDeviceCodeAccessToken(json);
|
||||
- }
|
||||
|
||||
private async doLoginWithPat(scopes: string): Promise<string> {
|
||||
this._logger.info(`Trying to retrieve PAT... (${scopes})`);
|
||||
@@ -351,118 +153,6 @@ export class GitHubServer implements IGitHubServer {
|
||||
return token;
|
||||
}
|
||||
|
||||
- private async waitForDeviceCodeAccessToken(
|
||||
- json: IGitHubDeviceCodeResponse,
|
||||
- ): Promise<string> {
|
||||
- return await vscode.window.withProgress<string>({
|
||||
- location: vscode.ProgressLocation.Notification,
|
||||
- cancellable: true,
|
||||
- title: localize(
|
||||
- 'progress',
|
||||
- "Open [{0}]({0}) in a new tab and paste your one-time code: {1}",
|
||||
- json.verification_uri,
|
||||
- json.user_code)
|
||||
- }, async (_, token) => {
|
||||
- const refreshTokenUri = `https://github.com/login/oauth/access_token?client_id=${CLIENT_ID}&device_code=${json.device_code}&grant_type=urn:ietf:params:oauth:grant-type:device_code`;
|
||||
-
|
||||
- // Try for 2 minutes
|
||||
- const attempts = 120 / json.interval;
|
||||
- for (let i = 0; i < attempts; i++) {
|
||||
- await new Promise(resolve => setTimeout(resolve, json.interval * 1000));
|
||||
- if (token.isCancellationRequested) {
|
||||
- throw new Error('User Cancelled');
|
||||
- }
|
||||
- } else {
|
||||
- let accessTokenResult;
|
||||
- try {
|
||||
- const result = await fetch(url, {
|
||||
- accessTokenResult = await fetch(refreshTokenUri, {
|
||||
- method: 'POST',
|
||||
- headers: {
|
||||
- Accept: 'application/json'
|
||||
- }
|
||||
- });
|
||||
-
|
||||
- if (result.ok) {
|
||||
- const json = await result.json();
|
||||
- this._logger.info('Token exchange success!');
|
||||
- resolve(json.access_token);
|
||||
- } else {
|
||||
- reject(result.statusText);
|
||||
- }
|
||||
- } catch (ex) {
|
||||
- reject(ex);
|
||||
- } catch {
|
||||
- continue;
|
||||
- }
|
||||
-
|
||||
- if (!accessTokenResult.ok) {
|
||||
- continue;
|
||||
- }
|
||||
-
|
||||
- const accessTokenJson = await accessTokenResult.json();
|
||||
-
|
||||
- if (accessTokenJson.error === 'authorization_pending') {
|
||||
- continue;
|
||||
- }
|
||||
-
|
||||
- if (accessTokenJson.error) {
|
||||
- throw new Error(accessTokenJson.error_description);
|
||||
- }
|
||||
-
|
||||
- return accessTokenJson.access_token;
|
||||
- }
|
||||
-
|
||||
- throw new Error('Cancelled');
|
||||
- });
|
||||
- }
|
||||
-
|
||||
- private handleUri: (scopes: string) => PromiseAdapter<vscode.Uri, string> =
|
||||
- (scopes) => (uri, resolve, reject) => {
|
||||
- const query = new URLSearchParams(uri.query);
|
||||
- const code = query.get('code');
|
||||
- const nonce = query.get('nonce');
|
||||
- if (!code) {
|
||||
- reject(new Error('No code'));
|
||||
- return;
|
||||
- }
|
||||
- if (!nonce) {
|
||||
- reject(new Error('No nonce'));
|
||||
- return;
|
||||
- }
|
||||
-
|
||||
- const acceptedNonces = this._pendingNonces.get(scopes) || [];
|
||||
- if (!acceptedNonces.includes(nonce)) {
|
||||
- // A common scenario of this happening is if you:
|
||||
- // 1. Trigger a sign in with one set of scopes
|
||||
- // 2. Before finishing 1, you trigger a sign in with a different set of scopes
|
||||
- // In this scenario we should just return and wait for the next UriHandler event
|
||||
- // to run as we are probably still waiting on the user to hit 'Continue'
|
||||
- this._logger.info('Nonce not found in accepted nonces. Skipping this execution...');
|
||||
- return;
|
||||
- }
|
||||
-
|
||||
- resolve(this.exchangeCodeForToken(code));
|
||||
- };
|
||||
-
|
||||
- private async exchangeCodeForToken(code: string): Promise<string> {
|
||||
- this._logger.info('Exchanging code for token...');
|
||||
-
|
||||
- const proxyEndpoints: { [providerId: string]: string } | undefined = await vscode.commands.executeCommand('workbench.getCodeExchangeProxyEndpoints');
|
||||
- const endpointUrl = proxyEndpoints?.github ? `${proxyEndpoints.github}login/oauth/access_token` : GITHUB_TOKEN_URL;
|
||||
-
|
||||
- const body = `code=${code}`;
|
||||
- const result = await fetch(endpointUrl, {
|
||||
- method: 'POST',
|
||||
- headers: {
|
||||
- Accept: 'application/json',
|
||||
- 'Content-Type': 'application/x-www-form-urlencoded',
|
||||
- 'Content-Length': body.toString()
|
||||
-
|
||||
- },
|
||||
- body
|
||||
- });
|
||||
-
|
||||
- if (result.ok) {
|
||||
- const json = await result.json();
|
||||
- this._logger.info('Token exchange success!');
|
||||
- return json.access_token;
|
||||
- } else {
|
||||
- const text = await result.text();
|
||||
- const error = new Error(text);
|
||||
- error.name = 'GitHubTokenExchangeError';
|
||||
- throw error;
|
||||
- }
|
||||
- }
|
||||
-
|
||||
private getServerUri(path: string = '') {
|
||||
const apiUri = vscode.Uri.parse('https://api.github.com');
|
||||
return vscode.Uri.parse(`${apiUri.scheme}://${apiUri.authority}${path}`);
|
||||
}
|
||||
diff --git a/src/vs/workbench/browser/parts/activitybar/activitybarActions.ts b/src/vs/workbench/browser/parts/activitybar/activitybarActions.ts
|
||||
index 36647e6..55e722b 100644
|
||||
--- a/src/vs/workbench/browser/parts/activitybar/activitybarActions.ts
|
||||
+++ b/src/vs/workbench/browser/parts/activitybar/activitybarActions.ts
|
||||
@@ -271,7 +271,7 @@ export class AccountsActivityActionViewItem extends MenuActivityActionViewItem {
|
||||
}
|
||||
});
|
||||
|
||||
- private updateStatusBarItem(isStart?: boolean) {
|
||||
- if (isStart && !this._statusBarItem) {
|
||||
- this._statusBarItem = vscode.window.createStatusBarItem('status.git.signIn', vscode.StatusBarAlignment.Left);
|
||||
- this._statusBarItem.name = localize('status.git.signIn.name', "GitHub Sign-in");
|
||||
- this._statusBarItem.text = localize('signingIn', "$(mark-github) Signing in to github.com...");
|
||||
- this._statusBarItem.command = this._statusBarCommandId;
|
||||
- this._statusBarItem.show();
|
||||
- }
|
||||
- if (providers.length && !menus.length) {
|
||||
+ if (!menus.length) {
|
||||
const noAccountsAvailableAction = disposables.add(new Action('noAccountsAvailable', localize('noAccounts', "You are not signed in to any accounts"), undefined, false));
|
||||
menus.push(noAccountsAvailableAction);
|
||||
}
|
||||
diff --git a/src/vs/workbench/services/authentication/browser/authenticationService.ts b/src/vs/workbench/services/authentication/browser/authenticationService.ts
|
||||
index f543021..ad40bc3 100644
|
||||
--- a/src/vs/workbench/services/authentication/browser/authenticationService.ts
|
||||
+++ b/src/vs/workbench/services/authentication/browser/authenticationService.ts
|
||||
@@ -272,16 +272,6 @@ export class AuthenticationService extends Disposable implements IAuthentication
|
||||
this.removeAccessRequest(id, extensionId);
|
||||
});
|
||||
}
|
||||
-
|
||||
- if (!isStart && this._statusBarItem) {
|
||||
- this._statusBarItem.dispose();
|
||||
- this._statusBarItem = undefined;
|
||||
- }
|
||||
- }
|
||||
-
|
||||
private async manuallyProvideUri() {
|
||||
const uri = await vscode.window.showInputBox({
|
||||
prompt: 'Uri',
|
||||
@@ -290,41 +159,7 @@ export class GitHubServer implements IGitHubServer {
|
||||
return getUserInfo(token, this.getServerUri('/user'), this._logger);
|
||||
}
|
||||
|
||||
- public async sendAdditionalTelemetryInfo(token: string): Promise<void> {
|
||||
- const nocors = await this.isNoCorsEnvironment();
|
||||
-
|
||||
- if (nocors) {
|
||||
- return;
|
||||
- }
|
||||
-
|
||||
- try {
|
||||
- const result = await fetch('https://education.github.com/api/user', {
|
||||
- headers: {
|
||||
- Authorization: `token ${token}`,
|
||||
- 'faculty-check-preview': 'true',
|
||||
- 'User-Agent': 'Visual-Studio-Code'
|
||||
- }
|
||||
- if (!this._authenticationProviders.size) {
|
||||
- this._placeholderMenuItem = MenuRegistry.appendMenuItem(MenuId.AccountsContext, {
|
||||
- command: {
|
||||
- id: 'noAuthenticationProviders',
|
||||
- title: nls.localize('loading', "Loading..."),
|
||||
- precondition: ContextKeyExpr.false()
|
||||
- },
|
||||
- });
|
||||
-
|
||||
- if (result.ok) {
|
||||
- const json: { student: boolean, faculty: boolean } = await result.json();
|
||||
-
|
||||
- /* __GDPR__
|
||||
- "session" : {
|
||||
- "isEdu": { "classification": "NonIdentifiableDemographicInfo", "purpose": "FeatureInsight" }
|
||||
- }
|
||||
- */
|
||||
- this._telemetryReporter.sendTelemetryEvent('session', {
|
||||
- isEdu: json.student
|
||||
- ? 'student'
|
||||
- : json.faculty
|
||||
- ? 'faculty'
|
||||
- : 'none'
|
||||
- });
|
||||
- }
|
||||
- } catch (e) {
|
||||
- // No-op
|
||||
- }
|
||||
+ public async sendAdditionalTelemetryInfo(_token: string): Promise<void> {
|
||||
}
|
||||
|
||||
public async checkEnterpriseVersion(token: string): Promise<void> {
|
||||
async sessionsUpdate(id: string, event: AuthenticationSessionsChangeEvent): Promise<void> {
|
||||
|
||||
105
prepare_artifacts.sh
Executable file
@@ -0,0 +1,105 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
npm install -g checksum
|
||||
|
||||
sum_file() {
|
||||
if [[ -f "${1}" ]]; then
|
||||
echo "Calcuating checksum for ${1}"
|
||||
checksum -a sha256 "${1}" > "${1}".sha256
|
||||
checksum "${1}" > "${1}".sha1
|
||||
fi
|
||||
}
|
||||
|
||||
mkdir artifacts
|
||||
|
||||
if [[ "${OS_NAME}" == "osx" ]]; then
|
||||
if [[ "${SHOULD_BUILD_ZIP}" != "no" ]]; then
|
||||
echo "Building and moving ZIP"
|
||||
cd "VSCode-darwin-${VSCODE_ARCH}"
|
||||
zip -r -X -y "../artifacts/VSCodium-darwin-${VSCODE_ARCH}-${MS_TAG}.zip" ./*.app
|
||||
cd ..
|
||||
fi
|
||||
|
||||
if [[ "${SHOULD_BUILD_DMG}" != "no" ]]; then
|
||||
echo "Building and moving DMG"
|
||||
pushd "VSCode-darwin-${VSCODE_ARCH}"
|
||||
npx create-dmg VSCodium.app ..
|
||||
mv "../VSCodium ${MS_TAG}.dmg" "../artifacts/VSCodium.${VSCODE_ARCH}.${MS_TAG}.dmg"
|
||||
popd
|
||||
fi
|
||||
|
||||
VSCODE_PLATFORM="darwin"
|
||||
elif [[ "${OS_NAME}" == "windows" ]]; then
|
||||
if [[ "${SHOULD_BUILD_ZIP}" != "no" ]]; then
|
||||
echo "Moving ZIP"
|
||||
mv "vscode\\.build\\win32-${VSCODE_ARCH}\\archive\\VSCode-win32-${VSCODE_ARCH}.zip" "artifacts\\VSCodium-win32-${VSCODE_ARCH}-${MS_TAG}.zip"
|
||||
fi
|
||||
|
||||
if [[ "${SHOULD_BUILD_EXE_SYS}" != "no" ]]; then
|
||||
echo "Moving System EXE"
|
||||
mv "vscode\\.build\\win32-${VSCODE_ARCH}\\system-setup\\VSCodeSetup.exe" "artifacts\\VSCodiumSetup-${VSCODE_ARCH}-${MS_TAG}.exe"
|
||||
fi
|
||||
|
||||
if [[ "${SHOULD_BUILD_EXE_USR}" != "no" ]]; then
|
||||
echo "Moving User EXE"
|
||||
mv "vscode\\.build\\win32-${VSCODE_ARCH}\\user-setup\\VSCodeSetup.exe" "artifacts\\VSCodiumUserSetup-${VSCODE_ARCH}-${MS_TAG}.exe"
|
||||
fi
|
||||
|
||||
if [[ "${VSCODE_ARCH}" == "ia32" || "${VSCODE_ARCH}" == "x64" ]]; then
|
||||
if [[ "${SHOULD_BUILD_MSI}" != "no" ]]; then
|
||||
echo "Moving MSI"
|
||||
mv "build\\windows\\msi\\releasedir\\VSCodium-${VSCODE_ARCH}-${MS_TAG}.msi" artifacts/
|
||||
fi
|
||||
|
||||
if [[ "${SHOULD_BUILD_MSI_NOUP}" != "no" ]]; then
|
||||
echo "Moving MSI with disabled updates"
|
||||
mv "build\\windows\\msi\\releasedir\\VSCodium-${VSCODE_ARCH}-updates-disabled-${MS_TAG}.msi" artifacts/
|
||||
fi
|
||||
fi
|
||||
|
||||
VSCODE_PLATFORM="win32"
|
||||
else
|
||||
if [[ "${SHOULD_BUILD_TAR}" != "no" ]]; then
|
||||
echo "Building and moving TAR"
|
||||
cd "VSCode-linux-${VSCODE_ARCH}"
|
||||
tar czf "../artifacts/VSCodium-linux-${VSCODE_ARCH}-${MS_TAG}.tar.gz" .
|
||||
cd ..
|
||||
fi
|
||||
|
||||
if [[ "${SHOULD_BUILD_DEB}" != "no" ]]; then
|
||||
echo "Moving DEB"
|
||||
mv vscode/.build/linux/deb/*/deb/*.deb artifacts/
|
||||
fi
|
||||
|
||||
if [[ "${SHOULD_BUILD_RPM}" != "no" ]]; then
|
||||
echo "Moving RPM"
|
||||
mv vscode/.build/linux/rpm/*/*.rpm artifacts/
|
||||
fi
|
||||
|
||||
if [[ "${SHOULD_BUILD_APPIMAGE}" != "no" ]]; then
|
||||
echo "Moving AppImage"
|
||||
mv build/linux/appimage/out/*.AppImage* artifacts/
|
||||
fi
|
||||
|
||||
VSCODE_PLATFORM="linux"
|
||||
fi
|
||||
|
||||
if [[ "${SHOULD_BUILD_REH}" != "no" ]]; then
|
||||
echo "Building and moving REH"
|
||||
cd "vscode-reh-${VSCODE_PLATFORM}-${VSCODE_ARCH}"
|
||||
tar czf "../artifacts/vscodium-reh-${VSCODE_PLATFORM}-${VSCODE_ARCH}-${MS_TAG}.tar.gz" .
|
||||
cd ..
|
||||
fi
|
||||
|
||||
cd artifacts
|
||||
|
||||
for FILE in *
|
||||
do
|
||||
if [[ -f "${FILE}" ]]; then
|
||||
sum_file "${FILE}"
|
||||
fi
|
||||
done
|
||||
|
||||
cd ..
|
||||
@@ -5,7 +5,7 @@ set -e
|
||||
cp -rp src/* vscode/
|
||||
cp -f LICENSE vscode/LICENSE.txt
|
||||
|
||||
cd vscode || exit
|
||||
cd vscode || { echo "'vscode' dir not found"; exit 1; }
|
||||
|
||||
../update_settings.sh
|
||||
|
||||
@@ -13,30 +13,40 @@ cd vscode || exit
|
||||
{ set +x; } 2>/dev/null
|
||||
|
||||
for file in ../patches/*.patch; do
|
||||
if [ -f "$file" ]; then
|
||||
echo applying patch: $file;
|
||||
git apply --ignore-whitespace "$file"
|
||||
if [ -f "${file}" ]; then
|
||||
echo applying patch: "${file}";
|
||||
git apply --ignore-whitespace "${file}"
|
||||
if [ $? -ne 0 ]; then
|
||||
echo failed to apply patch $file 1>&2
|
||||
echo failed to apply patch "${file}" 1>&2
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
for file in ../patches/user/*.patch; do
|
||||
if [ -f "$file" ]; then
|
||||
echo applying user patch: $file;
|
||||
git apply --ignore-whitespace "$file"
|
||||
if [ -f "${file}" ]; then
|
||||
echo applying user patch: "${file}";
|
||||
git apply --ignore-whitespace "${file}"
|
||||
if [ $? -ne 0 ]; then
|
||||
echo failed to apply patch $file 1>&2
|
||||
echo failed to apply patch "${file}" 1>&2
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
set -x
|
||||
|
||||
if [[ "$OS_NAME" == "osx" ]]; then
|
||||
CHILD_CONCURRENCY=1 yarn --frozen-lockfile --ignore-optional
|
||||
npm_config_argv='{"original":["--ignore-optional"]}' yarn postinstall
|
||||
if [[ "${OS_NAME}" == "osx" ]]; then
|
||||
CHILD_CONCURRENCY=1 yarn --frozen-lockfile
|
||||
yarn postinstall
|
||||
elif [[ "${npm_config_arch}" == "armv7l" || "${npm_config_arch}" == "ia32" ]]; then
|
||||
# node-gyp@9.0.0 shipped with node@16.15.0 starts using config.gypi
|
||||
# from the custom headers path if dist-url option was set instead of
|
||||
# using the config value from the process. Electron builds with pointer compression
|
||||
# enabled for x64 and arm64, but incorrectly ships a single copy of config.gypi
|
||||
# with v8_enable_pointer_compression option always set for all target architectures.
|
||||
# We use the force_process_config option to use the config.gypi from the
|
||||
# nodejs process executing npm for 32-bit architectures.
|
||||
export npm_config_force_process_config="true"
|
||||
CHILD_CONCURRENCY=1 yarn --frozen-lockfile
|
||||
else
|
||||
CHILD_CONCURRENCY=1 yarn --frozen-lockfile
|
||||
fi
|
||||
@@ -50,7 +60,6 @@ twitterUrl='setpath(["twitterUrl"]; "https://go.microsoft.com/fwlink/?LinkID=533
|
||||
requestFeatureUrl='setpath(["requestFeatureUrl"]; "https://go.microsoft.com/fwlink/?LinkID=533482")'
|
||||
documentationUrl='setpath(["documentationUrl"]; "https://go.microsoft.com/fwlink/?LinkID=533484#vscode")'
|
||||
introductoryVideosUrl='setpath(["introductoryVideosUrl"]; "https://go.microsoft.com/fwlink/?linkid=832146")'
|
||||
extensionAllowedBadgeProviders='setpath(["extensionAllowedBadgeProviders"]; ["api.bintray.com", "api.travis-ci.com", "api.travis-ci.org", "app.fossa.io", "badge.fury.io", "badge.waffle.io", "badgen.net", "badges.frapsoft.com", "badges.gitter.im", "badges.greenkeeper.io", "cdn.travis-ci.com", "cdn.travis-ci.org", "ci.appveyor.com", "circleci.com", "cla.opensource.microsoft.com", "codacy.com", "codeclimate.com", "codecov.io", "coveralls.io", "david-dm.org", "deepscan.io", "dev.azure.com", "flat.badgen.net", "gemnasium.com", "githost.io", "gitlab.com", "godoc.org", "goreportcard.com", "img.shields.io", "isitmaintained.com", "marketplace.visualstudio.com", "nodesecurity.io", "opencollective.com", "snyk.io", "travis-ci.com", "travis-ci.org", "visualstudio.com", "vsmarketplacebadge.apphb.com", "www.bithound.io", "www.versioneye.com"])'
|
||||
updateUrl='setpath(["updateUrl"]; "https://vscodium.now.sh")'
|
||||
releaseNotesUrl='setpath(["releaseNotesUrl"]; "https://go.microsoft.com/fwlink/?LinkID=533483#vscode")'
|
||||
keyboardShortcutsUrlMac='setpath(["keyboardShortcutsUrlMac"]; "https://go.microsoft.com/fwlink/?linkid=832143")'
|
||||
@@ -71,18 +80,22 @@ win32AppUserModelId='setpath(["win32AppUserModelId"]; "Microsoft.VSCodium")'
|
||||
win32ShellNameShort='setpath(["win32ShellNameShort"]; "VSCodium")'
|
||||
win32x64UserAppId='setpath (["win32x64UserAppId"]; "{{2E1F05D1-C245-4562-81EE-28188DB6FD17}")'
|
||||
urlProtocol='setpath(["urlProtocol"]; "vscodium")'
|
||||
extensionAllowedProposedApi='setpath(["extensionAllowedProposedApi"]; getpath(["extensionAllowedProposedApi"]) + ["ms-vscode.cpptools", "ms-azuretools.vscode-docker", "visualstudioexptteam.vscodeintellicode", "GitHub.codespaces", "GitHub.vscode-pull-request-github-insiders", "GitHub.vscode-pull-request-github", "Microsoft.vscode-nmake-tools", "ms-ai-tools.notebook-renderers", "ms-dotnettools.dotnet-interactive-vscode", "ms-python.gather", "ms-python.python", "ms-toolsai.jupyter", "ms-toolsai.vscode-ai", "ms-toolsai.vscode-ai-remote", "ms-vscode-remote.remote-containers-nightly", "ms-vscode-remote.remote-containers", "ms-vscode-remote.remote-ssh-edit-nightly", "ms-vscode-remote.remote-ssh-edit", "ms-vscode-remote.remote-ssh-nightly", "ms-vscode-remote.remote-ssh", "ms-vscode-remote.remote-wsl-nightly", "ms-vscode-remote.remote-wsl", "ms-vscode-remote.remote-wsl-recommender", "ms-vscode-remote.vscode-remote-extensionpack-nightly", "ms-vscode-remote.vscode-remote-extensionpack", "ms-vscode.azure-account", "ms-vscode.azure-sphere-tools-ui", "ms-vscode.azure-sphere-tools", "ms-vscode.github-browser", "ms-vscode.github-richnav", "ms-vscode.js-debug-nightly", "ms-vscode.js-debug", "ms-vscode.lsif-browser", "ms-vscode.vscode-js-profile-flame", "ms-vscode.vscode-js-profile-table", "ms-vscode.vscode-selfhost-test-provider", "ms-vsliveshare.cloudenv-explorer", "ms-vsliveshare.cloudenv", "ms-vsliveshare.vsliveshare", "ms-vsonline.vsonline", "dbaeumer.vscode-eslint"])'
|
||||
serverDataFolderName='setpath(["serverDataFolderName"]; ".vscode-server-oss")'
|
||||
reportIssueUrl='setpath(["reportIssueUrl"]; "https://github.com/VSCodium/vscodium/issues/new/choose")'
|
||||
serverApplicationName='setpath(["serverApplicationName"]; "codium-server")'
|
||||
serverDataFolderName='setpath(["serverDataFolderName"]; ".vscodium-server")'
|
||||
reportIssueUrl='setpath(["reportIssueUrl"]; "https://github.com/VSCodium/vscodium/issues/new")'
|
||||
licenseUrl='setpath(["licenseUrl"]; "https://github.com/VSCodium/vscodium/blob/master/LICENSE")'
|
||||
|
||||
product_json_changes="${checksumFailMoreInfoUrl} | ${tipsAndTricksUrl} | ${twitterUrl} | ${requestFeatureUrl} | ${documentationUrl} | ${introductoryVideosUrl} | ${extensionAllowedBadgeProviders} | ${updateUrl} | ${releaseNotesUrl} | ${keyboardShortcutsUrlMac} | ${keyboardShortcutsUrlLinux} | ${keyboardShortcutsUrlWin} | ${quality} | ${extensionsGallery} | ${linkProtectionTrustedDomains} | ${nameShort} | ${nameLong} | ${linuxIconName} | ${applicationName} | ${win32MutexName} | ${win32DirName} | ${win32NameVersion} | ${win32RegValueName} | ${win32AppUserModelId} | ${win32ShellNameShort} | ${win32x64UserAppId} | ${urlProtocol} | ${extensionAllowedProposedApi} | ${serverDataFolderName} | ${reportIssueUrl} | ${licenseUrl}"
|
||||
cat product.json.bak | jq "${product_json_changes}" > product.json
|
||||
product_json_changes="${checksumFailMoreInfoUrl} | ${tipsAndTricksUrl} | ${twitterUrl} | ${requestFeatureUrl} | ${documentationUrl} | ${introductoryVideosUrl} | ${updateUrl} | ${releaseNotesUrl} | ${keyboardShortcutsUrlMac} | ${keyboardShortcutsUrlLinux} | ${keyboardShortcutsUrlWin} | ${quality} | ${extensionsGallery} | ${linkProtectionTrustedDomains} | ${nameShort} | ${nameLong} | ${linuxIconName} | ${applicationName} | ${win32MutexName} | ${win32DirName} | ${win32NameVersion} | ${win32RegValueName} | ${win32AppUserModelId} | ${win32ShellNameShort} | ${win32x64UserAppId} | ${urlProtocol} | ${serverApplicationName} | ${serverDataFolderName} | ${reportIssueUrl} | ${licenseUrl}"
|
||||
cat product.json.bak | jq "${product_json_changes}" > product.json.tmp
|
||||
|
||||
jq -s '.[0] * .[1]' product.json.tmp ../product.json > product.json
|
||||
rm -f product.json.tmp
|
||||
|
||||
cat product.json
|
||||
|
||||
../undo_telemetry.sh
|
||||
|
||||
if [[ "$OS_NAME" == "linux" ]]; then
|
||||
if [[ "${OS_NAME}" == "linux" ]]; then
|
||||
# microsoft adds their apt repo to sources
|
||||
# unless the app name is code-oss
|
||||
# as we are renaming the application to vscodium
|
||||
|
||||
419
product.json
Normal file
@@ -0,0 +1,419 @@
|
||||
{
|
||||
"extensionAllowedBadgeProviders": [
|
||||
"api.bintray.com",
|
||||
"api.travis-ci.com",
|
||||
"api.travis-ci.org",
|
||||
"app.fossa.io",
|
||||
"badge.buildkite.com",
|
||||
"badge.fury.io",
|
||||
"badge.waffle.io",
|
||||
"badgen.net",
|
||||
"badges.frapsoft.com",
|
||||
"badges.gitter.im",
|
||||
"badges.greenkeeper.io",
|
||||
"cdn.travis-ci.com",
|
||||
"cdn.travis-ci.org",
|
||||
"ci.appveyor.com",
|
||||
"circleci.com",
|
||||
"cla.opensource.microsoft.com",
|
||||
"codacy.com",
|
||||
"codeclimate.com",
|
||||
"codecov.io",
|
||||
"coveralls.io",
|
||||
"david-dm.org",
|
||||
"deepscan.io",
|
||||
"dev.azure.com",
|
||||
"docs.rs",
|
||||
"flat.badgen.net",
|
||||
"gemnasium.com",
|
||||
"githost.io",
|
||||
"gitlab.com",
|
||||
"godoc.org",
|
||||
"goreportcard.com",
|
||||
"img.shields.io",
|
||||
"isitmaintained.com",
|
||||
"marketplace.visualstudio.com",
|
||||
"nodesecurity.io",
|
||||
"opencollective.com",
|
||||
"snyk.io",
|
||||
"travis-ci.com",
|
||||
"travis-ci.org",
|
||||
"visualstudio.com",
|
||||
"vsmarketplacebadge.apphb.com",
|
||||
"www.bithound.io",
|
||||
"www.versioneye.com"
|
||||
],
|
||||
"extensionAllowedBadgeProvidersRegex": [
|
||||
"^https:\\/\\/github\\.com\\/[^/]+\\/[^/]+\\/(actions\\/)?workflows\\/.*badge\\.svg"
|
||||
],
|
||||
"extensionEnabledApiProposals": {
|
||||
"ms-vscode.vscode-selfhost-test-provider": [
|
||||
"testObserver"
|
||||
],
|
||||
"VisualStudioExptTeam.vscodeintellicode-completions": [
|
||||
"inlineCompletionsNew",
|
||||
"inlineCompletionsAdditions"
|
||||
],
|
||||
"ms-vsliveshare.vsliveshare": [
|
||||
"contribMenuBarHome",
|
||||
"diffCommand",
|
||||
"documentFiltersExclusive",
|
||||
"fileSearchProvider",
|
||||
"findTextInFiles",
|
||||
"notebookCellExecutionState",
|
||||
"notebookContentProvider",
|
||||
"notebookEditor",
|
||||
"notebookEditorEdit",
|
||||
"notebookLiveShare",
|
||||
"notebookWorkspaceEdit",
|
||||
"terminalDimensions",
|
||||
"terminalDataWriteEvent",
|
||||
"textSearchProvider"
|
||||
],
|
||||
"ms-vscode.js-debug": [
|
||||
"portsAttributes",
|
||||
"findTextInFiles",
|
||||
"workspaceTrust",
|
||||
"resolvers"
|
||||
],
|
||||
"ms-toolsai.vscode-ai-remote": [
|
||||
"resolvers",
|
||||
"notebookEditor"
|
||||
],
|
||||
"ms-python.python": [
|
||||
"quickPickSortByLabel",
|
||||
"testObserver"
|
||||
],
|
||||
"ms-dotnettools.dotnet-interactive-vscode": [
|
||||
"notebookCellExecutionState",
|
||||
"notebookControllerKind",
|
||||
"notebookDebugOptions",
|
||||
"notebookEditor",
|
||||
"notebookLiveShare",
|
||||
"notebookMessaging",
|
||||
"notebookMime",
|
||||
"notebookWorkspaceEdit"
|
||||
],
|
||||
"GitHub.codespaces": [
|
||||
"contribEditSessions",
|
||||
"contribMenuBarHome",
|
||||
"contribRemoteHelp",
|
||||
"contribViewsRemote",
|
||||
"notebookEditor",
|
||||
"resolvers",
|
||||
"terminalDataWriteEvent",
|
||||
"treeViewReveal"
|
||||
],
|
||||
"ms-vscode.azure-repos": [
|
||||
"extensionRuntime",
|
||||
"fileSearchProvider",
|
||||
"textSearchProvider"
|
||||
],
|
||||
"ms-vscode.remote-repositories": [
|
||||
"contribEditSessions",
|
||||
"contribRemoteHelp",
|
||||
"contribMenuBarHome",
|
||||
"contribViewsRemote",
|
||||
"contribViewsWelcome",
|
||||
"documentFiltersExclusive",
|
||||
"extensionRuntime",
|
||||
"fileSearchProvider",
|
||||
"quickPickSortByLabel",
|
||||
"workspaceTrust",
|
||||
"scmSelectedProvider",
|
||||
"scmValidation",
|
||||
"textSearchProvider",
|
||||
"timeline"
|
||||
],
|
||||
"ms-vscode-remote.remote-wsl": [
|
||||
"resolvers",
|
||||
"contribViewsRemote",
|
||||
"telemetry"
|
||||
],
|
||||
"ms-vscode-remote.remote-ssh": [
|
||||
"resolvers",
|
||||
"terminalDataWriteEvent",
|
||||
"contribViewsRemote",
|
||||
"telemetry"
|
||||
],
|
||||
"ms-vscode.remote-server": [
|
||||
"resolvers",
|
||||
"contribViewsRemote"
|
||||
],
|
||||
"ms-vscode-remote.remote-containers": [
|
||||
"resolvers",
|
||||
"workspaceTrust",
|
||||
"terminalDimensions",
|
||||
"contribViewsRemote"
|
||||
],
|
||||
"ms-vscode.js-debug-nightly": [
|
||||
"portsAttributes",
|
||||
"findTextInFiles",
|
||||
"workspaceTrust",
|
||||
"resolvers"
|
||||
],
|
||||
"ms-vscode.lsif-browser": [
|
||||
"documentFiltersExclusive"
|
||||
],
|
||||
"GitHub.vscode-pull-request-github": [
|
||||
"tokenInformation",
|
||||
"commentsResolvedState",
|
||||
"badges",
|
||||
"contribViewSize"
|
||||
],
|
||||
"GitHub.copilot": [
|
||||
"inlineCompletionsNew",
|
||||
"inlineCompletionsAdditions"
|
||||
],
|
||||
"GitHub.copilot-nightly": [
|
||||
"inlineCompletionsNew",
|
||||
"inlineCompletionsAdditions"
|
||||
],
|
||||
"GitHub.remotehub": [
|
||||
"contribRemoteHelp",
|
||||
"contribMenuBarHome",
|
||||
"contribViewsRemote",
|
||||
"contribViewsWelcome",
|
||||
"documentFiltersExclusive",
|
||||
"extensionRuntime",
|
||||
"fileSearchProvider",
|
||||
"quickPickSortByLabel",
|
||||
"workspaceTrust",
|
||||
"scmSelectedProvider",
|
||||
"scmValidation",
|
||||
"textSearchProvider",
|
||||
"timeline"
|
||||
],
|
||||
"GitHub.remotehub-insiders": [
|
||||
"contribRemoteHelp",
|
||||
"contribMenuBarHome",
|
||||
"contribViewsRemote",
|
||||
"contribViewsWelcome",
|
||||
"documentFiltersExclusive",
|
||||
"extensionRuntime",
|
||||
"fileSearchProvider",
|
||||
"quickPickSortByLabel",
|
||||
"workspaceTrust",
|
||||
"scmSelectedProvider",
|
||||
"scmValidation",
|
||||
"textSearchProvider",
|
||||
"timeline"
|
||||
],
|
||||
"ms-python.gather": [
|
||||
"notebookCellExecutionState"
|
||||
],
|
||||
"ms-python.vscode-pylance": [
|
||||
"notebookEditor",
|
||||
"notebookCellExecutionState"
|
||||
],
|
||||
"ms-toolsai.jupyter": [
|
||||
"notebookControllerKind",
|
||||
"notebookDebugOptions",
|
||||
"notebookDeprecated",
|
||||
"notebookWorkspaceEdit",
|
||||
"notebookMessaging",
|
||||
"notebookMime",
|
||||
"notebookCellExecutionState",
|
||||
"portsAttributes",
|
||||
"quickPickSortByLabel",
|
||||
"notebookKernelSource",
|
||||
"interactiveWindow"
|
||||
],
|
||||
"ms-toolsai.vscode-jupyter-powertoys": [
|
||||
"notebookWorkspaceEdit"
|
||||
],
|
||||
"dbaeumer.vscode-eslint": [
|
||||
"notebookCellExecutionState"
|
||||
],
|
||||
"ms-vscode.azure-sphere-tools-ui": [
|
||||
"resolvers"
|
||||
],
|
||||
"ms-azuretools.vscode-azureappservice": [
|
||||
"terminalDataWriteEvent"
|
||||
],
|
||||
"ms-vscode.anycode": [
|
||||
"extensionsAny"
|
||||
],
|
||||
"ms-vscode.cpptools": [
|
||||
"terminalDataWriteEvent"
|
||||
]
|
||||
},
|
||||
"extensionKind": {
|
||||
"Shan.code-settings-sync": [
|
||||
"ui"
|
||||
],
|
||||
"shalldie.background": [
|
||||
"ui"
|
||||
],
|
||||
"techer.open-in-browser": [
|
||||
"ui"
|
||||
],
|
||||
"CoenraadS.bracket-pair-colorizer-2": [
|
||||
"ui"
|
||||
],
|
||||
"CoenraadS.bracket-pair-colorizer": [
|
||||
"ui",
|
||||
"workspace"
|
||||
],
|
||||
"hiro-sun.vscode-emacs": [
|
||||
"ui",
|
||||
"workspace"
|
||||
],
|
||||
"hnw.vscode-auto-open-markdown-preview": [
|
||||
"ui",
|
||||
"workspace"
|
||||
],
|
||||
"wayou.vscode-todo-highlight": [
|
||||
"ui",
|
||||
"workspace"
|
||||
],
|
||||
"aaron-bond.better-comments": [
|
||||
"ui",
|
||||
"workspace"
|
||||
],
|
||||
"vscodevim.vim": [
|
||||
"ui"
|
||||
],
|
||||
"ollyhayes.colmak-vim": [
|
||||
"ui"
|
||||
]
|
||||
},
|
||||
"extensionPointExtensionKind": {
|
||||
"typescriptServerPlugins": [
|
||||
"workspace"
|
||||
]
|
||||
},
|
||||
"extensionSyncedKeys": {
|
||||
"ritwickdey.liveserver": [
|
||||
"liveServer.setup.version"
|
||||
]
|
||||
},
|
||||
"extensionVirtualWorkspacesSupport": {
|
||||
"esbenp.prettier-vscode": {
|
||||
"default": false
|
||||
},
|
||||
"msjsdiag.debugger-for-chrome": {
|
||||
"default": false
|
||||
},
|
||||
"redhat.java": {
|
||||
"default": false
|
||||
},
|
||||
"HookyQR.beautify": {
|
||||
"default": false
|
||||
},
|
||||
"ritwickdey.LiveServer": {
|
||||
"default": false
|
||||
},
|
||||
"VisualStudioExptTeam.vscodeintellicode": {
|
||||
"default": false
|
||||
},
|
||||
"octref.vetur": {
|
||||
"default": false
|
||||
},
|
||||
"formulahendry.code-runner": {
|
||||
"default": false
|
||||
},
|
||||
"xdebug.php-debug": {
|
||||
"default": false
|
||||
},
|
||||
"ms-mssql.mssql": {
|
||||
"default": false
|
||||
},
|
||||
"christian-kohler.path-intellisense": {
|
||||
"default": false
|
||||
},
|
||||
"eg2.tslint": {
|
||||
"default": false
|
||||
},
|
||||
"eg2.vscode-npm-script": {
|
||||
"default": false
|
||||
},
|
||||
"donjayamanne.githistory": {
|
||||
"default": false
|
||||
},
|
||||
"Zignd.html-css-class-completion": {
|
||||
"default": false
|
||||
},
|
||||
"christian-kohler.npm-intellisense": {
|
||||
"default": false
|
||||
},
|
||||
"EditorConfig.EditorConfig": {
|
||||
"default": false
|
||||
},
|
||||
"austin.code-gnu-global": {
|
||||
"default": false
|
||||
},
|
||||
"johnpapa.Angular2": {
|
||||
"default": false
|
||||
},
|
||||
"ms-vscode.vscode-typescript-tslint-plugin": {
|
||||
"default": false
|
||||
},
|
||||
"DotJoshJohnson.xml": {
|
||||
"default": false
|
||||
},
|
||||
"techer.open-in-browser": {
|
||||
"default": false
|
||||
},
|
||||
"tht13.python": {
|
||||
"default": false
|
||||
},
|
||||
"bmewburn.vscode-intelephense-client": {
|
||||
"default": false
|
||||
},
|
||||
"Angular.ng-template": {
|
||||
"default": false
|
||||
},
|
||||
"xdebug.php-pack": {
|
||||
"default": false
|
||||
},
|
||||
"dbaeumer.jshint": {
|
||||
"default": false
|
||||
},
|
||||
"yzhang.markdown-all-in-one": {
|
||||
"default": false
|
||||
},
|
||||
"Dart-Code.flutter": {
|
||||
"default": false
|
||||
},
|
||||
"streetsidesoftware.code-spell-checker": {
|
||||
"default": false
|
||||
},
|
||||
"rebornix.Ruby": {
|
||||
"default": false
|
||||
},
|
||||
"ms-vscode.sublime-keybindings": {
|
||||
"default": false
|
||||
},
|
||||
"mitaki28.vscode-clang": {
|
||||
"default": false
|
||||
},
|
||||
"steoates.autoimport": {
|
||||
"default": false
|
||||
},
|
||||
"donjayamanne.python-extension-pack": {
|
||||
"default": false
|
||||
},
|
||||
"shd101wyy.markdown-preview-enhanced": {
|
||||
"default": false
|
||||
},
|
||||
"mikestead.dotenv": {
|
||||
"default": false
|
||||
},
|
||||
"pranaygp.vscode-css-peek": {
|
||||
"default": false
|
||||
},
|
||||
"ikappas.phpcs": {
|
||||
"default": false
|
||||
},
|
||||
"platformio.platformio-ide": {
|
||||
"default": false
|
||||
},
|
||||
"jchannon.csharpextensions": {
|
||||
"default": false
|
||||
},
|
||||
"gruntfuggly.todo-tree": {
|
||||
"default": false
|
||||
}
|
||||
}
|
||||
}
|
||||
70
release.sh
Executable file
@@ -0,0 +1,70 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
if [[ -z "${GITHUB_TOKEN}" ]]; then
|
||||
echo "Will not release because no GITHUB_TOKEN defined"
|
||||
exit
|
||||
fi
|
||||
|
||||
npm install -g github-release-cli
|
||||
|
||||
if [[ $( gh release view "${MS_TAG}" 2>&1 ) =~ "release not found" ]]; then
|
||||
echo "Creating release '${MS_TAG}'"
|
||||
gh release create "${MS_TAG}"
|
||||
fi
|
||||
|
||||
cd artifacts
|
||||
|
||||
set +e
|
||||
|
||||
OWNER="${GITHUB_REPOSITORY_OWNER:-"VSCodium"}"
|
||||
REPO_NAME="${GITHUB_REPOSITORY:(${#OWNER}+1)}"
|
||||
REPOSITORY="${REPO_NAME:-"vscodium"}"
|
||||
|
||||
# git workaround
|
||||
git config --global --add safe.directory /__w/vscodium/vscodium
|
||||
|
||||
|
||||
for FILE in *
|
||||
do
|
||||
if [[ -f "${FILE}" ]] && [[ "${FILE}" != *.sha1 ]] && [[ "${FILE}" != *.sha256 ]]; then
|
||||
echo "::group::Uploading '${FILE}' at $( date "+%T" )"
|
||||
gh release upload "${MS_TAG}" "${FILE}" "${FILE}.sha1" "${FILE}.sha256"
|
||||
|
||||
EXIT_STATUS=$?
|
||||
echo "exit: ${EXIT_STATUS}"
|
||||
|
||||
if (( "${EXIT_STATUS}" )); then
|
||||
for (( i=0; i<10; i++ ))
|
||||
do
|
||||
github-release delete --owner "${OWNER}" --repo "${REPOSITORY}" --tag "${MS_TAG}" "${FILE}" "${FILE}.sha1" "${FILE}.sha256"
|
||||
|
||||
sleep $(( 15 * (i + 1)))
|
||||
|
||||
echo "RE-Uploading '${FILE}' at $( date "+%T" )"
|
||||
gh release upload "${MS_TAG}" "${FILE}" "${FILE}.sha1" "${FILE}.sha256"
|
||||
|
||||
EXIT_STATUS=$?
|
||||
echo "exit: ${EXIT_STATUS}"
|
||||
|
||||
if ! (( "${EXIT_STATUS}" )); then
|
||||
break
|
||||
fi
|
||||
done
|
||||
echo "exit: ${EXIT_STATUS}"
|
||||
|
||||
if (( "${EXIT_STATUS}" )); then
|
||||
echo "'${FILE}' hasn't been uploaded!"
|
||||
|
||||
github-release delete --owner "${OWNER}" --repo "${REPOSITORY}" --tag "${MS_TAG}" "${FILE}" "${FILE}.sha1" "${FILE}.sha256"
|
||||
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "::endgroup::"
|
||||
fi
|
||||
done
|
||||
|
||||
cd ..
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="1024px" height="1024px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<svg width="40" height="40" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!-- Generator: Sketch 55 (78076) - https://sketchapp.com -->
|
||||
<title>codium_grey_dark_letterpress</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
|
||||
|
Before Width: | Height: | Size: 7.5 KiB After Width: | Height: | Size: 7.5 KiB |
|
Before Width: | Height: | Size: 7.5 KiB After Width: | Height: | Size: 7.5 KiB |
|
After Width: | Height: | Size: 7.5 KiB |
|
Before Width: | Height: | Size: 7.5 KiB After Width: | Height: | Size: 7.5 KiB |
41
stores/snapcraft/check_version.sh
Executable file
@@ -0,0 +1,41 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
if [[ "${GITHUB_EVENT_NAME}" == "pull_request" ]]; then
|
||||
echo "It's a PR"
|
||||
|
||||
export SHOULD_DEPLOY="no"
|
||||
elif [[ "${GITHUB_EVENT_NAME}" == "push" ]]; then
|
||||
echo "It's a Push"
|
||||
|
||||
export SHOULD_DEPLOY="no"
|
||||
else
|
||||
echo "It's a cron"
|
||||
|
||||
sudo snap install --channel stable --classic snapcraft
|
||||
|
||||
echo "Architecture: ${ARCHITECTURE}"
|
||||
|
||||
SNAP_VERSION=$(snapcraft list-revisions codium | grep -F "stable*" | grep "${ARCHITECTURE}" | tr -s ' ' | cut -d ' ' -f 4)
|
||||
echo "Snap version: ${SNAP_VERSION}"
|
||||
|
||||
wget --quiet https://api.github.com/repos/VSCodium/vscodium/releases -O gh_latest.json
|
||||
GH_VERSION=$(jq -r 'sort_by(.tag_name)|last.tag_name' gh_latest.json)
|
||||
echo "GH version: ${GH_VERSION}"
|
||||
|
||||
rm -f gh_latest.json
|
||||
|
||||
if [[ "${SNAP_VERSION}" == "${GH_VERSION}" ]]; then
|
||||
export SHOULD_DEPLOY="no"
|
||||
else
|
||||
export SHOULD_DEPLOY="yes"
|
||||
|
||||
snap version
|
||||
snap info codium
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ "${GITHUB_ENV}" ]]; then
|
||||
echo "SHOULD_DEPLOY=${SHOULD_DEPLOY}" >> "${GITHUB_ENV}"
|
||||
fi
|
||||
34
stores/snapcraft/snap/local/bin/electron-launch
Executable file
@@ -0,0 +1,34 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# On Fedora $SNAP is under /var and there is some magic to map it to /snap.
|
||||
# We need to handle that case and reset $SNAP
|
||||
SNAP=$(echo "$SNAP" | sed -e "s|/var/lib/snapd||g")
|
||||
|
||||
if [ "$SNAP_ARCH" == "amd64" ]; then
|
||||
ARCH="x86_64-linux-gnu"
|
||||
elif [ "$SNAP_ARCH" == "armhf" ]; then
|
||||
ARCH="arm-linux-gnueabihf"
|
||||
elif [ "$SNAP_ARCH" == "arm64" ]; then
|
||||
ARCH="aarch64-linux-gnu"
|
||||
else
|
||||
ARCH="$SNAP_ARCH-linux-gnu"
|
||||
fi
|
||||
|
||||
GDK_CACHE_DIR="$SNAP_USER_COMMON/.cache"
|
||||
if [[ -d "$SNAP_USER_DATA/.cache" && ! -e "$GDK_CACHE_DIR" ]]; then
|
||||
# the .cache directory used to be stored under $SNAP_USER_DATA, migrate it
|
||||
mv "$SNAP_USER_DATA/.cache" "$SNAP_USER_COMMON/"
|
||||
fi
|
||||
[ ! -d "$GDK_CACHE_DIR" ] && mkdir -p "$GDK_CACHE_DIR"
|
||||
|
||||
# Gdk-pixbuf loaders
|
||||
export GDK_PIXBUF_MODULE_FILE="$GDK_CACHE_DIR/gdk-pixbuf-loaders.cache"
|
||||
export GDK_PIXBUF_MODULEDIR="$SNAP/usr/lib/$ARCH/gdk-pixbuf-2.0/2.10.0/loaders"
|
||||
if [ -f "$SNAP/usr/lib/$ARCH/gdk-pixbuf-2.0/gdk-pixbuf-query-loaders" ]; then
|
||||
"$SNAP/usr/lib/$ARCH/gdk-pixbuf-2.0/gdk-pixbuf-query-loaders" > "$GDK_PIXBUF_MODULE_FILE"
|
||||
fi
|
||||
|
||||
# Create $XDG_RUNTIME_DIR if not exists (to be removed when https://pad.lv/1656340 is fixed)
|
||||
[ -n "$XDG_RUNTIME_DIR" ] && mkdir -p "$XDG_RUNTIME_DIR" -m 700
|
||||
|
||||
exec "$@"
|
||||
91
stores/snapcraft/snap/snapcraft.yaml
Normal file
@@ -0,0 +1,91 @@
|
||||
name: codium
|
||||
adopt-info: codium
|
||||
summary: Code editing. Redefined.
|
||||
description: |
|
||||
Binary releases of Code without branding/telemetry/licensing
|
||||
|
||||
base: core18
|
||||
grade: stable
|
||||
confinement: classic
|
||||
compression: lzo
|
||||
# architectures:
|
||||
# - build-on: amd64
|
||||
# - build-on: arm64
|
||||
|
||||
parts:
|
||||
codium:
|
||||
plugin: nil
|
||||
override-build: |
|
||||
set -eu
|
||||
ARCHITECTURE=$(dpkg --print-architecture)
|
||||
# Get GitHub releases
|
||||
wget --quiet https://api.github.com/repos/VSCodium/vscodium/releases -O latest.json
|
||||
VERSION=$(jq -r 'sort_by(.tag_name)|last.tag_name' latest.json)
|
||||
DEB_URL=$(jq -r 'map(select(.tag_name == "'"$VERSION"'"))|first.assets[].browser_download_url|select(endswith("'"_$ARCHITECTURE.deb"'"))' latest.json)
|
||||
DEB=$(basename "${DEB_URL}")
|
||||
# Downloading .deb"
|
||||
wget "${DEB_URL}" -O "${SNAPCRAFT_PART_INSTALL}/${DEB}"
|
||||
# Unpacking .deb"
|
||||
dpkg -x "${SNAPCRAFT_PART_INSTALL}/${DEB}" ${SNAPCRAFT_PART_INSTALL}
|
||||
rm -f latest.json
|
||||
rm -f "${SNAPCRAFT_PART_INSTALL}/${DEB}"
|
||||
# Set version
|
||||
snapcraftctl set-version "$VERSION"
|
||||
# Correct path to icon.
|
||||
sed -i 's|Icon=vscodium|Icon=${SNAP}/usr/share/pixmaps/vscodium.png|g' ${SNAPCRAFT_PART_INSTALL}/usr/share/applications/codium.desktop
|
||||
sed -i 's|Exec=/usr/share/codium/codium|Exec=codium|g' ${SNAPCRAFT_PART_INSTALL}/usr/share/applications/codium.desktop
|
||||
sed -i 's|Icon=vscodium|Icon=/usr/share/pixmaps/vscodium.png|g' ${SNAPCRAFT_PART_INSTALL}/usr/share/applications/codium-url-handler.desktop
|
||||
build-packages:
|
||||
- wget
|
||||
- jq
|
||||
stage-packages:
|
||||
- fcitx-frontend-gtk3
|
||||
- gvfs-libs
|
||||
- libasound2
|
||||
- libgconf-2-4
|
||||
- libglib2.0-bin
|
||||
- libgnome-keyring0
|
||||
- libgtk-3-0
|
||||
- libnotify4
|
||||
- libnspr4
|
||||
- libnss3
|
||||
- libpcre3
|
||||
- libpulse0
|
||||
- libsecret-1-0
|
||||
- libxshmfence1
|
||||
- libxss1
|
||||
- libxtst6
|
||||
- zlib1g
|
||||
- libx11-xcb1
|
||||
- libxkbfile1
|
||||
- libdrm2
|
||||
- libgbm1
|
||||
- libxcb-dri3-0
|
||||
prime:
|
||||
- -usr/share/doc
|
||||
- -usr/share/fonts
|
||||
- -usr/share/icons
|
||||
- -usr/share/lintian
|
||||
- -usr/share/man
|
||||
- -usr/share/codium/chrome-sandbox
|
||||
|
||||
electron-launch:
|
||||
after:
|
||||
- codium
|
||||
plugin: dump
|
||||
source: snap/local
|
||||
|
||||
apps:
|
||||
codium:
|
||||
command: electron-launch $SNAP/usr/share/codium/bin/codium --no-sandbox
|
||||
desktop: usr/share/applications/codium.desktop
|
||||
environment:
|
||||
DISABLE_WAYLAND: 1
|
||||
GSETTINGS_SCHEMA_DIR: $SNAP/usr/share/glib-2.0/schemas
|
||||
|
||||
url-handler:
|
||||
command: electron-launch $SNAP/usr/share/codium/bin/codium --open-url --no-sandbox
|
||||
desktop: usr/share/applications/codium-url-handler.desktop
|
||||
environment:
|
||||
DISABLE_WAYLAND: 1
|
||||
GSETTINGS_SCHEMA_DIR: $SNAP/usr/share/glib-2.0/schemas
|
||||
28
sum.sh
@@ -1,28 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
npm install -g checksum
|
||||
|
||||
sum_file () {
|
||||
if [[ -f "$1" ]]; then
|
||||
checksum -a sha256 "$1" > "$1".sha256
|
||||
checksum "$1" > "$1".sha1
|
||||
fi
|
||||
}
|
||||
|
||||
if [[ "$SHOULD_BUILD" == "yes" ]]; then
|
||||
if [[ "$OS_NAME" == "osx" ]]; then
|
||||
sum_file VSCodium-darwin-*.zip
|
||||
sum_file VSCodium*.dmg
|
||||
elif [[ "$OS_NAME" == "windows" ]]; then
|
||||
sum_file VSCodiumSetup-*.exe
|
||||
sum_file VSCodiumUserSetup-*.exe
|
||||
sum_file VSCodium-win32-*.zip
|
||||
sum_file "VSCodium-${VSCODE_ARCH}-${MS_TAG}.msi"
|
||||
sum_file "VSCodium-${VSCODE_ARCH}-updates-disabled-${MS_TAG}.msi"
|
||||
else # linux
|
||||
sum_file VSCodium-*.AppImage
|
||||
sum_file VSCodium-linux*.tar.gz
|
||||
sum_file *.deb
|
||||
sum_file *.rpm
|
||||
fi
|
||||
fi
|
||||
@@ -1,17 +1,44 @@
|
||||
# dc.services.visualstudio.com
|
||||
# vortex.data.microsoft.com
|
||||
TELEMETRY_URLS="(dc\.services\.visualstudio\.com)|(vortex\.data\.microsoft\.com)"
|
||||
REPLACEMENT="s/$TELEMETRY_URLS/0\.0\.0\.0/g"
|
||||
#!/bin/bash
|
||||
|
||||
#include common functions
|
||||
set -ex
|
||||
|
||||
# list of urls to match:
|
||||
# - mobile.events.data.microsoft.com
|
||||
# - vortex.data.microsoft.com
|
||||
|
||||
SEARCH="\.data\.microsoft\.com"
|
||||
REPLACEMENT="s|//[^/]+\.data\.microsoft\.com|//0\.0\.0\.0|g"
|
||||
|
||||
# include common functions
|
||||
. ../utils.sh
|
||||
|
||||
if [[ "$OS_NAME" == "osx" ]]; then
|
||||
if is_gnu_sed; then
|
||||
grep -rl --exclude-dir=.git -E $TELEMETRY_URLS . | xargs sed -i -E $REPLACEMENT
|
||||
else
|
||||
grep -rl --exclude-dir=.git -E $TELEMETRY_URLS . | xargs sed -i '' -E $REPLACEMENT
|
||||
fi
|
||||
if is_gnu_sed; then
|
||||
replace_with_debug () {
|
||||
echo "found: ${2} (`date`)"
|
||||
sed -i -E "${1}" "${2}"
|
||||
}
|
||||
else
|
||||
grep -rl --exclude-dir=.git -E $TELEMETRY_URLS . | xargs sed -i -E $REPLACEMENT
|
||||
replace_with_debug () {
|
||||
echo "found: ${2} (`date`)"
|
||||
sed -i '' -E "${1}" "${2}"
|
||||
}
|
||||
fi
|
||||
export -f replace_with_debug
|
||||
|
||||
d1=`date +%s`
|
||||
|
||||
if [[ "${OS_NAME}" == "linux" ]]; then
|
||||
if [[ ${VSCODE_ARCH} == "x64" ]]; then
|
||||
rg --no-ignore -l "${SEARCH}" . | xargs -I {} bash -c 'replace_with_debug "${1}" "{}"' _ "${REPLACEMENT}"
|
||||
else
|
||||
grep -rl --exclude-dir=.git -E "${SEARCH}" . | xargs -I {} bash -c 'replace_with_debug "${1}" "{}"' _ "${REPLACEMENT}"
|
||||
fi
|
||||
elif [[ "${OS_NAME}" == "osx" ]]; then
|
||||
./node_modules/@vscode/ripgrep/bin/rg --no-ignore -l "${SEARCH}" . | xargs -I {} bash -c 'replace_with_debug "${1}" "{}"' _ "${REPLACEMENT}"
|
||||
else
|
||||
./node_modules/@vscode/ripgrep/bin/rg --no-ignore --path-separator=// -l "${SEARCH}" . | xargs -I {} bash -c 'replace_with_debug "${1}" "{}"' _ "${REPLACEMENT}"
|
||||
fi
|
||||
|
||||
d2=`date +%s`
|
||||
|
||||
echo "undo_telemetry: $( echo $((${d2} - ${d1})) )s"
|
||||
|
||||
@@ -1,43 +1,49 @@
|
||||
DEFAULT_TRUE="'default': true"
|
||||
DEFAULT_FALSE="'default': false"
|
||||
TELEMETRY_ENABLE="'telemetry.enableTelemetry':"
|
||||
DEFAULT_ON="'default': TelemetryConfiguration.ON"
|
||||
DEFAULT_OFF="'default': TelemetryConfiguration.OFF"
|
||||
TELEMETRY_CRASH_REPORTER="'telemetry.enableCrashReporter':"
|
||||
TELEMETRY_CONFIGURATION=" TelemetryConfiguration.ON"
|
||||
|
||||
#include common functions
|
||||
. ../utils.sh
|
||||
|
||||
update_setting () {
|
||||
local FILENAME="$2"
|
||||
local FILENAME="${2}"
|
||||
# check that the file exists
|
||||
if [ ! -f $FILENAME ]; then
|
||||
if [ ! -f "${FILENAME}" ]; then
|
||||
echo "File to update setting in does not exist ${FILENAME}"
|
||||
return
|
||||
fi
|
||||
|
||||
# go through lines of file, looking for block that contains setting
|
||||
local SETTING="$1"
|
||||
local SETTING="${1}"
|
||||
local LINE_NUM=0
|
||||
while read -r line; do
|
||||
local LINE_NUM=$(( $LINE_NUM + 1 ))
|
||||
if [[ $line == *"$SETTING"* ]]; then
|
||||
if [[ "${line}" == *"${SETTING}"* ]]; then
|
||||
local IN_SETTING=1
|
||||
fi
|
||||
if [[ $line == *"$DEFAULT_TRUE"* && "$IN_SETTING" == "1" ]]; then
|
||||
if [[ ("${line}" == *"${DEFAULT_TRUE}"* || "${line}" == *"${DEFAULT_ON}"*) && "${IN_SETTING}" == "1" ]]; then
|
||||
local FOUND=1
|
||||
break
|
||||
fi
|
||||
done < $FILENAME
|
||||
done < "${FILENAME}"
|
||||
|
||||
if [[ "$FOUND" != "1" ]]; then
|
||||
echo "$DEFAULT_TRUE not found for setting $SETTING in file $FILENAME"
|
||||
if [[ "${FOUND}" != "1" ]]; then
|
||||
echo "${DEFAULT_TRUE} not found for setting ${SETTING} in file ${FILENAME}"
|
||||
return
|
||||
fi
|
||||
|
||||
# construct line-aware replacement string
|
||||
local DEFAULT_TRUE_TO_FALSE="${LINE_NUM}s/${DEFAULT_TRUE}/${DEFAULT_FALSE}/"
|
||||
if [[ "${line}" == *"${DEFAULT_TRUE}"* ]]; then
|
||||
local DEFAULT_TRUE_TO_FALSE="${LINE_NUM}s/${DEFAULT_TRUE}/${DEFAULT_FALSE}/"
|
||||
else
|
||||
local DEFAULT_TRUE_TO_FALSE="${LINE_NUM}s/${DEFAULT_ON}/${DEFAULT_OFF}/"
|
||||
fi
|
||||
|
||||
replace "$DEFAULT_TRUE_TO_FALSE" $FILENAME
|
||||
replace "${DEFAULT_TRUE_TO_FALSE}" "${FILENAME}"
|
||||
}
|
||||
|
||||
update_setting "$TELEMETRY_ENABLE" src/vs/platform/telemetry/common/telemetryService.ts
|
||||
update_setting "$TELEMETRY_CRASH_REPORTER" src/vs/workbench/electron-sandbox/desktop.contribution.ts
|
||||
update_setting "${TELEMETRY_CRASH_REPORTER}" src/vs/workbench/electron-sandbox/desktop.contribution.ts
|
||||
update_setting "${TELEMETRY_CONFIGURATION}" src/vs/platform/telemetry/common/telemetryService.ts
|
||||
|
||||
@@ -1,10 +1,17 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [[ "$SHOULD_BUILD" != "yes" ]]; then
|
||||
set -e
|
||||
|
||||
if [[ "${SHOULD_BUILD}" != "yes" ]]; then
|
||||
echo "Will not update version JSON because we did not build"
|
||||
exit
|
||||
fi
|
||||
|
||||
if [[ -z "${GITHUB_TOKEN}" ]]; then
|
||||
echo "Will not update version JSON because no GITHUB_TOKEN defined"
|
||||
exit
|
||||
fi
|
||||
|
||||
# {
|
||||
# "url": "https://az764295.vo.msecnd.net/stable/51b0b28134d51361cf996d2f0a1c698247aeabd8/VSCode-darwin-stable.zip",
|
||||
# "name": "1.33.1",
|
||||
@@ -24,37 +31,40 @@ fi
|
||||
# `timestamp` is $(node -e 'console.log(Date.now())')
|
||||
# `sha256hash` in <filename>.sha256
|
||||
|
||||
URL_BASE=https://github.com/VSCodium/vscodium/releases/download/${MS_TAG}
|
||||
URL_BASE="https://github.com/VSCodium/vscodium/releases/download/${MS_TAG}"
|
||||
|
||||
# to make testing on forks easier
|
||||
VERSIONS_REPO="${GITHUB_USERNAME}/versions"
|
||||
echo "Versions repo:" $VERSIONS_REPO
|
||||
echo "Versions repo: ${VERSIONS_REPO}"
|
||||
|
||||
# generateJson <assetName>
|
||||
# e.g. generateJson VSCodium-darwin-1.33.0.zip
|
||||
generateJson() {
|
||||
local assetName=$1
|
||||
JSON_DATA="{}"
|
||||
|
||||
# generate parts
|
||||
local url=${URL_BASE}/${assetName}
|
||||
local name=$MS_TAG
|
||||
local version=$MS_COMMIT
|
||||
local productVersion=$MS_TAG
|
||||
local url="${URL_BASE}/${ASSET_NAME}"
|
||||
local name="${MS_TAG}"
|
||||
local version="${MS_COMMIT}"
|
||||
local productVersion="${MS_TAG}"
|
||||
local timestamp=$(node -e 'console.log(Date.now())')
|
||||
|
||||
local sha1hash=$(cat ${assetName}.sha1 | awk '{ print $1 }')
|
||||
local sha256hash=$(cat ${assetName}.sha256 | awk '{ print $1 }')
|
||||
if [[ ! -f "artifacts/${ASSET_NAME}" ]]; then
|
||||
echo "Downloading artifact '${ASSET_NAME}'"
|
||||
gh release download "${MS_TAG}" --dir "artifacts" --pattern "${ASSET_NAME}*"
|
||||
fi
|
||||
|
||||
local sha1hash=$(cat "artifacts/${ASSET_NAME}.sha1" | awk '{ print $1 }')
|
||||
local sha256hash=$(cat "artifacts/${ASSET_NAME}.sha256" | awk '{ print $1 }')
|
||||
|
||||
# check that nothing is blank (blank indicates something awry with build)
|
||||
for key in url name version productVersion sha1hash timestamp sha256hash; do
|
||||
if [[ "${!key}" == "" ]]; then
|
||||
echo "Missing data for version update; exiting..."
|
||||
if [[ -z "${key}" ]]; then
|
||||
echo "Variable '${key}' is empty; exiting..."
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
# generate json
|
||||
local json=$(jq \
|
||||
JSON_DATA=$(jq \
|
||||
--arg url "${url}" \
|
||||
--arg name "${name}" \
|
||||
--arg version "${version}" \
|
||||
@@ -64,70 +74,62 @@ generateJson() {
|
||||
--arg sha256hash "${sha256hash}" \
|
||||
'. | .url=$url | .name=$name | .version=$version | .productVersion=$productVersion | .hash=$hash | .timestamp=$timestamp | .sha256hash=$sha256hash' \
|
||||
<<<'{}')
|
||||
|
||||
echo "$json"
|
||||
}
|
||||
|
||||
updateLatestVersion() {
|
||||
echo "Generating ${VERSION_PATH}/latest.json"
|
||||
|
||||
generateJson
|
||||
|
||||
cd versions
|
||||
|
||||
local versionPath=$1
|
||||
local json=$2
|
||||
|
||||
# create/update the latest.json file in the correct location
|
||||
mkdir -p $versionPath
|
||||
echo $json > $versionPath/latest.json
|
||||
mkdir -p "${VERSION_PATH}"
|
||||
echo "${JSON_DATA}" > "${VERSION_PATH}/latest.json"
|
||||
|
||||
cd ..
|
||||
}
|
||||
|
||||
# init versions repo for later commiting + pushing the json file to it
|
||||
# thank you https://www.vinaygopinath.me/blog/tech/commit-to-master-branch-on-github-using-travis-ci/
|
||||
git clone https://github.com/${VERSIONS_REPO}.git
|
||||
git clone "https://github.com/${VERSIONS_REPO}.git"
|
||||
cd versions
|
||||
git config user.email "vscodium-ci@not-real.com"
|
||||
git config user.name "VSCodium CI"
|
||||
git remote rm origin
|
||||
git remote add origin https://${GITHUB_USERNAME}:${GITHUB_TOKEN}@github.com/${VERSIONS_REPO}.git > /dev/null 2>&1
|
||||
git remote add origin "https://${GITHUB_USERNAME}:${GITHUB_TOKEN}@github.com/${VERSIONS_REPO}.git" > /dev/null 2>&1
|
||||
cd ..
|
||||
|
||||
if [[ "$OS_NAME" == "osx" ]]; then
|
||||
# zip, sha1, and sha256 files are all at top level dir
|
||||
if [[ "${OS_NAME}" == "osx" ]]; then
|
||||
ASSET_NAME=VSCodium-darwin-${VSCODE_ARCH}-${MS_TAG}.zip
|
||||
VERSION_PATH="darwin/${VSCODE_ARCH}"
|
||||
JSON="$(generateJson ${ASSET_NAME})"
|
||||
updateLatestVersion "$VERSION_PATH" "$JSON"
|
||||
elif [[ "$OS_NAME" == "windows" ]]; then
|
||||
updateLatestVersion
|
||||
elif [[ "${OS_NAME}" == "windows" ]]; then
|
||||
# system installer
|
||||
ASSET_NAME=VSCodiumSetup-${VSCODE_ARCH}-${MS_TAG}.exe
|
||||
VERSION_PATH="win32/${VSCODE_ARCH}/system"
|
||||
JSON="$(generateJson ${ASSET_NAME})"
|
||||
updateLatestVersion "$VERSION_PATH" "$JSON"
|
||||
updateLatestVersion
|
||||
|
||||
# user installer
|
||||
ASSET_NAME=VSCodiumUserSetup-${VSCODE_ARCH}-${MS_TAG}.exe
|
||||
VERSION_PATH="win32/${VSCODE_ARCH}/user"
|
||||
JSON="$(generateJson ${ASSET_NAME})"
|
||||
updateLatestVersion "$VERSION_PATH" "$JSON"
|
||||
updateLatestVersion
|
||||
|
||||
# windows archive
|
||||
ASSET_NAME=VSCodium-win32-${VSCODE_ARCH}-${MS_TAG}.zip
|
||||
VERSION_PATH="win32/${VSCODE_ARCH}/archive"
|
||||
JSON="$(generateJson ${ASSET_NAME})"
|
||||
updateLatestVersion "$VERSION_PATH" "$JSON"
|
||||
|
||||
updateLatestVersion
|
||||
|
||||
if [[ "${VSCODE_ARCH}" == "ia32" || "${VSCODE_ARCH}" == "x64" ]]; then
|
||||
# msi
|
||||
ASSET_NAME=VSCodium-${VSCODE_ARCH}-${MS_TAG}.msi
|
||||
VERSION_PATH="win32/${VSCODE_ARCH}/msi"
|
||||
JSON="$(generateJson ${ASSET_NAME})"
|
||||
updateLatestVersion "$VERSION_PATH" "$JSON"
|
||||
|
||||
updateLatestVersion
|
||||
|
||||
# updates-disabled msi
|
||||
ASSET_NAME=VSCodium-${VSCODE_ARCH}-updates-disabled-${MS_TAG}.msi
|
||||
VERSION_PATH="win32/${VSCODE_ARCH}/msi-updates-disabled"
|
||||
JSON="$(generateJson ${ASSET_NAME})"
|
||||
updateLatestVersion "$VERSION_PATH" "$JSON"
|
||||
updateLatestVersion
|
||||
fi
|
||||
else # linux
|
||||
# update service links to tar.gz file
|
||||
@@ -135,19 +137,23 @@ else # linux
|
||||
# as examples
|
||||
ASSET_NAME=VSCodium-linux-${VSCODE_ARCH}-${MS_TAG}.tar.gz
|
||||
VERSION_PATH="linux/${VSCODE_ARCH}"
|
||||
JSON="$(generateJson ${ASSET_NAME})"
|
||||
updateLatestVersion "$VERSION_PATH" "$JSON"
|
||||
updateLatestVersion
|
||||
fi
|
||||
|
||||
cd versions
|
||||
|
||||
git pull origin master # in case another build just pushed
|
||||
git add .
|
||||
dateAndMonth=`date "+%D %T"`
|
||||
git commit -m "CI update: $dateAndMonth (Build $GITHUB_RUN_NUMBER)"
|
||||
if ! git push origin master --quiet; then
|
||||
git pull origin master
|
||||
git push origin master --quiet
|
||||
|
||||
CHANGES=$( git status --porcelain )
|
||||
|
||||
if [[ ! -z "${CHANGES}" ]]; then
|
||||
dateAndMonth=$( date "+%D %T" )
|
||||
git commit -m "CI update: ${dateAndMonth} (Build ${GITHUB_RUN_NUMBER})"
|
||||
if ! git push origin master --quiet; then
|
||||
git pull origin master
|
||||
git push origin master --quiet
|
||||
fi
|
||||
fi
|
||||
|
||||
cd ..
|
||||
|
||||