From 1c0b7741cf2a4ca3f4490a1f85e0b8ccad6222cb Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Fri, 7 Jun 2019 11:41:45 -0600 Subject: [PATCH 01/61] :arrow_up: text-buffer@13.16.2 --- package-lock.json | 16 ++++++++++++---- package.json | 2 +- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0b69889cd..cd79aaa3c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6551,9 +6551,9 @@ } }, "text-buffer": { - "version": "13.16.1", - "resolved": "https://registry.npmjs.org/text-buffer/-/text-buffer-13.16.1.tgz", - "integrity": "sha512-/P3D92KLtyrB+P+cc2W7i8jOEw6/1l72tblKobECCXOxkmJJuEqzyt7Kdw9RySJwQYIh9YRllksQ7IQJOp+XeA==", + "version": "13.16.2", + "resolved": "https://registry.npmjs.org/text-buffer/-/text-buffer-13.16.2.tgz", + "integrity": "sha512-4cTQqOe/rH8WVRiBOYyv8zigrdsKaArOZi0Xba3IjAG+cw2Hu8pJJPdfvGSMnsiJCZeRQvN4Yvsi0P9T8/odwQ==", "requires": { "delegato": "^1.0.0", "diff": "^2.2.1", @@ -6565,7 +6565,7 @@ "mkdirp": "^0.5.1", "pathwatcher": "8.0.2", "serializable": "^1.0.3", - "superstring": "2.3.6", + "superstring": "2.4.0", "underscore-plus": "^1.0.0" }, "dependencies": { @@ -6594,6 +6594,14 @@ "version": "2.14.0", "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==" + }, + "superstring": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/superstring/-/superstring-2.4.0.tgz", + "integrity": "sha512-dg1jpBBvxL2pBpCkTfAABYj0AXcVC05wQ2CHz/AVY786BC9wwzgZmkbjVQ2s/PI9Se9QMRwURJ2UE3MF4EygOg==", + "requires": { + "nan": "^2.10.0" + } } } }, diff --git a/package.json b/package.json index e993c18fc..2e073c7e9 100644 --- a/package.json +++ b/package.json @@ -155,7 +155,7 @@ "symbols-view": "https://www.atom.io/api/packages/symbols-view/versions/0.118.2/tarball", "tabs": "https://www.atom.io/api/packages/tabs/versions/0.110.0/tarball", "temp": "^0.9.0", - "text-buffer": "13.16.1", + "text-buffer": "13.16.2", "timecop": "https://www.atom.io/api/packages/timecop/versions/0.36.2/tarball", "tree-sitter": "0.15.0", "tree-sitter-css": "^0.13.7", From c532540d25e245e15435a24fa48c339251dc72cf Mon Sep 17 00:00:00 2001 From: Winston Liu <50Wliu@users.noreply.github.com> Date: Tue, 11 Jun 2019 00:19:40 -0400 Subject: [PATCH 02/61] :arrow_up: apm@2.3.0 to remove node-gyp logic --- apm/package-lock.json | 27 ++++++++++----------------- apm/package.json | 2 +- 2 files changed, 11 insertions(+), 18 deletions(-) diff --git a/apm/package-lock.json b/apm/package-lock.json index e4a1cd064..77c3b7e06 100644 --- a/apm/package-lock.json +++ b/apm/package-lock.json @@ -4,9 +4,9 @@ "lockfileVersion": 1, "dependencies": { "atom-package-manager": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/atom-package-manager/-/atom-package-manager-2.2.4.tgz", - "integrity": "sha512-Iyfs8FNPH+fDLm2DlzE+71TGGZt0fAO2fchJKUHbMLqxFPBPjOgigViQZxDhb2eBRYi2jLKkbalCa4m21Q8CRA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/atom-package-manager/-/atom-package-manager-2.3.0.tgz", + "integrity": "sha512-WI2HaA19A4rKyaNnaoOE7vIlHBiwXQGq+/Kw1Z38LARvYOuWi7BK2GX0cZYqi4I5Yh5elpxrl01M2QmL09saNg==", "requires": { "@atom/plist": "0.4.4", "asar-require": "0.3.0", @@ -834,19 +834,12 @@ } }, "keytar": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/keytar/-/keytar-4.7.0.tgz", - "integrity": "sha512-0hLlRRkhdR0068fVQo21hnIndGvacsh9PtAHGAPMPzxFjJwP8idAkVAcbdb1P5B+gterCBa3+4hxL0NPMDlZtw==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/keytar/-/keytar-4.9.0.tgz", + "integrity": "sha512-5aKEpnxRWUIhSlRXckqTxomqokV1/tOBe3EdbCDyMjDaoa5AkVHVa1yK+fa2CgJR5MadbJndFWmcDMCq812F4A==", "requires": { - "nan": "2.13.2", + "nan": "2.14.0", "prebuild-install": "5.3.0" - }, - "dependencies": { - "nan": { - "version": "2.13.2", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.13.2.tgz", - "integrity": "sha512-TghvYc72wlMGMVMluVo9WRJc0mB8KxxF/gZ4YYFy7V2ZQX9l7rgbPg7vjS9mt6U5HXODVFVI2bOduCzwOMv/lw==" - } } }, "klaw": { @@ -3876,9 +3869,9 @@ } }, "psl": { - "version": "1.1.31", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", - "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==" + "version": "1.1.32", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.32.tgz", + "integrity": "sha512-MHACAkHpihU/REGGPLj4sEfc/XKW2bheigvHO1dUqjaKigMp1C8+WLQYRGgeKFMsw5PMfegZcaN8IDXK/cD0+g==" }, "pump": { "version": "2.0.1", diff --git a/apm/package.json b/apm/package.json index 4e6b47e9c..aa8349589 100644 --- a/apm/package.json +++ b/apm/package.json @@ -6,6 +6,6 @@ "url": "https://github.com/atom/atom.git" }, "dependencies": { - "atom-package-manager": "2.2.4" + "atom-package-manager": "2.3.0" } } From aa987c7866868f3523a8512feb531b33d5a485d2 Mon Sep 17 00:00:00 2001 From: Rafael Oleza Date: Tue, 11 Jun 2019 19:02:21 +0200 Subject: [PATCH 03/61] Do not store null buffers on the cacheStore --- src/native-compile-cache.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/native-compile-cache.js b/src/native-compile-cache.js index 5b097954c..422fbccd9 100644 --- a/src/native-compile-cache.js +++ b/src/native-compile-cache.js @@ -43,7 +43,7 @@ class NativeCompileCache { const script = new vm.Script(code, { filename, produceCachedData: true }); return { result: script.runInThisContext(), - cacheBuffer: script.cachedData + cacheBuffer: script.cachedDataProduced ? script.cachedData : null }; } @@ -102,7 +102,7 @@ class NativeCompileCache { console.error(`Error running script ${filename}`); throw err; } - if (compilationResult.cacheBuffer !== null) { + if (compilationResult.cacheBuffer) { self.cacheStore.set(cacheKey, compilationResult.cacheBuffer); } compiledWrapper = compilationResult.result; From 7306670ffe2c12fb61669b8c16f5586e4238435c Mon Sep 17 00:00:00 2001 From: Rafael Oleza Date: Wed, 12 Jun 2019 10:39:40 +0200 Subject: [PATCH 04/61] =?UTF-8?q?=E2=AC=86=EF=B8=8F=20pathwatcher@8.1.0,?= =?UTF-8?q?=20text-buffer@13.17.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vscode/settings.json | 3 +++ package-lock.json | 20 ++++++++++---------- package.json | 4 ++-- 3 files changed, 15 insertions(+), 12 deletions(-) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 000000000..4718ffd99 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "eslint.enable": true +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 0e19091b9..06d48b26d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5187,9 +5187,9 @@ "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=" }, "pathwatcher": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/pathwatcher/-/pathwatcher-8.0.2.tgz", - "integrity": "sha512-zuP+fLmB2IB6z89ikcehA+vG/ITx3Cmhaj3DJrBgnbdss6dwPolSq7cDBjgZ78Vl+SXmG7CHGIOM5mqdT9h7BQ==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/pathwatcher/-/pathwatcher-8.1.0.tgz", + "integrity": "sha512-CF6M8W3kR4sEF2wzwRLAN/J+MfstclhRhfd0+SP83vQyrIsuKDSxd6r2TVG16sXpKCzo/ieAQ+GD0yYZ1380Nw==", "requires": { "async": "~0.2.10", "emissary": "^1.3.2", @@ -6397,9 +6397,9 @@ } }, "superstring": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/superstring/-/superstring-2.3.6.tgz", - "integrity": "sha512-kDTXCXArhHL1lRk2zBW7ByRJByqVwoLK3E3jlf8+LcwQLZgSMs9dwrDHDpBdoOm89kstSBSrGcW8OJqNkxjWrQ==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/superstring/-/superstring-2.4.0.tgz", + "integrity": "sha512-dg1jpBBvxL2pBpCkTfAABYj0AXcVC05wQ2CHz/AVY786BC9wwzgZmkbjVQ2s/PI9Se9QMRwURJ2UE3MF4EygOg==", "requires": { "nan": "^2.10.0" } @@ -6565,9 +6565,9 @@ } }, "text-buffer": { - "version": "13.16.2", - "resolved": "https://registry.npmjs.org/text-buffer/-/text-buffer-13.16.2.tgz", - "integrity": "sha512-4cTQqOe/rH8WVRiBOYyv8zigrdsKaArOZi0Xba3IjAG+cw2Hu8pJJPdfvGSMnsiJCZeRQvN4Yvsi0P9T8/odwQ==", + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/text-buffer/-/text-buffer-13.17.0.tgz", + "integrity": "sha512-6KWUrAUp/fLnAX3i8nPiBAzFzNPMLevybVsS6WnvMc6W1Azod8RNMIw7fSsgcpwPgGjkZUg2HIIEKUgGveC7ZQ==", "requires": { "delegato": "^1.0.0", "diff": "^2.2.1", @@ -6577,7 +6577,7 @@ "fs-plus": "^3.0.0", "grim": "^2.0.2", "mkdirp": "^0.5.1", - "pathwatcher": "8.0.2", + "pathwatcher": "^8.1.0", "serializable": "^1.0.3", "superstring": "2.4.0", "underscore-plus": "^1.0.0" diff --git a/package.json b/package.json index 3111ce680..efd4c2b4b 100644 --- a/package.json +++ b/package.json @@ -132,7 +132,7 @@ "one-light-ui": "file:packages/one-light-ui", "open-on-github": "https://www.atom.io/api/packages/open-on-github/versions/1.3.1/tarball", "package-generator": "https://www.atom.io/api/packages/package-generator/versions/1.3.0/tarball", - "pathwatcher": "8.0.2", + "pathwatcher": "8.1.0", "postcss": "5.2.4", "postcss-selector-parser": "2.2.1", "property-accessors": "^1.1.3", @@ -155,7 +155,7 @@ "symbols-view": "https://www.atom.io/api/packages/symbols-view/versions/0.118.2/tarball", "tabs": "https://www.atom.io/api/packages/tabs/versions/0.110.0/tarball", "temp": "^0.9.0", - "text-buffer": "13.16.2", + "text-buffer": "13.17.0", "timecop": "https://www.atom.io/api/packages/timecop/versions/0.36.2/tarball", "tree-sitter": "0.15.0", "tree-sitter-css": "^0.13.7", From 1d13427124941902741048c5a02e12f40b6233d2 Mon Sep 17 00:00:00 2001 From: Rafael Oleza Date: Wed, 12 Jun 2019 11:27:03 +0200 Subject: [PATCH 05/61] Auto-format yaml files --- .travis.yml | 26 +- appveyor.yml | 44 +-- script/vsts/nightly-release.yml | 105 ++++--- script/vsts/platforms/linux.yml | 154 +++++----- script/vsts/platforms/macos.yml | 314 +++++++++---------- script/vsts/platforms/windows.yml | 438 +++++++++++++-------------- script/vsts/pull-requests.yml | 35 ++- script/vsts/release-branch-build.yml | 139 +++++---- 8 files changed, 626 insertions(+), 629 deletions(-) diff --git a/.travis.yml b/.travis.yml index f32e2721c..c4eb14e29 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,16 +1,16 @@ language: python python: - - "2.7.13" + - '2.7.13' git: depth: 10 branches: only: - - master - - /^[0-9.]+-releases$/ - - /.*-test-travis$/ + - master + - /^[0-9.]+-releases$/ + - /.*-test-travis$/ matrix: include: @@ -19,7 +19,7 @@ matrix: env: NODE_VERSION=8.9.3 DISPLAY=:99.0 CC=clang CXX=clang++ npm_config_clang=1 ATOM_JASMINE_REPORTER=list before_install: - - "/sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -ac -screen 0 1280x1024x16" + - '/sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -ac -screen 0 1280x1024x16' install: - git clone https://github.com/creationix/nvm.git /tmp/.nvm @@ -57,11 +57,11 @@ addons: target_paths: travis-artifacts/$TRAVIS_BUILD_ID apt: packages: - - build-essential - - clang-3.3 - - fakeroot - - git - - libsecret-1-dev - - rpm - - libx11-dev - - libxkbfile-dev + - build-essential + - clang-3.3 + - fakeroot + - git + - libsecret-1-dev + - rpm + - libx11-dev + - libxkbfile-dev diff --git a/appveyor.yml b/appveyor.yml index 5ca67c824..e3602f329 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,6 +1,6 @@ image: Visual Studio 2015 -version: "{build}" +version: '{build}' skip_tags: true clone_folder: c:\projects\atom @@ -8,9 +8,9 @@ clone_depth: 10 branches: only: - - master - - /^[0-9.]+-releases$/ - - /^electron-[0-9.]+$/ + - master + - /^[0-9.]+-releases$/ + - /^electron-[0-9.]+$/ platform: - x64 @@ -24,8 +24,8 @@ environment: NODE_VERSION: 8.9.3 matrix: - - TASK: test - - TASK: installer + - TASK: test + - TASK: installer matrix: fast_finish: true @@ -46,28 +46,28 @@ build_script: - IF [%APPVEYOR_REPO_BRANCH%]==[master] IF NOT DEFINED APPVEYOR_PULL_REQUEST_NUMBER SET IS_SIGNED_ZIP_BRANCH=true - IF [%APPVEYOR_REPO_BRANCH:~0,9%]==[electron-] IF NOT DEFINED APPVEYOR_PULL_REQUEST_NUMBER SET IS_SIGNED_ZIP_BRANCH=true - IF [%TASK%]==[installer] ( - IF [%IS_RELEASE_BRANCH%]==[true] ( - ECHO Building on release branch - Creating production artifacts && - script\build.cmd --code-sign --compress-artifacts --create-windows-installer - ) ELSE ( - IF [%IS_SIGNED_ZIP_BRANCH%]==[true] ( - ECHO Building on %APPVEYOR_REPO_BRANCH% branch - Creating signed zips && - script\build.cmd --code-sign --compress-artifacts - ) ELSE ( - ECHO Skipping installer build for non-release/non-master branch - ) - ) + IF [%IS_RELEASE_BRANCH%]==[true] ( + ECHO Building on release branch - Creating production artifacts && + script\build.cmd --code-sign --compress-artifacts --create-windows-installer ) ELSE ( - ECHO Test build only - Not creating artifacts && - script\build.cmd + IF [%IS_SIGNED_ZIP_BRANCH%]==[true] ( + ECHO Building on %APPVEYOR_REPO_BRANCH% branch - Creating signed zips && + script\build.cmd --code-sign --compress-artifacts + ) ELSE ( + ECHO Skipping installer build for non-release/non-master branch + ) + ) + ) ELSE ( + ECHO Test build only - Not creating artifacts && + script\build.cmd ) test_script: - IF [%TASK%]==[test] ( - script\lint.cmd && - script\test.cmd + script\lint.cmd && + script\test.cmd ) ELSE ( - ECHO Skipping tests on installer build matrix row + ECHO Skipping tests on installer build matrix row ) deploy: off diff --git a/script/vsts/nightly-release.yml b/script/vsts/nightly-release.yml index 2bacc55a4..199a6b4ca 100644 --- a/script/vsts/nightly-release.yml +++ b/script/vsts/nightly-release.yml @@ -1,65 +1,64 @@ resources: containers: - - container: atom-linux-ci - image: atomeditor/atom-linux-ci:latest + - container: atom-linux-ci + image: atomeditor/atom-linux-ci:latest jobs: + - job: GetReleaseVersion + steps: + # This has to be done separately because VSTS inexplicably + # exits the script block after `npm install` completes. + - script: | + cd script\vsts + npm install + displayName: npm install + - script: node script\vsts\get-release-version.js --nightly + name: Version -- job: GetReleaseVersion - steps: - # This has to be done separately because VSTS inexplicably - # exits the script block after `npm install` completes. - - script: | - cd script\vsts - npm install - displayName: npm install - - script: node script\vsts\get-release-version.js --nightly - name: Version + # Import OS-specific build definitions + - template: platforms/windows.yml + - template: platforms/macos.yml + - template: platforms/linux.yml -# Import OS-specific build definitions -- template: platforms/windows.yml -- template: platforms/macos.yml -- template: platforms/linux.yml + - job: Release + pool: + vmImage: vs2015-win2012r2 # needed for Python 2.7 and gyp -- job: Release - pool: - vmImage: vs2015-win2012r2 # needed for Python 2.7 and gyp + dependsOn: + - GetReleaseVersion + - Windows + - Linux + - macOS_tests - dependsOn: - - GetReleaseVersion - - Windows - - Linux - - macOS_tests + variables: + ReleaseVersion: $[ dependencies.GetReleaseVersion.outputs['Version.ReleaseVersion'] ] - variables: - ReleaseVersion: $[ dependencies.GetReleaseVersion.outputs['Version.ReleaseVersion'] ] + steps: + - task: NodeTool@0 + inputs: + versionSpec: 8.9.3 + displayName: Install Node.js 8.9.3 - steps: - - task: NodeTool@0 - inputs: - versionSpec: 8.9.3 - displayName: Install Node.js 8.9.3 + # This has to be done separately because VSTS inexplicably + # exits the script block after `npm install` completes. + - script: | + cd script\vsts + npm install + displayName: npm install - # This has to be done separately because VSTS inexplicably - # exits the script block after `npm install` completes. - - script: | - cd script\vsts - npm install - displayName: npm install + - task: DownloadBuildArtifacts@0 + inputs: + itemPattern: '**' + downloadType: 'specific' + displayName: Download Release Artifacts - - task: DownloadBuildArtifacts@0 - inputs: - itemPattern: '**' - downloadType: 'specific' - displayName: Download Release Artifacts - - - script: | - node $(Build.SourcesDirectory)\script\vsts\upload-artifacts.js --create-github-release --assets-path "$(System.ArtifactsDirectory)" - env: - GITHUB_TOKEN: $(GITHUB_TOKEN) - ATOM_RELEASE_VERSION: $(ReleaseVersion) - ATOM_RELEASES_S3_KEY: $(ATOM_RELEASES_S3_KEY) - ATOM_RELEASES_S3_SECRET: $(ATOM_RELEASES_S3_SECRET) - ATOM_RELEASES_S3_BUCKET: $(ATOM_RELEASES_S3_BUCKET) - PACKAGE_CLOUD_API_KEY: $(PACKAGE_CLOUD_API_KEY) - displayName: Create Nightly Release + - script: | + node $(Build.SourcesDirectory)\script\vsts\upload-artifacts.js --create-github-release --assets-path "$(System.ArtifactsDirectory)" + env: + GITHUB_TOKEN: $(GITHUB_TOKEN) + ATOM_RELEASE_VERSION: $(ReleaseVersion) + ATOM_RELEASES_S3_KEY: $(ATOM_RELEASES_S3_KEY) + ATOM_RELEASES_S3_SECRET: $(ATOM_RELEASES_S3_SECRET) + ATOM_RELEASES_S3_BUCKET: $(ATOM_RELEASES_S3_BUCKET) + PACKAGE_CLOUD_API_KEY: $(PACKAGE_CLOUD_API_KEY) + displayName: Create Nightly Release diff --git a/script/vsts/platforms/linux.yml b/script/vsts/platforms/linux.yml index e820ef921..3fbebf6be 100644 --- a/script/vsts/platforms/linux.yml +++ b/script/vsts/platforms/linux.yml @@ -1,91 +1,91 @@ jobs: -- job: Linux - dependsOn: GetReleaseVersion - timeoutInMinutes: 180 + - job: Linux + dependsOn: GetReleaseVersion + timeoutInMinutes: 180 - variables: - ReleaseVersion: $[ dependencies.GetReleaseVersion.outputs['Version.ReleaseVersion'] ] - pool: - # This image is used to host the Docker container that runs the build - vmImage: ubuntu-16.04 + variables: + ReleaseVersion: $[ dependencies.GetReleaseVersion.outputs['Version.ReleaseVersion'] ] + pool: + # This image is used to host the Docker container that runs the build + vmImage: ubuntu-16.04 - container: atom-linux-ci + container: atom-linux-ci - steps: - - task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1 - displayName: Restore node_modules cache - inputs: - keyfile: 'package.json, **/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json' - targetfolder: '**/node_modules, !**/node_modules/**/node_modules' - vstsFeed: 'bae1bc26-220d-43c7-a955-4de039370de2' + steps: + - task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1 + displayName: Restore node_modules cache + inputs: + keyfile: 'package.json, script/vsts/platforms/windows.yml, **/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json' + targetfolder: '**/node_modules, !**/node_modules/**/node_modules' + vstsFeed: 'bae1bc26-220d-43c7-a955-4de039370de2' - - script: script/bootstrap - displayName: Bootstrap build environment - env: - CI: true - CI_PROVIDER: VSTS - condition: ne(variables['CacheRestored'], 'true') + - script: script/bootstrap + displayName: Bootstrap build environment + env: + CI: true + CI_PROVIDER: VSTS + condition: ne(variables['CacheRestored'], 'true') - - task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1 - displayName: Save node_modules cache - inputs: - keyfile: 'package.json, **/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json' - targetfolder: '**/node_modules, !**/node_modules/**/node_modules' - vstsFeed: 'bae1bc26-220d-43c7-a955-4de039370de2' + - task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1 + displayName: Save node_modules cache + inputs: + keyfile: 'package.json, **/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json' + targetfolder: '**/node_modules, !**/node_modules/**/node_modules' + vstsFeed: 'bae1bc26-220d-43c7-a955-4de039370de2' - - script: script/lint - displayName: Run linter + - script: script/lint + displayName: Run linter - - script: script/build --no-bootstrap --create-debian-package --create-rpm-package --compress-artifacts - env: - GITHUB_TOKEN: $(GITHUB_TOKEN) - ATOM_RELEASE_VERSION: $(ReleaseVersion) - displayName: Build Atom + - script: script/build --no-bootstrap --create-debian-package --create-rpm-package --compress-artifacts + env: + GITHUB_TOKEN: $(GITHUB_TOKEN) + ATOM_RELEASE_VERSION: $(ReleaseVersion) + displayName: Build Atom - - script: script/test - env: - CI: true - CI_PROVIDER: VSTS - ATOM_JASMINE_REPORTER: list - TEST_JUNIT_XML_ROOT: $(Common.TestResultsDirectory)/junit - displayName: Run tests - condition: and(succeeded(), ne(variables['Atom.SkipTests'], 'true')) + - script: script/test + env: + CI: true + CI_PROVIDER: VSTS + ATOM_JASMINE_REPORTER: list + TEST_JUNIT_XML_ROOT: $(Common.TestResultsDirectory)/junit + displayName: Run tests + condition: and(succeeded(), ne(variables['Atom.SkipTests'], 'true')) - - script: script/postprocess-junit-results --search-folder "${TEST_JUNIT_XML_ROOT}" --test-results-files "**/*.xml" - env: - TEST_JUNIT_XML_ROOT: $(Common.TestResultsDirectory)/junit - displayName: Post-process test results - condition: ne(variables['Atom.SkipTests'], 'true') + - script: script/postprocess-junit-results --search-folder "${TEST_JUNIT_XML_ROOT}" --test-results-files "**/*.xml" + env: + TEST_JUNIT_XML_ROOT: $(Common.TestResultsDirectory)/junit + displayName: Post-process test results + condition: ne(variables['Atom.SkipTests'], 'true') - - task: PublishTestResults@2 - inputs: - testResultsFormat: JUnit - searchFolder: $(Common.TestResultsDirectory)/junit - testResultsFiles: "**/*.xml" - mergeTestResults: true - testRunTitle: Linux - condition: ne(variables['Atom.SkipTests'], 'true') + - task: PublishTestResults@2 + inputs: + testResultsFormat: JUnit + searchFolder: $(Common.TestResultsDirectory)/junit + testResultsFiles: '**/*.xml' + mergeTestResults: true + testRunTitle: Linux + condition: ne(variables['Atom.SkipTests'], 'true') - - task: PublishBuildArtifacts@1 - inputs: - PathtoPublish: $(Build.SourcesDirectory)/out/atom.x86_64.rpm - ArtifactName: atom.x86_64.rpm - ArtifactType: Container - displayName: Upload atom.x84_64.rpm - condition: and(succeeded(), ne(variables['Build.Reason'], 'PullRequest')) + - task: PublishBuildArtifacts@1 + inputs: + PathtoPublish: $(Build.SourcesDirectory)/out/atom.x86_64.rpm + ArtifactName: atom.x86_64.rpm + ArtifactType: Container + displayName: Upload atom.x84_64.rpm + condition: and(succeeded(), ne(variables['Build.Reason'], 'PullRequest')) - - task: PublishBuildArtifacts@1 - inputs: - PathtoPublish: $(Build.SourcesDirectory)/out/atom-amd64.deb - ArtifactName: atom-amd64.deb - ArtifactType: Container - displayName: Upload atom-amd64.deb - condition: and(succeeded(), ne(variables['Build.Reason'], 'PullRequest')) + - task: PublishBuildArtifacts@1 + inputs: + PathtoPublish: $(Build.SourcesDirectory)/out/atom-amd64.deb + ArtifactName: atom-amd64.deb + ArtifactType: Container + displayName: Upload atom-amd64.deb + condition: and(succeeded(), ne(variables['Build.Reason'], 'PullRequest')) - - task: PublishBuildArtifacts@1 - inputs: - PathtoPublish: $(Build.SourcesDirectory)/out/atom-amd64.tar.gz - ArtifactName: atom-amd64.tar.gz - ArtifactType: Container - displayName: Upload atom-amd64.tar.gz - condition: and(succeeded(), ne(variables['Build.Reason'], 'PullRequest')) + - task: PublishBuildArtifacts@1 + inputs: + PathtoPublish: $(Build.SourcesDirectory)/out/atom-amd64.tar.gz + ArtifactName: atom-amd64.tar.gz + ArtifactType: Container + displayName: Upload atom-amd64.tar.gz + condition: and(succeeded(), ne(variables['Build.Reason'], 'PullRequest')) diff --git a/script/vsts/platforms/macos.yml b/script/vsts/platforms/macos.yml index 253b22203..adf99e509 100644 --- a/script/vsts/platforms/macos.yml +++ b/script/vsts/platforms/macos.yml @@ -1,182 +1,182 @@ jobs: -- job: macOS_build - displayName: macOS build - dependsOn: GetReleaseVersion - timeoutInMinutes: 180 + - job: macOS_build + displayName: macOS build + dependsOn: GetReleaseVersion + timeoutInMinutes: 180 - variables: - ReleaseVersion: $[ dependencies.GetReleaseVersion.outputs['Version.ReleaseVersion'] ] - IsReleaseBranch: $[ dependencies.GetReleaseVersion.outputs['Version.IsReleaseBranch'] ] - IsSignedZipBranch: $[ dependencies.GetReleaseVersion.outputs['Version.IsSignedZipBranch'] ] - pool: - vmImage: macos-10.13 + variables: + ReleaseVersion: $[ dependencies.GetReleaseVersion.outputs['Version.ReleaseVersion'] ] + IsReleaseBranch: $[ dependencies.GetReleaseVersion.outputs['Version.IsReleaseBranch'] ] + IsSignedZipBranch: $[ dependencies.GetReleaseVersion.outputs['Version.IsSignedZipBranch'] ] + pool: + vmImage: macos-10.13 - steps: - - task: NodeTool@0 - inputs: - versionSpec: 8.9.3 - displayName: Install Node.js 8.9.3 + steps: + - task: NodeTool@0 + inputs: + versionSpec: 8.9.3 + displayName: Install Node.js 8.9.3 - - script: npm install --global npm@6.2.0 - displayName: Update npm + - script: npm install --global npm@6.2.0 + displayName: Update npm - - task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1 - displayName: Restore node_modules cache - inputs: - keyfile: 'package.json, **/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json' - targetfolder: '**/node_modules, !**/node_modules/**/node_modules' - vstsFeed: 'bae1bc26-220d-43c7-a955-4de039370de2' + - task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1 + displayName: Restore node_modules cache + inputs: + keyfile: 'package.json, **/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json' + targetfolder: '**/node_modules, !**/node_modules/**/node_modules' + vstsFeed: 'bae1bc26-220d-43c7-a955-4de039370de2' - - script: script/bootstrap - displayName: Bootstrap build environment - env: - CI: true - CI_PROVIDER: VSTS - NPM_BIN_PATH: /usr/local/bin/npm - condition: ne(variables['CacheRestored'], 'true') + - script: script/bootstrap + displayName: Bootstrap build environment + env: + CI: true + CI_PROVIDER: VSTS + NPM_BIN_PATH: /usr/local/bin/npm + condition: ne(variables['CacheRestored'], 'true') - - task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1 - displayName: Save node_modules cache - inputs: - keyfile: 'package.json, **/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json' - targetfolder: '**/node_modules, !**/node_modules/**/node_modules' - vstsFeed: 'bae1bc26-220d-43c7-a955-4de039370de2' + - task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1 + displayName: Save node_modules cache + inputs: + keyfile: 'package.json, **/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json' + targetfolder: '**/node_modules, !**/node_modules/**/node_modules' + vstsFeed: 'bae1bc26-220d-43c7-a955-4de039370de2' - - script: script/lint - displayName: Run linter + - script: script/lint + displayName: Run linter - - script: | - if [ $IS_RELEASE_BRANCH == "true" ] || [ $IS_SIGNED_ZIP_BRANCH == "true" ]; then - script/build --no-bootstrap --code-sign --compress-artifacts - else - script/build --no-bootstrap --compress-artifacts - fi - displayName: Build Atom - env: - GITHUB_TOKEN: $(GITHUB_TOKEN) - IS_RELEASE_BRANCH: $(IsReleaseBranch) - IS_SIGNED_ZIP_BRANCH: $(IsSignedZipBranch) - ATOM_RELEASE_VERSION: $(ReleaseVersion) - ATOM_MAC_CODE_SIGNING_CERT_DOWNLOAD_URL: $(ATOM_MAC_CODE_SIGNING_CERT_DOWNLOAD_URL) - ATOM_MAC_CODE_SIGNING_CERT_PASSWORD: $(ATOM_MAC_CODE_SIGNING_CERT_PASSWORD) - ATOM_MAC_CODE_SIGNING_KEYCHAIN: $(ATOM_MAC_CODE_SIGNING_KEYCHAIN) - ATOM_MAC_CODE_SIGNING_KEYCHAIN_PASSWORD: $(ATOM_MAC_CODE_SIGNING_KEYCHAIN_PASSWORD) + - script: | + if [ $IS_RELEASE_BRANCH == "true" ] || [ $IS_SIGNED_ZIP_BRANCH == "true" ]; then + script/build --no-bootstrap --code-sign --compress-artifacts + else + script/build --no-bootstrap --compress-artifacts + fi + displayName: Build Atom + env: + GITHUB_TOKEN: $(GITHUB_TOKEN) + IS_RELEASE_BRANCH: $(IsReleaseBranch) + IS_SIGNED_ZIP_BRANCH: $(IsSignedZipBranch) + ATOM_RELEASE_VERSION: $(ReleaseVersion) + ATOM_MAC_CODE_SIGNING_CERT_DOWNLOAD_URL: $(ATOM_MAC_CODE_SIGNING_CERT_DOWNLOAD_URL) + ATOM_MAC_CODE_SIGNING_CERT_PASSWORD: $(ATOM_MAC_CODE_SIGNING_CERT_PASSWORD) + ATOM_MAC_CODE_SIGNING_KEYCHAIN: $(ATOM_MAC_CODE_SIGNING_KEYCHAIN) + ATOM_MAC_CODE_SIGNING_KEYCHAIN_PASSWORD: $(ATOM_MAC_CODE_SIGNING_KEYCHAIN_PASSWORD) - - script: | - cp $(Build.SourcesDirectory)/out/*.zip $(Build.ArtifactStagingDirectory) - displayName: Stage Artifacts + - script: | + cp $(Build.SourcesDirectory)/out/*.zip $(Build.ArtifactStagingDirectory) + displayName: Stage Artifacts - - task: PublishBuildArtifacts@1 - inputs: - PathtoPublish: $(Build.ArtifactStagingDirectory)/atom-mac.zip - ArtifactName: atom-mac.zip - ArtifactType: Container - displayName: Upload atom-mac.zip - condition: succeeded() + - task: PublishBuildArtifacts@1 + inputs: + PathtoPublish: $(Build.ArtifactStagingDirectory)/atom-mac.zip + ArtifactName: atom-mac.zip + ArtifactType: Container + displayName: Upload atom-mac.zip + condition: succeeded() - - task: PublishBuildArtifacts@1 - inputs: - PathtoPublish: $(Build.ArtifactStagingDirectory)/atom-mac-symbols.zip - ArtifactName: atom-mac-symbols.zip - ArtifactType: Container - displayName: Upload atom-mac-symbols.zip - condition: succeeded() + - task: PublishBuildArtifacts@1 + inputs: + PathtoPublish: $(Build.ArtifactStagingDirectory)/atom-mac-symbols.zip + ArtifactName: atom-mac-symbols.zip + ArtifactType: Container + displayName: Upload atom-mac-symbols.zip + condition: succeeded() - - task: PublishBuildArtifacts@1 - inputs: - PathtoPublish: $(Build.SourcesDirectory)/docs/output/atom-api.json - ArtifactName: atom-api.json - ArtifactType: Container - displayName: Upload atom-api.json - condition: succeeded() + - task: PublishBuildArtifacts@1 + inputs: + PathtoPublish: $(Build.SourcesDirectory)/docs/output/atom-api.json + ArtifactName: atom-api.json + ArtifactType: Container + displayName: Upload atom-api.json + condition: succeeded() -- job: macOS_tests - displayName: macOS test - dependsOn: macOS_build - timeoutInMinutes: 180 - pool: - vmImage: macos-10.13 - strategy: - maxParallel: 3 - matrix: - core: - RunCoreTests: true - RunPackageTests: false - packages-1: - RunCoreTests: false - RunPackageTests: 1 - packages-2: - RunCoreTests: false - RunPackageTests: 2 + - job: macOS_tests + displayName: macOS test + dependsOn: macOS_build + timeoutInMinutes: 180 + pool: + vmImage: macos-10.13 + strategy: + maxParallel: 3 + matrix: + core: + RunCoreTests: true + RunPackageTests: false + packages-1: + RunCoreTests: false + RunPackageTests: 1 + packages-2: + RunCoreTests: false + RunPackageTests: 2 - steps: - - task: NodeTool@0 - inputs: - versionSpec: 8.9.3 - displayName: Install Node.js 8.9.3 + steps: + - task: NodeTool@0 + inputs: + versionSpec: 8.9.3 + displayName: Install Node.js 8.9.3 - - task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1 - displayName: Restore node_modules cache - inputs: - keyfile: 'package.json, **/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json' - targetfolder: '**/node_modules, !**/node_modules/**/node_modules' - vstsFeed: 'bae1bc26-220d-43c7-a955-4de039370de2' + - task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1 + displayName: Restore node_modules cache + inputs: + keyfile: 'package.json, **/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json' + targetfolder: '**/node_modules, !**/node_modules/**/node_modules' + vstsFeed: 'bae1bc26-220d-43c7-a955-4de039370de2' - - task: DownloadBuildArtifacts@0 - displayName: Download atom-mac.zip - inputs: - artifactName: 'atom-mac.zip' - downloadPath: $(Build.SourcesDirectory) + - task: DownloadBuildArtifacts@0 + displayName: Download atom-mac.zip + inputs: + artifactName: 'atom-mac.zip' + downloadPath: $(Build.SourcesDirectory) - - script: unzip atom-mac.zip/atom-mac.zip -d out - displayName: Unzip atom-mac.zip + - script: unzip atom-mac.zip/atom-mac.zip -d out + displayName: Unzip atom-mac.zip - - task: DownloadBuildArtifacts@0 - displayName: Download atom-mac-symbols.zip - inputs: - artifactName: 'atom-mac-symbols.zip' - downloadPath: $(Build.SourcesDirectory) + - task: DownloadBuildArtifacts@0 + displayName: Download atom-mac-symbols.zip + inputs: + artifactName: 'atom-mac-symbols.zip' + downloadPath: $(Build.SourcesDirectory) - - script: unzip atom-mac-symbols.zip/atom-mac-symbols.zip -d out - displayName: Unzip atom-mac-symbols.zip + - script: unzip atom-mac-symbols.zip/atom-mac-symbols.zip -d out + displayName: Unzip atom-mac-symbols.zip - - script: | - osascript -e 'tell application "System Events" to keystroke "x"' # clear screen saver - caffeinate -s script/test # Run with caffeinate to prevent screen saver - env: - CI: true - CI_PROVIDER: VSTS - ATOM_JASMINE_REPORTER: list - TEST_JUNIT_XML_ROOT: $(Common.TestResultsDirectory)/junit - ATOM_RUN_CORE_TESTS: $(RunCoreTests) - ATOM_RUN_PACKAGE_TESTS: $(RunPackageTests) - displayName: Run tests - condition: and(succeeded(), ne(variables['Atom.SkipTests'], 'true')) + - script: | + osascript -e 'tell application "System Events" to keystroke "x"' # clear screen saver + caffeinate -s script/test # Run with caffeinate to prevent screen saver + env: + CI: true + CI_PROVIDER: VSTS + ATOM_JASMINE_REPORTER: list + TEST_JUNIT_XML_ROOT: $(Common.TestResultsDirectory)/junit + ATOM_RUN_CORE_TESTS: $(RunCoreTests) + ATOM_RUN_PACKAGE_TESTS: $(RunPackageTests) + displayName: Run tests + condition: and(succeeded(), ne(variables['Atom.SkipTests'], 'true')) - - script: script/postprocess-junit-results --search-folder "${TEST_JUNIT_XML_ROOT}" --test-results-files "**/*.xml" - env: - TEST_JUNIT_XML_ROOT: $(Common.TestResultsDirectory)/junit - displayName: Post-process test results - condition: ne(variables['Atom.SkipTests'], 'true') + - script: script/postprocess-junit-results --search-folder "${TEST_JUNIT_XML_ROOT}" --test-results-files "**/*.xml" + env: + TEST_JUNIT_XML_ROOT: $(Common.TestResultsDirectory)/junit + displayName: Post-process test results + condition: ne(variables['Atom.SkipTests'], 'true') - - task: PublishTestResults@2 - inputs: - testResultsFormat: JUnit - searchFolder: $(Common.TestResultsDirectory)/junit - testResultsFiles: "**/*.xml" - mergeTestResults: true - testRunTitle: MacOS - condition: ne(variables['Atom.SkipTests'], 'true') + - task: PublishTestResults@2 + inputs: + testResultsFormat: JUnit + searchFolder: $(Common.TestResultsDirectory)/junit + testResultsFiles: '**/*.xml' + mergeTestResults: true + testRunTitle: MacOS + condition: ne(variables['Atom.SkipTests'], 'true') - - script: | - mkdir -p $(Build.ArtifactStagingDirectory)/crash-reports - cp ${HOME}/Library/Logs/DiagnosticReports/*.crash $(Build.ArtifactStagingDirectory)/crash-reports - displayName: Stage Crash Reports - condition: failed() + - script: | + mkdir -p $(Build.ArtifactStagingDirectory)/crash-reports + cp ${HOME}/Library/Logs/DiagnosticReports/*.crash $(Build.ArtifactStagingDirectory)/crash-reports + displayName: Stage Crash Reports + condition: failed() - - task: PublishBuildArtifacts@1 - inputs: - PathtoPublish: $(Build.ArtifactStagingDirectory)/crash-reports - ArtifactName: crash-reports.zip - displayName: Upload Crash Reports - condition: failed() + - task: PublishBuildArtifacts@1 + inputs: + PathtoPublish: $(Build.ArtifactStagingDirectory)/crash-reports + ArtifactName: crash-reports.zip + displayName: Upload Crash Reports + condition: failed() diff --git a/script/vsts/platforms/windows.yml b/script/vsts/platforms/windows.yml index 444915c5d..9fee7b601 100644 --- a/script/vsts/platforms/windows.yml +++ b/script/vsts/platforms/windows.yml @@ -1,249 +1,249 @@ jobs: -- job: Windows - dependsOn: GetReleaseVersion - timeoutInMinutes: 180 - strategy: - maxParallel: 2 - matrix: - x64: - buildArch: x64 - x86: - buildArch: x86 + - job: Windows + dependsOn: GetReleaseVersion + timeoutInMinutes: 180 + strategy: + maxParallel: 2 + matrix: + x64: + buildArch: x64 + x86: + buildArch: x86 - pool: - vmImage: vs2015-win2012r2 # needed for python 2.7 and gyp + pool: + vmImage: vs2015-win2012r2 # needed for python 2.7 and gyp - variables: - ReleaseVersion: $[ dependencies.GetReleaseVersion.outputs['Version.ReleaseVersion'] ] - IsReleaseBranch: $[ dependencies.GetReleaseVersion.outputs['Version.IsReleaseBranch'] ] - IsSignedZipBranch: $[ dependencies.GetReleaseVersion.outputs['Version.IsSignedZipBranch'] ] + variables: + ReleaseVersion: $[ dependencies.GetReleaseVersion.outputs['Version.ReleaseVersion'] ] + IsReleaseBranch: $[ dependencies.GetReleaseVersion.outputs['Version.IsReleaseBranch'] ] + IsSignedZipBranch: $[ dependencies.GetReleaseVersion.outputs['Version.IsSignedZipBranch'] ] - steps: - - task: NodeTool@0 - inputs: - versionSpec: 8.9.3 - displayName: Install Node.js 8.9.3 + steps: + - task: NodeTool@0 + inputs: + versionSpec: 8.9.3 + displayName: Install Node.js 8.9.3 - - script: | - ECHO Installing npm-windows-upgrade - npm install --global --production npm-windows-upgrade - displayName: Install npm-windows-upgrade + - script: | + ECHO Installing npm-windows-upgrade + npm install --global --production npm-windows-upgrade + displayName: Install npm-windows-upgrade - - script: | - ECHO Upgrading npm - npm-windows-upgrade --no-spinner --no-prompt --npm-version 6.2.0 - displayName: Install npm 6.2.0 + - script: | + ECHO Upgrading npm + npm-windows-upgrade --no-spinner --no-prompt --npm-version 6.2.0 + displayName: Install npm 6.2.0 - - script: | - cd script\vsts - npm install - displayName: Install Windows build dependencies + - script: | + cd script\vsts + npm install + displayName: Install Windows build dependencies - - task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1 - displayName: Restore node_modules cache (x64) - inputs: - keyfile: 'package.json, **/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json, script/vsts/x64-cache-key' - targetfolder: '**/node_modules, !**/node_modules/**/node_modules' - vstsFeed: 'bae1bc26-220d-43c7-a955-4de039370de2' - condition: eq(variables['buildArch'], 'x64') + - task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1 + displayName: Restore node_modules cache (x64) + inputs: + keyfile: 'package.json, **/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json, script/vsts/x64-cache-key' + targetfolder: '**/node_modules, !**/node_modules/**/node_modules' + vstsFeed: 'bae1bc26-220d-43c7-a955-4de039370de2' + condition: eq(variables['buildArch'], 'x64') - - task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1 - displayName: Restore node_modules cache (x86) - inputs: - keyfile: 'package.json, **/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json, script/vsts/x86-cache-key' - targetfolder: '**/node_modules, !**/node_modules/**/node_modules' - vstsFeed: 'bae1bc26-220d-43c7-a955-4de039370de2' - condition: eq(variables['buildArch'], 'x86') + - task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1 + displayName: Restore node_modules cache (x86) + inputs: + keyfile: 'package.json, **/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json, script/vsts/x86-cache-key' + targetfolder: '**/node_modules, !**/node_modules/**/node_modules' + vstsFeed: 'bae1bc26-220d-43c7-a955-4de039370de2' + condition: eq(variables['buildArch'], 'x86') - - script: | - node script\vsts\windows-run.js script\bootstrap.cmd - env: - BUILD_ARCH: $(buildArch) - CI: true - CI_PROVIDER: VSTS - NPM_BIN_PATH: "D:\\a\\_tool\\node\\8.9.3\\x64\\npm.cmd" - displayName: Bootstrap build environment - condition: ne(variables['CacheRestored'], 'true') + - script: | + node script\vsts\windows-run.js script\bootstrap.cmd + env: + BUILD_ARCH: $(buildArch) + CI: true + CI_PROVIDER: VSTS + NPM_BIN_PATH: "D:\\a\\_tool\\node\\8.9.3\\x64\\npm.cmd" + displayName: Bootstrap build environment + condition: ne(variables['CacheRestored'], 'true') - - task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1 - displayName: Save node_modules cache (x64) - inputs: - keyfile: 'package.json, **/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json, script/vsts/x64-cache-key' - targetfolder: '**/node_modules, !**/node_modules/**/node_modules' - vstsFeed: 'bae1bc26-220d-43c7-a955-4de039370de2' - condition: eq(variables['buildArch'], 'x64') + - task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1 + displayName: Save node_modules cache (x64) + inputs: + keyfile: 'package.json, **/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json, script/vsts/x64-cache-key' + targetfolder: '**/node_modules, !**/node_modules/**/node_modules' + vstsFeed: 'bae1bc26-220d-43c7-a955-4de039370de2' + condition: eq(variables['buildArch'], 'x64') - - task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1 - displayName: Save node_modules cache (x86) - inputs: - keyfile: 'package.json, **/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json, script/vsts/x86-cache-key' - targetfolder: '**/node_modules, !**/node_modules/**/node_modules' - vstsFeed: 'bae1bc26-220d-43c7-a955-4de039370de2' - condition: eq(variables['buildArch'], 'x86') + - task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1 + displayName: Save node_modules cache (x86) + inputs: + keyfile: 'package.json, **/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json, script/vsts/x86-cache-key' + targetfolder: '**/node_modules, !**/node_modules/**/node_modules' + vstsFeed: 'bae1bc26-220d-43c7-a955-4de039370de2' + condition: eq(variables['buildArch'], 'x86') - - script: node script\vsts\windows-run.js script\lint.cmd - env: - BUILD_ARCH: $(buildArch) - displayName: Run linter + - script: node script\vsts\windows-run.js script\lint.cmd + env: + BUILD_ARCH: $(buildArch) + displayName: Run linter - - script: | - IF NOT EXIST C:\tmp MKDIR C:\tmp - SET SQUIRREL_TEMP=C:\tmp - IF [%IS_RELEASE_BRANCH%]==[true] ( - ECHO Creating production artifacts for release branch %BUILD_SOURCEBRANCHNAME% - node script\vsts\windows-run.js script\build.cmd --no-bootstrap --code-sign --compress-artifacts --create-windows-installer - ) ELSE ( - IF [%IS_SIGNED_ZIP_BRANCH%]==[true] ( - ECHO Creating signed CI artifacts for branch %BUILD_SOURCEBRANCHNAME% - node script\vsts\windows-run.js script\build.cmd --no-bootstrap --code-sign --compress-artifacts - ) ELSE ( - ECHO Pull request build, no code signing will be performed - node script\vsts\windows-run.js script\build.cmd --no-bootstrap --compress-artifacts - ) - ) - env: - GITHUB_TOKEN: $(GITHUB_TOKEN) - BUILD_ARCH: $(buildArch) - ATOM_RELEASE_VERSION: $(ReleaseVersion) - ATOM_WIN_CODE_SIGNING_CERT_DOWNLOAD_URL: $(ATOM_WIN_CODE_SIGNING_CERT_DOWNLOAD_URL) - ATOM_WIN_CODE_SIGNING_CERT_PASSWORD: $(ATOM_WIN_CODE_SIGNING_CERT_PASSWORD) - IS_RELEASE_BRANCH: $(IsReleaseBranch) - IS_SIGNED_ZIP_BRANCH: $(IsSignedZipBranch) - displayName: Build Atom + - script: | + IF NOT EXIST C:\tmp MKDIR C:\tmp + SET SQUIRREL_TEMP=C:\tmp + IF [%IS_RELEASE_BRANCH%]==[true] ( + ECHO Creating production artifacts for release branch %BUILD_SOURCEBRANCHNAME% + node script\vsts\windows-run.js script\build.cmd --no-bootstrap --code-sign --compress-artifacts --create-windows-installer + ) ELSE ( + IF [%IS_SIGNED_ZIP_BRANCH%]==[true] ( + ECHO Creating signed CI artifacts for branch %BUILD_SOURCEBRANCHNAME% + node script\vsts\windows-run.js script\build.cmd --no-bootstrap --code-sign --compress-artifacts + ) ELSE ( + ECHO Pull request build, no code signing will be performed + node script\vsts\windows-run.js script\build.cmd --no-bootstrap --compress-artifacts + ) + ) + env: + GITHUB_TOKEN: $(GITHUB_TOKEN) + BUILD_ARCH: $(buildArch) + ATOM_RELEASE_VERSION: $(ReleaseVersion) + ATOM_WIN_CODE_SIGNING_CERT_DOWNLOAD_URL: $(ATOM_WIN_CODE_SIGNING_CERT_DOWNLOAD_URL) + ATOM_WIN_CODE_SIGNING_CERT_PASSWORD: $(ATOM_WIN_CODE_SIGNING_CERT_PASSWORD) + IS_RELEASE_BRANCH: $(IsReleaseBranch) + IS_SIGNED_ZIP_BRANCH: $(IsSignedZipBranch) + displayName: Build Atom - - script: node script\vsts\windows-run.js script\test.cmd - env: - CI: true - CI_PROVIDER: VSTS - ATOM_JASMINE_REPORTER: list - TEST_JUNIT_XML_ROOT: $(Common.TestResultsDirectory)\junit - BUILD_ARCH: $(buildArch) - displayName: Run tests - condition: and(succeeded(), ne(variables['Atom.SkipTests'], 'true')) + - script: node script\vsts\windows-run.js script\test.cmd + env: + CI: true + CI_PROVIDER: VSTS + ATOM_JASMINE_REPORTER: list + TEST_JUNIT_XML_ROOT: $(Common.TestResultsDirectory)\junit + BUILD_ARCH: $(buildArch) + displayName: Run tests + condition: and(succeeded(), ne(variables['Atom.SkipTests'], 'true')) - - script: > - node script\vsts\windows-run.js script\postprocess-junit-results.cmd - --search-folder %TEST_JUNIT_XML_ROOT% --test-results-files "**/*.xml" - env: - TEST_JUNIT_XML_ROOT: $(Common.TestResultsDirectory)\junit - displayName: Post-process test results - condition: ne(variables['Atom.SkipTests'], 'true') + - script: > + node script\vsts\windows-run.js script\postprocess-junit-results.cmd + --search-folder %TEST_JUNIT_XML_ROOT% --test-results-files "**/*.xml" + env: + TEST_JUNIT_XML_ROOT: $(Common.TestResultsDirectory)\junit + displayName: Post-process test results + condition: ne(variables['Atom.SkipTests'], 'true') - - task: PublishTestResults@2 - inputs: - testResultsFormat: JUnit - searchFolder: $(Common.TestResultsDirectory)\junit - testResultsFiles: "**/*.xml" - mergeTestResults: true - testRunTitle: Windows $(buildArch) - condition: ne(variables['Atom.SkipTests'], 'true') + - task: PublishTestResults@2 + inputs: + testResultsFormat: JUnit + searchFolder: $(Common.TestResultsDirectory)\junit + testResultsFiles: '**/*.xml' + mergeTestResults: true + testRunTitle: Windows $(buildArch) + condition: ne(variables['Atom.SkipTests'], 'true') - - script: | - IF NOT EXIST "%ARTIFACT_STAGING_DIR%\crash-reports" MKDIR "%ARTIFACT_STAGING_DIR%\crash-reports" - IF EXIST "%Temp%\Atom Crashes" ( - FOR %%a in ("%Temp%\Atom Crashes\*.dmp") DO XCOPY "%%a" "%ARTIFACT_STAGING_DIR%\crash-reports" /I - ) - displayName: Stage crash reports - condition: failed() - env: - ARTIFACT_STAGING_DIR: $(Build.ArtifactStagingDirectory) + - script: | + IF NOT EXIST "%ARTIFACT_STAGING_DIR%\crash-reports" MKDIR "%ARTIFACT_STAGING_DIR%\crash-reports" + IF EXIST "%Temp%\Atom Crashes" ( + FOR %%a in ("%Temp%\Atom Crashes\*.dmp") DO XCOPY "%%a" "%ARTIFACT_STAGING_DIR%\crash-reports" /I + ) + displayName: Stage crash reports + condition: failed() + env: + ARTIFACT_STAGING_DIR: $(Build.ArtifactStagingDirectory) - - task: PublishBuildArtifacts@1 - inputs: - PathtoPublish: $(Build.ArtifactStagingDirectory)/crash-reports - ArtifactName: crash-reports - displayName: Publish crash reports on non-release branch - condition: and(failed(), eq(variables['ATOM_RELEASES_S3_KEY'], '')) + - task: PublishBuildArtifacts@1 + inputs: + PathtoPublish: $(Build.ArtifactStagingDirectory)/crash-reports + ArtifactName: crash-reports + displayName: Publish crash reports on non-release branch + condition: and(failed(), eq(variables['ATOM_RELEASES_S3_KEY'], '')) - - script: > - node $(Build.SourcesDirectory)\script\vsts\upload-crash-reports.js --crash-report-path "%ARTIFACT_STAGING_DIR%\crash-reports" --s3-path "vsts-artifacts/%BUILD_ID%/" - env: - ATOM_RELEASES_S3_KEY: $(ATOM_RELEASES_S3_KEY) - ATOM_RELEASES_S3_SECRET: $(ATOM_RELEASES_S3_SECRET) - ATOM_RELEASES_S3_BUCKET: $(ATOM_RELEASES_S3_BUCKET) - ARTIFACT_STAGING_DIR: $(Build.ArtifactStagingDirectory) - BUILD_ID: $(Build.BuildId) - displayName: Upload crash reports to S3 on release branch - condition: and(failed(), ne(variables['ATOM_RELEASES_S3_KEY'], '')) + - script: > + node $(Build.SourcesDirectory)\script\vsts\upload-crash-reports.js --crash-report-path "%ARTIFACT_STAGING_DIR%\crash-reports" --s3-path "vsts-artifacts/%BUILD_ID%/" + env: + ATOM_RELEASES_S3_KEY: $(ATOM_RELEASES_S3_KEY) + ATOM_RELEASES_S3_SECRET: $(ATOM_RELEASES_S3_SECRET) + ATOM_RELEASES_S3_BUCKET: $(ATOM_RELEASES_S3_BUCKET) + ARTIFACT_STAGING_DIR: $(Build.ArtifactStagingDirectory) + BUILD_ID: $(Build.BuildId) + displayName: Upload crash reports to S3 on release branch + condition: and(failed(), ne(variables['ATOM_RELEASES_S3_KEY'], '')) - - task: PublishBuildArtifacts@1 - inputs: - PathtoPublish: $(Build.SourcesDirectory)/out/atom-x64-windows.zip - ArtifactName: atom-x64-windows.zip - ArtifactType: Container - displayName: Upload atom-x64-windows.zip - condition: and(succeeded(), ne(variables['Build.Reason'], 'PullRequest'), eq(variables['buildArch'], 'x64')) + - task: PublishBuildArtifacts@1 + inputs: + PathtoPublish: $(Build.SourcesDirectory)/out/atom-x64-windows.zip + ArtifactName: atom-x64-windows.zip + ArtifactType: Container + displayName: Upload atom-x64-windows.zip + condition: and(succeeded(), ne(variables['Build.Reason'], 'PullRequest'), eq(variables['buildArch'], 'x64')) - - task: PublishBuildArtifacts@1 - inputs: - PathtoPublish: $(Build.SourcesDirectory)/out/AtomSetup-x64.exe - ArtifactName: AtomSetup-x64.exe - ArtifactType: Container - displayName: Upload AtomSetup-x64.exe - condition: and(succeeded(), eq(variables['IsReleaseBranch'], 'true'), eq(variables['buildArch'], 'x64')) + - task: PublishBuildArtifacts@1 + inputs: + PathtoPublish: $(Build.SourcesDirectory)/out/AtomSetup-x64.exe + ArtifactName: AtomSetup-x64.exe + ArtifactType: Container + displayName: Upload AtomSetup-x64.exe + condition: and(succeeded(), eq(variables['IsReleaseBranch'], 'true'), eq(variables['buildArch'], 'x64')) - - task: PublishBuildArtifacts@1 - inputs: - PathtoPublish: $(Build.SourcesDirectory)/out/atom-x64-$(ReleaseVersion)-full.nupkg - ArtifactName: atom-x64-$(ReleaseVersion)-full.nupkg - ArtifactType: Container - displayName: Upload atom-x64-$(ReleaseVersion)-full.nupkg - condition: and(succeeded(), eq(variables['IsReleaseBranch'], 'true'), eq(variables['buildArch'], 'x64')) + - task: PublishBuildArtifacts@1 + inputs: + PathtoPublish: $(Build.SourcesDirectory)/out/atom-x64-$(ReleaseVersion)-full.nupkg + ArtifactName: atom-x64-$(ReleaseVersion)-full.nupkg + ArtifactType: Container + displayName: Upload atom-x64-$(ReleaseVersion)-full.nupkg + condition: and(succeeded(), eq(variables['IsReleaseBranch'], 'true'), eq(variables['buildArch'], 'x64')) - - task: PublishBuildArtifacts@1 - inputs: - PathtoPublish: $(Build.SourcesDirectory)/out/atom-x64-$(ReleaseVersion)-delta.nupkg - ArtifactName: atom-x64-$(ReleaseVersion)-delta.nupkg - ArtifactType: Container - displayName: Upload atom-x64-$(ReleaseVersion)-delta.nupkg - condition: and(succeeded(), eq(variables['IsReleaseBranch'], 'true'), eq(variables['buildArch'], 'x64')) - continueOnError: true # Nightly builds don't produce delta packages yet, so don't fail the build + - task: PublishBuildArtifacts@1 + inputs: + PathtoPublish: $(Build.SourcesDirectory)/out/atom-x64-$(ReleaseVersion)-delta.nupkg + ArtifactName: atom-x64-$(ReleaseVersion)-delta.nupkg + ArtifactType: Container + displayName: Upload atom-x64-$(ReleaseVersion)-delta.nupkg + condition: and(succeeded(), eq(variables['IsReleaseBranch'], 'true'), eq(variables['buildArch'], 'x64')) + continueOnError: true # Nightly builds don't produce delta packages yet, so don't fail the build - - task: PublishBuildArtifacts@1 - inputs: - PathtoPublish: $(Build.SourcesDirectory)/out/RELEASES-x64 - ArtifactName: RELEASES-x64 - ArtifactType: Container - displayName: Upload RELEASES-x64 - condition: and(succeeded(), eq(variables['IsReleaseBranch'], 'true'), eq(variables['buildArch'], 'x64')) + - task: PublishBuildArtifacts@1 + inputs: + PathtoPublish: $(Build.SourcesDirectory)/out/RELEASES-x64 + ArtifactName: RELEASES-x64 + ArtifactType: Container + displayName: Upload RELEASES-x64 + condition: and(succeeded(), eq(variables['IsReleaseBranch'], 'true'), eq(variables['buildArch'], 'x64')) - - task: PublishBuildArtifacts@1 - inputs: - PathtoPublish: $(Build.SourcesDirectory)/out/atom-windows.zip - ArtifactName: atom-windows.zip - ArtifactType: Container - displayName: Upload atom-windows.zip - condition: and(succeeded(), ne(variables['Build.Reason'], 'PullRequest'), eq(variables['buildArch'], 'x86')) + - task: PublishBuildArtifacts@1 + inputs: + PathtoPublish: $(Build.SourcesDirectory)/out/atom-windows.zip + ArtifactName: atom-windows.zip + ArtifactType: Container + displayName: Upload atom-windows.zip + condition: and(succeeded(), ne(variables['Build.Reason'], 'PullRequest'), eq(variables['buildArch'], 'x86')) - - task: PublishBuildArtifacts@1 - inputs: - PathtoPublish: $(Build.SourcesDirectory)/out/AtomSetup.exe - ArtifactName: AtomSetup.exe - ArtifactType: Container - displayName: Upload AtomSetup.exe - condition: and(succeeded(), eq(variables['IsReleaseBranch'], 'true'), eq(variables['buildArch'], 'x86')) + - task: PublishBuildArtifacts@1 + inputs: + PathtoPublish: $(Build.SourcesDirectory)/out/AtomSetup.exe + ArtifactName: AtomSetup.exe + ArtifactType: Container + displayName: Upload AtomSetup.exe + condition: and(succeeded(), eq(variables['IsReleaseBranch'], 'true'), eq(variables['buildArch'], 'x86')) - - task: PublishBuildArtifacts@1 - inputs: - PathtoPublish: $(Build.SourcesDirectory)/out/atom-$(ReleaseVersion)-full.nupkg - ArtifactName: atom-$(ReleaseVersion)-full.nupkg - ArtifactType: Container - displayName: Upload atom-$(ReleaseVersion)-full.nupkg - condition: and(succeeded(), eq(variables['IsReleaseBranch'], 'true'), eq(variables['buildArch'], 'x86')) + - task: PublishBuildArtifacts@1 + inputs: + PathtoPublish: $(Build.SourcesDirectory)/out/atom-$(ReleaseVersion)-full.nupkg + ArtifactName: atom-$(ReleaseVersion)-full.nupkg + ArtifactType: Container + displayName: Upload atom-$(ReleaseVersion)-full.nupkg + condition: and(succeeded(), eq(variables['IsReleaseBranch'], 'true'), eq(variables['buildArch'], 'x86')) - - task: PublishBuildArtifacts@1 - inputs: - PathtoPublish: $(Build.SourcesDirectory)/out/atom-$(ReleaseVersion)-delta.nupkg - ArtifactName: atom-$(ReleaseVersion)-delta.nupkg - ArtifactType: Container - displayName: Upload atom-$(ReleaseVersion)-delta.nupkg - condition: and(succeeded(), eq(variables['IsReleaseBranch'], 'true'), eq(variables['buildArch'], 'x86')) - continueOnError: true # Nightly builds don't produce delta packages yet, so don't fail the build + - task: PublishBuildArtifacts@1 + inputs: + PathtoPublish: $(Build.SourcesDirectory)/out/atom-$(ReleaseVersion)-delta.nupkg + ArtifactName: atom-$(ReleaseVersion)-delta.nupkg + ArtifactType: Container + displayName: Upload atom-$(ReleaseVersion)-delta.nupkg + condition: and(succeeded(), eq(variables['IsReleaseBranch'], 'true'), eq(variables['buildArch'], 'x86')) + continueOnError: true # Nightly builds don't produce delta packages yet, so don't fail the build - - task: PublishBuildArtifacts@1 - inputs: - PathtoPublish: $(Build.SourcesDirectory)/out/RELEASES - ArtifactName: RELEASES - ArtifactType: Container - displayName: Upload RELEASES - condition: and(succeeded(), eq(variables['IsReleaseBranch'], 'true'), eq(variables['buildArch'], 'x86')) + - task: PublishBuildArtifacts@1 + inputs: + PathtoPublish: $(Build.SourcesDirectory)/out/RELEASES + ArtifactName: RELEASES + ArtifactType: Container + displayName: Upload RELEASES + condition: and(succeeded(), eq(variables['IsReleaseBranch'], 'true'), eq(variables['buildArch'], 'x86')) diff --git a/script/vsts/pull-requests.yml b/script/vsts/pull-requests.yml index 5c59cec39..c09c2d816 100644 --- a/script/vsts/pull-requests.yml +++ b/script/vsts/pull-requests.yml @@ -1,24 +1,23 @@ -trigger: none # No CI builds, only PR builds +trigger: none # No CI builds, only PR builds resources: containers: - - container: atom-linux-ci - image: atomeditor/atom-linux-ci:latest + - container: atom-linux-ci + image: atomeditor/atom-linux-ci:latest jobs: + - job: GetReleaseVersion + steps: + # This has to be done separately because VSTS inexplicably + # exits the script block after `npm install` completes. + - script: | + cd script\vsts + npm install + displayName: npm install + - script: node script\vsts\get-release-version.js + name: Version -- job: GetReleaseVersion - steps: - # This has to be done separately because VSTS inexplicably - # exits the script block after `npm install` completes. - - script: | - cd script\vsts - npm install - displayName: npm install - - script: node script\vsts\get-release-version.js - name: Version - -# Import OS-specific build definitions -- template: platforms/windows.yml -- template: platforms/macos.yml -- template: platforms/linux.yml + # Import OS-specific build definitions + - template: platforms/windows.yml + - template: platforms/macos.yml + - template: platforms/linux.yml diff --git a/script/vsts/release-branch-build.yml b/script/vsts/release-branch-build.yml index 8333c3d7a..af78e0c75 100644 --- a/script/vsts/release-branch-build.yml +++ b/script/vsts/release-branch-build.yml @@ -1,85 +1,84 @@ trigger: -- master -- 1.* # VSTS only supports wildcards at the end -- electron-* + - master + - 1.* # VSTS only supports wildcards at the end + - electron-* resources: containers: - - container: atom-linux-ci - image: atomeditor/atom-linux-ci:latest + - container: atom-linux-ci + image: atomeditor/atom-linux-ci:latest jobs: + - job: GetReleaseVersion + steps: + # This has to be done separately because VSTS inexplicably + # exits the script block after `npm install` completes. + - script: | + cd script\vsts + npm install + displayName: npm install + - script: node script\vsts\get-release-version.js + name: Version -- job: GetReleaseVersion - steps: - # This has to be done separately because VSTS inexplicably - # exits the script block after `npm install` completes. - - script: | - cd script\vsts - npm install - displayName: npm install - - script: node script\vsts\get-release-version.js - name: Version + # Import OS-specific build definitions. + - template: platforms/windows.yml + - template: platforms/macos.yml + - template: platforms/linux.yml -# Import OS-specific build definitions. -- template: platforms/windows.yml -- template: platforms/macos.yml -- template: platforms/linux.yml + - job: UploadArtifacts + pool: + vmImage: vs2015-win2012r2 # needed for python 2.7 and gyp -- job: UploadArtifacts - pool: - vmImage: vs2015-win2012r2 # needed for python 2.7 and gyp + dependsOn: + - GetReleaseVersion + - Windows + - Linux + - macOS_tests - dependsOn: - - GetReleaseVersion - - Windows - - Linux - - macOS_tests + variables: + ReleaseVersion: $[ dependencies.GetReleaseVersion.outputs['Version.ReleaseVersion'] ] + IsReleaseBranch: $[ dependencies.GetReleaseVersion.outputs['Version.IsReleaseBranch'] ] + IsSignedZipBranch: $[ dependencies.GetReleaseVersion.outputs['Version.IsSignedZipBranch'] ] - variables: - ReleaseVersion: $[ dependencies.GetReleaseVersion.outputs['Version.ReleaseVersion'] ] - IsReleaseBranch: $[ dependencies.GetReleaseVersion.outputs['Version.IsReleaseBranch'] ] - IsSignedZipBranch: $[ dependencies.GetReleaseVersion.outputs['Version.IsSignedZipBranch'] ] + steps: + - task: NodeTool@0 + inputs: + versionSpec: 8.9.3 + displayName: Install Node.js 8.9.3 - steps: - - task: NodeTool@0 - inputs: - versionSpec: 8.9.3 - displayName: Install Node.js 8.9.3 + # This has to be done separately because VSTS inexplicably + # exits the script block after `npm install` completes. + - script: | + cd script\vsts + npm install + env: + GITHUB_TOKEN: $(GITHUB_TOKEN) + displayName: npm install - # This has to be done separately because VSTS inexplicably - # exits the script block after `npm install` completes. - - script: | - cd script\vsts - npm install - env: - GITHUB_TOKEN: $(GITHUB_TOKEN) - displayName: npm install + - task: DownloadBuildArtifacts@0 + inputs: + itemPattern: '**' + downloadType: 'specific' + displayName: Download Release Artifacts - - task: DownloadBuildArtifacts@0 - inputs: - itemPattern: '**' - downloadType: 'specific' - displayName: Download Release Artifacts + - script: | + node $(Build.SourcesDirectory)\script\vsts\upload-artifacts.js --create-github-release --assets-path "$(System.ArtifactsDirectory)" --linux-repo-name "atom-staging" + env: + GITHUB_TOKEN: $(GITHUB_TOKEN) + ATOM_RELEASE_VERSION: $(ReleaseVersion) + ATOM_RELEASES_S3_KEY: $(ATOM_RELEASES_S3_KEY) + ATOM_RELEASES_S3_SECRET: $(ATOM_RELEASES_S3_SECRET) + ATOM_RELEASES_S3_BUCKET: $(ATOM_RELEASES_S3_BUCKET) + PACKAGE_CLOUD_API_KEY: $(PACKAGE_CLOUD_API_KEY) + displayName: Create Draft Release + condition: and(succeeded(), eq(variables['Atom.AutoDraftRelease'], 'true'), eq(variables['IsReleaseBranch'], 'true')) - - script: | - node $(Build.SourcesDirectory)\script\vsts\upload-artifacts.js --create-github-release --assets-path "$(System.ArtifactsDirectory)" --linux-repo-name "atom-staging" - env: - GITHUB_TOKEN: $(GITHUB_TOKEN) - ATOM_RELEASE_VERSION: $(ReleaseVersion) - ATOM_RELEASES_S3_KEY: $(ATOM_RELEASES_S3_KEY) - ATOM_RELEASES_S3_SECRET: $(ATOM_RELEASES_S3_SECRET) - ATOM_RELEASES_S3_BUCKET: $(ATOM_RELEASES_S3_BUCKET) - PACKAGE_CLOUD_API_KEY: $(PACKAGE_CLOUD_API_KEY) - displayName: Create Draft Release - condition: and(succeeded(), eq(variables['Atom.AutoDraftRelease'], 'true'), eq(variables['IsReleaseBranch'], 'true')) - - - script: | - node $(Build.SourcesDirectory)\script\vsts\upload-artifacts.js --assets-path "$(System.ArtifactsDirectory)" --s3-path "vsts-artifacts/$(Build.BuildId)/" - env: - ATOM_RELEASE_VERSION: $(ReleaseVersion) - ATOM_RELEASES_S3_KEY: $(ATOM_RELEASES_S3_KEY) - ATOM_RELEASES_S3_SECRET: $(ATOM_RELEASES_S3_SECRET) - ATOM_RELEASES_S3_BUCKET: $(ATOM_RELEASES_S3_BUCKET) - displayName: Upload CI Artifacts to S3 - condition: and(succeeded(), eq(variables['IsSignedZipBranch'], 'true')) + - script: | + node $(Build.SourcesDirectory)\script\vsts\upload-artifacts.js --assets-path "$(System.ArtifactsDirectory)" --s3-path "vsts-artifacts/$(Build.BuildId)/" + env: + ATOM_RELEASE_VERSION: $(ReleaseVersion) + ATOM_RELEASES_S3_KEY: $(ATOM_RELEASES_S3_KEY) + ATOM_RELEASES_S3_SECRET: $(ATOM_RELEASES_S3_SECRET) + ATOM_RELEASES_S3_BUCKET: $(ATOM_RELEASES_S3_BUCKET) + displayName: Upload CI Artifacts to S3 + condition: and(succeeded(), eq(variables['IsSignedZipBranch'], 'true')) From 5fb69fc7af418590d2c440e0ea0f179d6d6277ef Mon Sep 17 00:00:00 2001 From: Rafael Oleza Date: Wed, 12 Jun 2019 14:01:12 +0200 Subject: [PATCH 06/61] Add .vscode folder to the .gitignore and remove it from the repository --- .gitignore | 1 + .vscode/settings.json | 3 --- 2 files changed, 1 insertion(+), 3 deletions(-) delete mode 100644 .vscode/settings.json diff --git a/.gitignore b/.gitignore index ae3a28e59..5457617c5 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,7 @@ Thumbs.db .project .svn .nvm-version +.vscode node_modules npm-debug.log debug.log diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index 4718ffd99..000000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "eslint.enable": true -} \ No newline at end of file From 31ff493085edf5d652f8a64604deb7ee35eeaf06 Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Wed, 12 Jun 2019 15:12:19 +0200 Subject: [PATCH 07/61] Upgrade find-and-replace@0.218.13 --- package-lock.json | 4 ++-- package.json | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 06d48b26d..1dc15e8c1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2873,8 +2873,8 @@ } }, "find-and-replace": { - "version": "https://www.atom.io/api/packages/find-and-replace/versions/0.218.12/tarball", - "integrity": "sha512-ykte8V/n4L+kLrm1tXK0SODYLtPa9go9O0GOoOC5JOhErYMnTP9MRSygUug1bDkiyWOJ2brYrua4abSz/GPajA==", + "version": "https://www.atom.io/api/packages/find-and-replace/versions/0.218.13/tarball", + "integrity": "sha512-pLWj62GTg/i2p3IKYLz3sbYtY7SDJvR6ZSOFBJuYNsGde6GBxIY5RLuITmgaHISbwt3q/jIy8DVYGbxVpeFm6A==", "requires": { "binary-search": "^1.3.3", "element-resize-detector": "^1.1.10", diff --git a/package.json b/package.json index efd4c2b4b..e3d540ec4 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "etch": "^0.12.6", "event-kit": "^2.5.3", "exception-reporting": "file:packages/exception-reporting", - "find-and-replace": "https://www.atom.io/api/packages/find-and-replace/versions/0.218.12/tarball", + "find-and-replace": "https://www.atom.io/api/packages/find-and-replace/versions/0.218.13/tarball", "find-parent-dir": "^0.3.0", "first-mate": "7.4.0", "focus-trap": "2.4.5", @@ -200,7 +200,7 @@ "dev-live-reload": "file:./packages/dev-live-reload", "encoding-selector": "0.23.9", "exception-reporting": "file:./packages/exception-reporting", - "find-and-replace": "0.218.12", + "find-and-replace": "0.218.13", "fuzzy-finder": "1.13.7", "github": "0.29.0", "git-diff": "file:./packages/git-diff", From 8e836b026ff471ed9983e55199ec0988b23d86d5 Mon Sep 17 00:00:00 2001 From: Rafael Oleza Date: Wed, 12 Jun 2019 11:34:33 +0200 Subject: [PATCH 08/61] Update the nodejs version used on CI systems It now matches the version of Node.js that Electron v3.1 is using. --- .travis.yml | 2 +- appveyor.yml | 2 +- script/vsts/nightly-release.yml | 4 ++-- script/vsts/platforms/linux.yml | 8 ++++++++ script/vsts/platforms/macos.yml | 8 ++++---- script/vsts/platforms/windows.yml | 6 +++--- script/vsts/release-branch-build.yml | 4 ++-- script/vsts/windows-run.js | 2 +- 8 files changed, 22 insertions(+), 14 deletions(-) diff --git a/.travis.yml b/.travis.yml index c4eb14e29..2d4fd2d1c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,7 +16,7 @@ matrix: include: - os: linux dist: trusty - env: NODE_VERSION=8.9.3 DISPLAY=:99.0 CC=clang CXX=clang++ npm_config_clang=1 ATOM_JASMINE_REPORTER=list + env: NODE_VERSION=10.2.1 DISPLAY=:99.0 CC=clang CXX=clang++ npm_config_clang=1 ATOM_JASMINE_REPORTER=list before_install: - '/sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -ac -screen 0 1280x1024x16' diff --git a/appveyor.yml b/appveyor.yml index e3602f329..dbfb62bc1 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -21,7 +21,7 @@ environment: ATOM_DEV_RESOURCE_PATH: c:\projects\atom ATOM_JASMINE_REPORTER: list CI: true - NODE_VERSION: 8.9.3 + NODE_VERSION: 10.2.1 matrix: - TASK: test diff --git a/script/vsts/nightly-release.yml b/script/vsts/nightly-release.yml index 199a6b4ca..d0ae2239b 100644 --- a/script/vsts/nightly-release.yml +++ b/script/vsts/nightly-release.yml @@ -36,8 +36,8 @@ jobs: steps: - task: NodeTool@0 inputs: - versionSpec: 8.9.3 - displayName: Install Node.js 8.9.3 + versionSpec: 10.2.1 + displayName: Install Node.js 10.2.1 # This has to be done separately because VSTS inexplicably # exits the script block after `npm install` completes. diff --git a/script/vsts/platforms/linux.yml b/script/vsts/platforms/linux.yml index 3fbebf6be..b4a68b1fe 100644 --- a/script/vsts/platforms/linux.yml +++ b/script/vsts/platforms/linux.yml @@ -12,6 +12,14 @@ jobs: container: atom-linux-ci steps: + - task: NodeTool@0 + inputs: + versionSpec: 10.2.1 + displayName: Install Node.js 10.2.1 + + - script: npm install --global npm@6.2.0 + displayName: Update npm + - task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1 displayName: Restore node_modules cache inputs: diff --git a/script/vsts/platforms/macos.yml b/script/vsts/platforms/macos.yml index adf99e509..71e119a24 100644 --- a/script/vsts/platforms/macos.yml +++ b/script/vsts/platforms/macos.yml @@ -14,8 +14,8 @@ jobs: steps: - task: NodeTool@0 inputs: - versionSpec: 8.9.3 - displayName: Install Node.js 8.9.3 + versionSpec: 10.2.1 + displayName: Install Node.js 10.2.1 - script: npm install --global npm@6.2.0 displayName: Update npm @@ -112,8 +112,8 @@ jobs: steps: - task: NodeTool@0 inputs: - versionSpec: 8.9.3 - displayName: Install Node.js 8.9.3 + versionSpec: 10.2.1 + displayName: Install Node.js 10.2.1 - task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1 displayName: Restore node_modules cache diff --git a/script/vsts/platforms/windows.yml b/script/vsts/platforms/windows.yml index 9fee7b601..2230a0b74 100644 --- a/script/vsts/platforms/windows.yml +++ b/script/vsts/platforms/windows.yml @@ -21,8 +21,8 @@ jobs: steps: - task: NodeTool@0 inputs: - versionSpec: 8.9.3 - displayName: Install Node.js 8.9.3 + versionSpec: 10.2.1 + displayName: Install Node.js 10.2.1 - script: | ECHO Installing npm-windows-upgrade @@ -61,7 +61,7 @@ jobs: BUILD_ARCH: $(buildArch) CI: true CI_PROVIDER: VSTS - NPM_BIN_PATH: "D:\\a\\_tool\\node\\8.9.3\\x64\\npm.cmd" + NPM_BIN_PATH: "D:\\a\\_tool\\node\\10.2.1\\x64\\npm.cmd" displayName: Bootstrap build environment condition: ne(variables['CacheRestored'], 'true') diff --git a/script/vsts/release-branch-build.yml b/script/vsts/release-branch-build.yml index af78e0c75..52c0dfd25 100644 --- a/script/vsts/release-branch-build.yml +++ b/script/vsts/release-branch-build.yml @@ -43,8 +43,8 @@ jobs: steps: - task: NodeTool@0 inputs: - versionSpec: 8.9.3 - displayName: Install Node.js 8.9.3 + versionSpec: 10.2.1 + displayName: Install Node.js 10.2.1 # This has to be done separately because VSTS inexplicably # exits the script block after `npm install` completes. diff --git a/script/vsts/windows-run.js b/script/vsts/windows-run.js index 2ac8760a3..d8538c287 100644 --- a/script/vsts/windows-run.js +++ b/script/vsts/windows-run.js @@ -5,7 +5,7 @@ const path = require('path'); const download = require('download'); const childProcess = require('child_process'); -const nodeVersion = '8.9.3'; +const nodeVersion = '10.2.1'; const nodeFileName = `node-v${nodeVersion}-win-x86`; const extractedNodePath = `c:\\tmp\\${nodeFileName}`; From 8d9a7aa97869a561eb4a9358807391539d28f2c7 Mon Sep 17 00:00:00 2001 From: Rafael Oleza Date: Wed, 12 Jun 2019 12:55:08 +0200 Subject: [PATCH 09/61] Add yml files to the node_modules cache key This is to prevent reusing the node_modules folder when there are changes in the build system, which can affect the npm install step (like upgrading the Node.js version). --- script/vsts/platforms/linux.yml | 4 ++-- script/vsts/platforms/macos.yml | 6 +++--- script/vsts/platforms/windows.yml | 8 ++++---- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/script/vsts/platforms/linux.yml b/script/vsts/platforms/linux.yml index b4a68b1fe..cd26d081b 100644 --- a/script/vsts/platforms/linux.yml +++ b/script/vsts/platforms/linux.yml @@ -23,7 +23,7 @@ jobs: - task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1 displayName: Restore node_modules cache inputs: - keyfile: 'package.json, script/vsts/platforms/windows.yml, **/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json' + keyfile: 'package.json, script/vsts/platforms/linux.yml, **/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json' targetfolder: '**/node_modules, !**/node_modules/**/node_modules' vstsFeed: 'bae1bc26-220d-43c7-a955-4de039370de2' @@ -37,7 +37,7 @@ jobs: - task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1 displayName: Save node_modules cache inputs: - keyfile: 'package.json, **/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json' + keyfile: 'package.json, script/vsts/platforms/linux.yml, **/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json' targetfolder: '**/node_modules, !**/node_modules/**/node_modules' vstsFeed: 'bae1bc26-220d-43c7-a955-4de039370de2' diff --git a/script/vsts/platforms/macos.yml b/script/vsts/platforms/macos.yml index 71e119a24..042b2652e 100644 --- a/script/vsts/platforms/macos.yml +++ b/script/vsts/platforms/macos.yml @@ -23,7 +23,7 @@ jobs: - task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1 displayName: Restore node_modules cache inputs: - keyfile: 'package.json, **/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json' + keyfile: 'package.json, script/vsts/platforms/macos.yml, **/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json' targetfolder: '**/node_modules, !**/node_modules/**/node_modules' vstsFeed: 'bae1bc26-220d-43c7-a955-4de039370de2' @@ -38,7 +38,7 @@ jobs: - task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1 displayName: Save node_modules cache inputs: - keyfile: 'package.json, **/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json' + keyfile: 'package.json, script/vsts/platforms/macos.yml, **/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json' targetfolder: '**/node_modules, !**/node_modules/**/node_modules' vstsFeed: 'bae1bc26-220d-43c7-a955-4de039370de2' @@ -118,7 +118,7 @@ jobs: - task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1 displayName: Restore node_modules cache inputs: - keyfile: 'package.json, **/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json' + keyfile: 'package.json, script/vsts/platforms/macos.yml, **/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json' targetfolder: '**/node_modules, !**/node_modules/**/node_modules' vstsFeed: 'bae1bc26-220d-43c7-a955-4de039370de2' diff --git a/script/vsts/platforms/windows.yml b/script/vsts/platforms/windows.yml index 2230a0b74..6432cfa17 100644 --- a/script/vsts/platforms/windows.yml +++ b/script/vsts/platforms/windows.yml @@ -42,7 +42,7 @@ jobs: - task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1 displayName: Restore node_modules cache (x64) inputs: - keyfile: 'package.json, **/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json, script/vsts/x64-cache-key' + keyfile: 'package.json, script/vsts/platforms/windows.yml, **/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json, script/vsts/x64-cache-key' targetfolder: '**/node_modules, !**/node_modules/**/node_modules' vstsFeed: 'bae1bc26-220d-43c7-a955-4de039370de2' condition: eq(variables['buildArch'], 'x64') @@ -50,7 +50,7 @@ jobs: - task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1 displayName: Restore node_modules cache (x86) inputs: - keyfile: 'package.json, **/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json, script/vsts/x86-cache-key' + keyfile: 'package.json, script/vsts/platforms/windows.yml, **/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json, script/vsts/x86-cache-key' targetfolder: '**/node_modules, !**/node_modules/**/node_modules' vstsFeed: 'bae1bc26-220d-43c7-a955-4de039370de2' condition: eq(variables['buildArch'], 'x86') @@ -68,7 +68,7 @@ jobs: - task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1 displayName: Save node_modules cache (x64) inputs: - keyfile: 'package.json, **/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json, script/vsts/x64-cache-key' + keyfile: 'package.json, script/vsts/platforms/windows.yml, **/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json, script/vsts/x64-cache-key' targetfolder: '**/node_modules, !**/node_modules/**/node_modules' vstsFeed: 'bae1bc26-220d-43c7-a955-4de039370de2' condition: eq(variables['buildArch'], 'x64') @@ -76,7 +76,7 @@ jobs: - task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1 displayName: Save node_modules cache (x86) inputs: - keyfile: 'package.json, **/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json, script/vsts/x86-cache-key' + keyfile: 'package.json, script/vsts/platforms/windows.yml, **/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json, script/vsts/x86-cache-key' targetfolder: '**/node_modules, !**/node_modules/**/node_modules' vstsFeed: 'bae1bc26-220d-43c7-a955-4de039370de2' condition: eq(variables['buildArch'], 'x86') From 7c3a628336d9722bac758e1d895d089f28f12108 Mon Sep 17 00:00:00 2001 From: Rafael Oleza Date: Wed, 12 Jun 2019 14:25:33 +0200 Subject: [PATCH 10/61] =?UTF-8?q?=E2=AC=86=EF=B8=8F=20fs-admin@0.5.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 152 ++-------------------------------- package.json | 2 +- script/package-lock.json | 170 ++------------------------------------- script/package.json | 2 +- 4 files changed, 17 insertions(+), 309 deletions(-) diff --git a/package-lock.json b/package-lock.json index 06d48b26d..fe398c148 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1727,11 +1727,6 @@ "resolved": "https://registry.npmjs.org/breakable/-/breakable-1.0.0.tgz", "integrity": "sha1-eEp5eRWjjq0nutRWtVcstLuqeME=" }, - "browser-stdout": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", - "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=" - }, "browserslist": { "version": "4.5.6", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.5.6.tgz", @@ -2481,11 +2476,6 @@ "humanize-plus": "^1.8.1" } }, - "diff": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.2.0.tgz", - "integrity": "sha1-yc45Okt8vQsFinJck98pkCeGj/k=" - }, "dom-serializer": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", @@ -2981,69 +2971,17 @@ "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=" }, "fs-admin": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/fs-admin/-/fs-admin-0.1.7.tgz", - "integrity": "sha512-EQNioqUHgtnX9ErMiPuvHCAx0M1VSa9u4oxGF+EGVYBL15Mg5BxEzGBrTAYHUQDDobqw1Yc+6YqZWwSIIe+EwQ==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/fs-admin/-/fs-admin-0.5.0.tgz", + "integrity": "sha512-jU0x86bI6wmhdGGcpaO1rI7EpNx/44cEXPsHqFIRgs9SVsk3HSWn9Zd5fd7bdDw3LcmdnazOcJFK9PZsoNecAA==", "requires": { - "mocha": "^3.5.0", - "nan": "^2.10.0" + "nan": "^2.13.2" }, "dependencies": { - "commander": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", - "requires": { - "graceful-readlink": ">= 1.0.0" - } - }, - "debug": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", - "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", - "requires": { - "ms": "2.0.0" - } - }, - "glob": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", - "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.2", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "mocha": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-3.5.3.tgz", - "integrity": "sha512-/6na001MJWEtYxHOV1WLfsmR4YIynkUEhBwzsb+fk2qmQ3iqsi258l/Q2MWHJMImAcNpZ8DEdYAK72NHoIQ9Eg==", - "requires": { - "browser-stdout": "1.3.0", - "commander": "2.9.0", - "debug": "2.6.8", - "diff": "3.2.0", - "escape-string-regexp": "1.0.5", - "glob": "7.1.1", - "growl": "1.9.2", - "he": "1.1.1", - "json3": "3.3.2", - "lodash.create": "3.1.1", - "mkdirp": "0.5.1", - "supports-color": "3.1.2" - } - }, - "supports-color": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz", - "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=", - "requires": { - "has-flag": "^1.0.0" - } + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==" } } }, @@ -3359,11 +3297,6 @@ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" }, - "graceful-readlink": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=" - }, "grammar-selector": { "version": "file:packages/grammar-selector", "requires": { @@ -3435,11 +3368,6 @@ "sntp": "1.x.x" } }, - "he": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", - "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=" - }, "highlight.js": { "version": "9.12.0", "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.12.0.tgz", @@ -3852,11 +3780,6 @@ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" }, - "json3": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", - "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=" - }, "json5": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/json5/-/json5-0.4.0.tgz", @@ -4355,65 +4278,6 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=" }, - "lodash._baseassign": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", - "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", - "requires": { - "lodash._basecopy": "^3.0.0", - "lodash.keys": "^3.0.0" - } - }, - "lodash._basecopy": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", - "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=" - }, - "lodash._basecreate": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz", - "integrity": "sha1-G8ZhYU2qf8MRt9A78WgGoCE8+CE=" - }, - "lodash._getnative": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", - "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=" - }, - "lodash._isiterateecall": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", - "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=" - }, - "lodash.create": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz", - "integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=", - "requires": { - "lodash._baseassign": "^3.0.0", - "lodash._basecreate": "^3.0.0", - "lodash._isiterateecall": "^3.0.0" - } - }, - "lodash.isarguments": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", - "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=" - }, - "lodash.isarray": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", - "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=" - }, - "lodash.keys": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", - "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", - "requires": { - "lodash._getnative": "^3.0.0", - "lodash.isarguments": "^3.0.0", - "lodash.isarray": "^3.0.0" - } - }, "lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", diff --git a/package.json b/package.json index efd4c2b4b..f8d30ca60 100644 --- a/package.json +++ b/package.json @@ -58,7 +58,7 @@ "find-parent-dir": "^0.3.0", "first-mate": "7.4.0", "focus-trap": "2.4.5", - "fs-admin": "^0.1.7", + "fs-admin": "^0.5.0", "fs-plus": "^3.1.1", "fstream": "0.1.24", "fuzzaldrin": "^2.1", diff --git a/script/package-lock.json b/script/package-lock.json index cfe723743..d723bdaba 100644 --- a/script/package-lock.json +++ b/script/package-lock.json @@ -984,11 +984,6 @@ "resolved": "https://registry.npmjs.org/breakable/-/breakable-1.0.0.tgz", "integrity": "sha1-eEp5eRWjjq0nutRWtVcstLuqeME=" }, - "browser-stdout": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", - "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=" - }, "browserslist": { "version": "3.2.8", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz", @@ -1819,11 +1814,6 @@ "wrappy": "1" } }, - "diff": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.2.0.tgz", - "integrity": "sha1-yc45Okt8vQsFinJck98pkCeGj/k=" - }, "dir-glob": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz", @@ -3501,12 +3491,11 @@ } }, "fs-admin": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/fs-admin/-/fs-admin-0.1.7.tgz", - "integrity": "sha512-EQNioqUHgtnX9ErMiPuvHCAx0M1VSa9u4oxGF+EGVYBL15Mg5BxEzGBrTAYHUQDDobqw1Yc+6YqZWwSIIe+EwQ==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/fs-admin/-/fs-admin-0.5.0.tgz", + "integrity": "sha512-jU0x86bI6wmhdGGcpaO1rI7EpNx/44cEXPsHqFIRgs9SVsk3HSWn9Zd5fd7bdDw3LcmdnazOcJFK9PZsoNecAA==", "requires": { - "mocha": "^3.5.0", - "nan": "^2.10.0" + "nan": "^2.13.2" } }, "fs-constants": { @@ -3806,21 +3795,11 @@ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" }, - "graceful-readlink": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=" - }, "grapheme-splitter": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==" }, - "growl": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", - "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=" - }, "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", @@ -3920,11 +3899,6 @@ } } }, - "he": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", - "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=" - }, "home-or-tmp": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-1.0.0.tgz", @@ -4584,11 +4558,6 @@ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" }, - "json3": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", - "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=" - }, "json5": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/json5/-/json5-0.4.0.tgz", @@ -4808,35 +4777,6 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==" }, - "lodash._baseassign": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", - "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", - "requires": { - "lodash._basecopy": "^3.0.0", - "lodash.keys": "^3.0.0" - } - }, - "lodash._basecopy": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", - "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=" - }, - "lodash._basecreate": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz", - "integrity": "sha1-G8ZhYU2qf8MRt9A78WgGoCE8+CE=" - }, - "lodash._getnative": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", - "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=" - }, - "lodash._isiterateecall": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", - "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=" - }, "lodash._reinterpolate": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", @@ -4847,31 +4787,11 @@ "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=" }, - "lodash.create": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz", - "integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=", - "requires": { - "lodash._baseassign": "^3.0.0", - "lodash._basecreate": "^3.0.0", - "lodash._isiterateecall": "^3.0.0" - } - }, "lodash.get": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" }, - "lodash.isarguments": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", - "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=" - }, - "lodash.isarray": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", - "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=" - }, "lodash.isobject": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-3.0.2.tgz", @@ -4882,16 +4802,6 @@ "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" }, - "lodash.keys": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", - "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", - "requires": { - "lodash._getnative": "^3.0.0", - "lodash.isarguments": "^3.0.0", - "lodash.isarray": "^3.0.0" - } - }, "lodash.merge": { "version": "4.6.1", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.1.tgz", @@ -5210,72 +5120,6 @@ } } }, - "mocha": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-3.5.3.tgz", - "integrity": "sha512-/6na001MJWEtYxHOV1WLfsmR4YIynkUEhBwzsb+fk2qmQ3iqsi258l/Q2MWHJMImAcNpZ8DEdYAK72NHoIQ9Eg==", - "requires": { - "browser-stdout": "1.3.0", - "commander": "2.9.0", - "debug": "2.6.8", - "diff": "3.2.0", - "escape-string-regexp": "1.0.5", - "glob": "7.1.1", - "growl": "1.9.2", - "he": "1.1.1", - "json3": "3.3.2", - "lodash.create": "3.1.1", - "mkdirp": "0.5.1", - "supports-color": "3.1.2" - }, - "dependencies": { - "commander": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", - "requires": { - "graceful-readlink": ">= 1.0.0" - } - }, - "debug": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", - "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", - "requires": { - "ms": "2.0.0" - } - }, - "glob": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", - "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.2", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "supports-color": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz", - "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=", - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -5287,9 +5131,9 @@ "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" }, "nan": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", - "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==" + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==" }, "nanomatch": { "version": "1.2.13", diff --git a/script/package.json b/script/package.json index 2cdedfcb0..cef1feff4 100644 --- a/script/package.json +++ b/script/package.json @@ -23,7 +23,7 @@ "eslint-plugin-prettier": "^3.0.1", "eslint-plugin-promise": "^4.1.1", "eslint-plugin-standard": "^4.0.0", - "fs-admin": "^0.1.5", + "fs-admin": "^0.5.0", "fs-extra": "0.30.0", "glob": "7.0.3", "joanna": "0.0.10", From 898c12fe21ad35015793f6b1479cf18713f349ba Mon Sep 17 00:00:00 2001 From: Jason Rudolph Date: Wed, 12 Jun 2019 10:23:18 -0400 Subject: [PATCH 11/61] Rely on Azure Pipelines instead of AppVeyor for Windows builds --- README.md | 2 +- appveyor.yml | 95 ---------------------- docs/build-instructions/build-status.md | 2 +- script/lib/include-path-in-packaged-app.js | 1 - 4 files changed, 2 insertions(+), 98 deletions(-) delete mode 100644 appveyor.yml diff --git a/README.md b/README.md index 4fa635259..f3ffb0ebb 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Atom -[![Build status](https://dev.azure.com/github/Atom/_apis/build/status/Atom%20Production%20Branches?branchName=master)](https://dev.azure.com/github/Atom/_build/latest?definitionId=32&branchName=master) [![Linux Build Status](https://travis-ci.org/atom/atom.svg?branch=master)](https://travis-ci.org/atom/atom) [![Windows Build Status](https://ci.appveyor.com/api/projects/status/1tkktwh654w07eim?svg=true)](https://ci.appveyor.com/project/Atom/atom) +[![Build status](https://dev.azure.com/github/Atom/_apis/build/status/Atom%20Production%20Branches?branchName=master)](https://dev.azure.com/github/Atom/_build/latest?definitionId=32&branchName=master) [![Linux Build Status](https://travis-ci.org/atom/atom.svg?branch=master)](https://travis-ci.org/atom/atom) [![Dependency Status](https://david-dm.org/atom/atom.svg)](https://david-dm.org/atom/atom) [![Join the Atom Community on Slack](https://atom-slack.herokuapp.com/badge.svg)](https://atom-slack.herokuapp.com) diff --git a/appveyor.yml b/appveyor.yml deleted file mode 100644 index e3602f329..000000000 --- a/appveyor.yml +++ /dev/null @@ -1,95 +0,0 @@ -image: Visual Studio 2015 - -version: '{build}' - -skip_tags: true -clone_folder: c:\projects\atom -clone_depth: 10 - -branches: - only: - - master - - /^[0-9.]+-releases$/ - - /^electron-[0-9.]+$/ - -platform: - - x64 - - x86 - -environment: - global: - ATOM_DEV_RESOURCE_PATH: c:\projects\atom - ATOM_JASMINE_REPORTER: list - CI: true - NODE_VERSION: 8.9.3 - - matrix: - - TASK: test - - TASK: installer - -matrix: - fast_finish: true - exclude: - - platform: x86 - TASK: test - -install: - - SET PATH=C:\Program Files\Atom\resources\cli;%PATH% - - ps: Install-Product node $env:NODE_VERSION $env:PLATFORM - - npm install --global npm@6.2.0 - -build_script: - - CD %APPVEYOR_BUILD_FOLDER% - - IF NOT EXIST C:\tmp MKDIR C:\tmp - - SET SQUIRREL_TEMP=C:\tmp - - IF [%APPVEYOR_REPO_BRANCH:~-9%]==[-releases] IF NOT DEFINED APPVEYOR_PULL_REQUEST_NUMBER SET IS_RELEASE_BRANCH=true - - IF [%APPVEYOR_REPO_BRANCH%]==[master] IF NOT DEFINED APPVEYOR_PULL_REQUEST_NUMBER SET IS_SIGNED_ZIP_BRANCH=true - - IF [%APPVEYOR_REPO_BRANCH:~0,9%]==[electron-] IF NOT DEFINED APPVEYOR_PULL_REQUEST_NUMBER SET IS_SIGNED_ZIP_BRANCH=true - - IF [%TASK%]==[installer] ( - IF [%IS_RELEASE_BRANCH%]==[true] ( - ECHO Building on release branch - Creating production artifacts && - script\build.cmd --code-sign --compress-artifacts --create-windows-installer - ) ELSE ( - IF [%IS_SIGNED_ZIP_BRANCH%]==[true] ( - ECHO Building on %APPVEYOR_REPO_BRANCH% branch - Creating signed zips && - script\build.cmd --code-sign --compress-artifacts - ) ELSE ( - ECHO Skipping installer build for non-release/non-master branch - ) - ) - ) ELSE ( - ECHO Test build only - Not creating artifacts && - script\build.cmd - ) - -test_script: - - IF [%TASK%]==[test] ( - script\lint.cmd && - script\test.cmd - ) ELSE ( - ECHO Skipping tests on installer build matrix row - ) - -deploy: off -artifacts: - - path: out\AtomSetup.exe - name: AtomSetup.exe - - path: out\atom-windows.zip - name: atom-windows.zip - - path: out\RELEASES - name: RELEASES - - path: out\AtomSetup-x64.exe - name: AtomSetup-x64.exe - - path: out\atom-x64-windows.zip - name: atom-x64-windows.zip - - path: out\RELEASES-x64 - name: RELEASES-x64 - - path: out\atom-*-delta.nupkg - name: atom-delta.nupkg - - path: out\atom-*-full.nupkg - name: atom-full.nupkg - -cache: - - '%APPVEYOR_BUILD_FOLDER%\electron' - - '%USERPROFILE%\.atom\.apm' - - '%USERPROFILE%\.atom\compile-cache' diff --git a/docs/build-instructions/build-status.md b/docs/build-instructions/build-status.md index a6f7fdfd6..2dc9d3b02 100644 --- a/docs/build-instructions/build-status.md +++ b/docs/build-instructions/build-status.md @@ -2,7 +2,7 @@ | System | Travis | AppVeyor/Win | VSTS | Dependencies | |--------|--------|--------------|------------|--------------| -| [Atom](https://github.com/atom/atom) | [![Travis Build Status](https://travis-ci.org/atom/atom.svg?branch=master)](https://travis-ci.org/atom/atom) | [![AppVeyor/Wi Build Status](https://ci.appveyor.com/api/projects/status/1tkktwh654w07eim?svg=true)](https://ci.appveyor.com/project/Atom/atom) | [![Build status](https://github.visualstudio.com/Atom/_apis/build/status/Atom%20Production%20Branches?branch=master)](https://github.visualstudio.com/Atom/_build/latest?definitionId=32&branch=master) | [![Dependency Status](https://david-dm.org/atom/atom.svg)](https://david-dm.org/atom/atom) | +| [Atom](https://github.com/atom/atom) | [![Travis Build Status](https://travis-ci.org/atom/atom.svg?branch=master)](https://travis-ci.org/atom/atom) | | [![Build status](https://github.visualstudio.com/Atom/_apis/build/status/Atom%20Production%20Branches?branch=master)](https://github.visualstudio.com/Atom/_build/latest?definitionId=32&branch=master) | [![Dependency Status](https://david-dm.org/atom/atom.svg)](https://david-dm.org/atom/atom) | | [APM](https://github.com/atom/apm) | [![Travis Build Status](https://travis-ci.org/atom/apm.svg?branch=master)](https://travis-ci.org/atom/apm) | [![AppVeyor/Wi Build Status](https://ci.appveyor.com/api/projects/status/j6ixw374a397ugkb/branch/master?svg=true)](https://ci.appveyor.com/project/Atom/apm/branch/master) | | [![Dependency Status](https://david-dm.org/atom/apm.svg)](https://david-dm.org/atom/apm) | | [Electron](https://github.com/electron/electron) | [![Travis Build Status](https://travis-ci.org/electron/electron.svg?branch=master)](https://travis-ci.org/electron/electron) | [![AppVeyor/Wi Build Status](https://ci.appveyor.com/api/projects/status/kvxe4byi7jcxbe26/branch/master?svg=true)](https://ci.appveyor.com/project/Atom/electron) | | [![Dependency Status](https://david-dm.org/electron/electron/dev-status.svg)](https://david-dm.org/electron/electron) diff --git a/script/lib/include-path-in-packaged-app.js b/script/lib/include-path-in-packaged-app.js index 3bb80fd6c..f8caac357 100644 --- a/script/lib/include-path-in-packaged-app.js +++ b/script/lib/include-path-in-packaged-app.js @@ -16,7 +16,6 @@ const EXCLUDE_REGEXPS_SOURCES = [ escapeRegExp('.npmignore'), escapeRegExp('.pairs'), escapeRegExp('.travis.yml'), - escapeRegExp('appveyor.yml'), escapeRegExp('.idea'), escapeRegExp('.editorconfig'), escapeRegExp('.lint'), From 0ba1b422668c26f6e5955fb8e2aeafa5c427757b Mon Sep 17 00:00:00 2001 From: Rafael Oleza Date: Wed, 12 Jun 2019 16:50:48 +0200 Subject: [PATCH 12/61] =?UTF-8?q?=E2=AC=86=EF=B8=8F=20language-json@1.0.4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 4 ++-- package.json | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 06d48b26d..fbbb0d249 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4031,8 +4031,8 @@ } }, "language-json": { - "version": "https://www.atom.io/api/packages/language-json/versions/1.0.3/tarball", - "integrity": "sha512-EQ34IMibK2hcchIWHOyu9pYZS9N+EFlYaw7YRZq0M7AJCIs/FSFLjbNxb+jRmBNqsfioL9bDWFh7lupLrK9Bnw==", + "version": "https://www.atom.io/api/packages/language-json/versions/1.0.4/tarball", + "integrity": "sha512-NNFpsa8vNwB7W3iZp0oljMusKR+kGiqDlJNa31G6Z+rh+VNshv3cbih7oiQYXD6ZkaMtTJyFUBdQVOw9yiQiPw==", "requires": { "tree-sitter-json": "^0.14.0" } diff --git a/package.json b/package.json index efd4c2b4b..0ceed0baf 100644 --- a/package.json +++ b/package.json @@ -89,7 +89,7 @@ "language-hyperlink": "https://www.atom.io/api/packages/language-hyperlink/versions/0.17.1/tarball", "language-java": "https://www.atom.io/api/packages/language-java/versions/0.31.3/tarball", "language-javascript": "https://www.atom.io/api/packages/language-javascript/versions/0.130.0/tarball", - "language-json": "https://www.atom.io/api/packages/language-json/versions/1.0.3/tarball", + "language-json": "https://www.atom.io/api/packages/language-json/versions/1.0.4/tarball", "language-less": "https://www.atom.io/api/packages/language-less/versions/0.34.3/tarball", "language-make": "https://www.atom.io/api/packages/language-make/versions/0.23.0/tarball", "language-mustache": "https://www.atom.io/api/packages/language-mustache/versions/0.14.5/tarball", @@ -241,7 +241,7 @@ "language-hyperlink": "0.17.1", "language-java": "0.31.3", "language-javascript": "0.130.0", - "language-json": "1.0.3", + "language-json": "1.0.4", "language-less": "0.34.3", "language-make": "0.23.0", "language-mustache": "0.14.5", From 21bbfe209a57c998e4e7392a70e1d628b13fca55 Mon Sep 17 00:00:00 2001 From: Jason Rudolph Date: Wed, 12 Jun 2019 13:10:27 -0400 Subject: [PATCH 13/61] Only use AppVeyor on release branches --- appveyor.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index dbfb62bc1..11c640117 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -8,9 +8,7 @@ clone_depth: 10 branches: only: - - master - /^[0-9.]+-releases$/ - - /^electron-[0-9.]+$/ platform: - x64 From 380f6f8d2f2397301444bbefc2698d5850408ad0 Mon Sep 17 00:00:00 2001 From: Rafael Oleza Date: Wed, 12 Jun 2019 21:03:20 +0200 Subject: [PATCH 14/61] =?UTF-8?q?=E2=AC=86=EF=B8=8F=20tree-sitter@0.15.2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 12 ++++++------ package.json | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index b4a8d7326..6cf29a5e7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6532,18 +6532,18 @@ "integrity": "sha512-4hjqbObwlh2dLyW4tcz0Ymw0ggoaVDMveUB9w8kFSQScdRLo0gxO9J7WFcUBo+W3C1TLdFIEwNOWebgZZ0RH9Q==" }, "tree-sitter": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/tree-sitter/-/tree-sitter-0.15.0.tgz", - "integrity": "sha512-3CDZ7X4hSJgMXOo8WWhYIwS06hFDmI3x6/3rX+i+LP4ykL3UWVt5TgNKYjAkgBxbpFEHGkaSBe5LRQu5LHOQ3A==", + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/tree-sitter/-/tree-sitter-0.15.2.tgz", + "integrity": "sha512-wzUyNy/ela+G4uuZBBCswdVHYZhreKESwkEav0dx/aagTIB367XRnHYu+jUDPANxCHsG7yyP0ESP5zwNd6fyNA==", "requires": { "nan": "^2.13.2", "prebuild-install": "^5.0.0" }, "dependencies": { "nan": { - "version": "2.13.2", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.13.2.tgz", - "integrity": "sha512-TghvYc72wlMGMVMluVo9WRJc0mB8KxxF/gZ4YYFy7V2ZQX9l7rgbPg7vjS9mt6U5HXODVFVI2bOduCzwOMv/lw==" + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==" } } }, diff --git a/package.json b/package.json index 745dee541..6fb7b62b5 100644 --- a/package.json +++ b/package.json @@ -157,7 +157,7 @@ "temp": "^0.9.0", "text-buffer": "13.17.0", "timecop": "https://www.atom.io/api/packages/timecop/versions/0.36.2/tarball", - "tree-sitter": "0.15.0", + "tree-sitter": "0.15.2", "tree-sitter-css": "^0.13.7", "tree-view": "https://www.atom.io/api/packages/tree-view/versions/0.228.0/tarball", "typescript-simple": "1.0.0", From 8e4562f6411af72a22bde1d2fbf227742648cfb4 Mon Sep 17 00:00:00 2001 From: Max Brunsfeld Date: Wed, 12 Jun 2019 17:16:00 -0700 Subject: [PATCH 15/61] :arrow_up: tree-sitter to 0.15.4 --- package-lock.json | 6 +++--- package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6cf29a5e7..b0e729f41 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6532,9 +6532,9 @@ "integrity": "sha512-4hjqbObwlh2dLyW4tcz0Ymw0ggoaVDMveUB9w8kFSQScdRLo0gxO9J7WFcUBo+W3C1TLdFIEwNOWebgZZ0RH9Q==" }, "tree-sitter": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/tree-sitter/-/tree-sitter-0.15.2.tgz", - "integrity": "sha512-wzUyNy/ela+G4uuZBBCswdVHYZhreKESwkEav0dx/aagTIB367XRnHYu+jUDPANxCHsG7yyP0ESP5zwNd6fyNA==", + "version": "0.15.4", + "resolved": "https://registry.npmjs.org/tree-sitter/-/tree-sitter-0.15.4.tgz", + "integrity": "sha512-EgZr6zJevERT/gl7dh2Z2sO0WKHSf8rLTJS38sLe0cTxqxTQ785VxemVCGBHzp8zZ4406sh+ORlB1z5HyORbYw==", "requires": { "nan": "^2.13.2", "prebuild-install": "^5.0.0" diff --git a/package.json b/package.json index 6fb7b62b5..bd808d558 100644 --- a/package.json +++ b/package.json @@ -157,7 +157,7 @@ "temp": "^0.9.0", "text-buffer": "13.17.0", "timecop": "https://www.atom.io/api/packages/timecop/versions/0.36.2/tarball", - "tree-sitter": "0.15.2", + "tree-sitter": "0.15.4", "tree-sitter-css": "^0.13.7", "tree-view": "https://www.atom.io/api/packages/tree-view/versions/0.228.0/tarball", "typescript-simple": "1.0.0", From 29682804ec86cec8ace2744ded0f112d855657d7 Mon Sep 17 00:00:00 2001 From: Winston Liu <50Wliu@users.noreply.github.com> Date: Thu, 13 Jun 2019 00:02:20 -0400 Subject: [PATCH 16/61] :arrow_up: apm@2.3.1 to fix header download URL --- apm/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apm/package.json b/apm/package.json index aa8349589..8b8da2214 100644 --- a/apm/package.json +++ b/apm/package.json @@ -6,6 +6,6 @@ "url": "https://github.com/atom/atom.git" }, "dependencies": { - "atom-package-manager": "2.3.0" + "atom-package-manager": "2.3.1" } } From 36d1bcb6ce0ff5a8e326ce5d8fd2dfd49231de14 Mon Sep 17 00:00:00 2001 From: Winston Liu <50Wliu@users.noreply.github.com> Date: Thu, 13 Jun 2019 00:14:18 -0400 Subject: [PATCH 17/61] Update package-lock --- apm/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apm/package-lock.json b/apm/package-lock.json index 77c3b7e06..c21d2488a 100644 --- a/apm/package-lock.json +++ b/apm/package-lock.json @@ -4,9 +4,9 @@ "lockfileVersion": 1, "dependencies": { "atom-package-manager": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/atom-package-manager/-/atom-package-manager-2.3.0.tgz", - "integrity": "sha512-WI2HaA19A4rKyaNnaoOE7vIlHBiwXQGq+/Kw1Z38LARvYOuWi7BK2GX0cZYqi4I5Yh5elpxrl01M2QmL09saNg==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/atom-package-manager/-/atom-package-manager-2.3.1.tgz", + "integrity": "sha512-CAys5szBJbqhkizMm32o0+uOTpT9rgPh9TdFX0R//usjOAgDr8iJ7oGNfULPvJzaKnBhrokuniKNumAxVyuauA==", "requires": { "@atom/plist": "0.4.4", "asar-require": "0.3.0", From 961599261eaf6a303552de2d846cdd46d055211b Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Thu, 13 Jun 2019 10:27:35 +0200 Subject: [PATCH 18/61] Update nsfw@1.0.24 to fix memory leaks on Linux --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index bd808d558..b5db761e1 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ "license": "MIT", "electronVersion": "3.1.10", "dependencies": { - "@atom/nsfw": "1.0.23", + "@atom/nsfw": "1.0.24", "@atom/source-map-support": "^0.3.4", "@atom/watcher": "1.3.1", "about": "file:packages/about", From 6e61c4de558c1b802b5058a99b5746c89495ebf1 Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Thu, 13 Jun 2019 10:32:06 +0200 Subject: [PATCH 19/61] Update package-lock.json --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index b0e729f41..85369853c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -29,9 +29,9 @@ } }, "@atom/nsfw": { - "version": "1.0.23", - "resolved": "https://registry.npmjs.org/@atom/nsfw/-/nsfw-1.0.23.tgz", - "integrity": "sha512-mo6G3eYzQzmdUWjCHO/2a4dWPPYYOZjAXjA4QtLGVXlnTMn08gC7JUEuztjAld1Qk+MYyV613O3ACj8xZ4KEog==", + "version": "1.0.24", + "resolved": "https://registry.npmjs.org/@atom/nsfw/-/nsfw-1.0.24.tgz", + "integrity": "sha512-/pv/m+HRX/E8qvN+lUijsLWCcx24503l4J4Wf2mfVqaXxexYIKVMGZS1ZikX0Vf507sUbtD7600JiBK/RBaRhg==", "requires": { "fs-extra": "^7.0.0", "nan": "^2.10.0" From 6d9f6befd2301e84c5824337f00f752227c772c1 Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Thu, 13 Jun 2019 16:36:55 +0200 Subject: [PATCH 20/61] Increase timeout for atom-application.test.js on CI On Azure and Travis, we recently started observing a few test failures in atom-application.test.js. After staring at those tests for a bit, it doesn't seem like they are failing due to a race condition. Instead, it is possible that these tests are simply timing out due to CI containers sometimes being overloaded and, thus, slower. I tested this hypothesis locally by running tests on a VM while stress-testing the host machine. Tests would eventually have passed, but they timed out before having the chance to do so. This commit increases the timeout on CI to 10 seconds for `AtomApplication` tests in an attempt to fix the spurious failures we were observing. This is similar to what we've historically done for renderer process tests (see https://github.com/atom/atom/blob/7faea50190a8c6738b6ecee105645ee274a32b6e/spec/spec-helper.coffee#L50). --- spec/main-process/atom-application.test.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/spec/main-process/atom-application.test.js b/spec/main-process/atom-application.test.js index be5dbd1c1..bf04be3e0 100644 --- a/spec/main-process/atom-application.test.js +++ b/spec/main-process/atom-application.test.js @@ -47,6 +47,10 @@ const { describe('AtomApplication', function() { let scenario, sinon; + if (process.env.CI) { + this.timeout(10 * 1000); + } + beforeEach(async function() { sinon = sandbox.create(); scenario = await LaunchScenario.create(sinon); From 83119fb3e4ab61a59f1e6c43281171b55cf53890 Mon Sep 17 00:00:00 2001 From: Jason Rudolph Date: Thu, 13 Jun 2019 11:14:31 -0400 Subject: [PATCH 21/61] Update onDidChangeFiles spec to use real clock Prior to this change, the spec was using the fake clock, which was preventing the `setTimeout` from ever calling the `expire` function. Co-Authored-By: Antonio Scandurra --- spec/project-spec.js | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/project-spec.js b/spec/project-spec.js index 48d85f026..f123dc84a 100644 --- a/spec/project-spec.js +++ b/spec/project-spec.js @@ -1081,6 +1081,7 @@ describe('Project', () => { }; it('reports filesystem changes within project paths', () => { + jasmine.useRealClock(); const dirOne = temp.mkdirSync('atom-spec-project-one'); const fileOne = path.join(dirOne, 'file-one.txt'); const fileTwo = path.join(dirOne, 'file-two.txt'); From f9405cb25d704af13e6647ea467c9a23421576c3 Mon Sep 17 00:00:00 2001 From: Jason Rudolph Date: Thu, 13 Jun 2019 11:16:53 -0400 Subject: [PATCH 22/61] Fix test initialization If multiple specs were to populate the events var, one spec would pollute the others. So, let's reset the events var at the beginning of each spec. Co-Authored-By: Antonio Scandurra --- spec/project-spec.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/spec/project-spec.js b/spec/project-spec.js index f123dc84a..4f69a7f6a 100644 --- a/spec/project-spec.js +++ b/spec/project-spec.js @@ -1042,11 +1042,12 @@ describe('Project', () => { }); describe('.onDidChangeFiles()', () => { - let sub = []; - const events = []; + let sub; + let events; let checkCallback = () => {}; beforeEach(() => { + events = [] sub = atom.project.onDidChangeFiles(incoming => { events.push(...incoming); checkCallback(); From c7d17f6233cc576f185f6d59ad499f4ce5c7318b Mon Sep 17 00:00:00 2001 From: Jason Rudolph Date: Thu, 13 Jun 2019 11:23:30 -0400 Subject: [PATCH 23/61] If spec succeeds, clear the timeout Prior to this change, the `console.error` statement _always_ ran, regardless of whether the promise resolved successfully. With this change, we clear the timeout in the scenario where the promise resolves successfully. Co-Authored-By: Antonio Scandurra --- spec/project-spec.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/spec/project-spec.js b/spec/project-spec.js index 4f69a7f6a..3017aaf92 100644 --- a/spec/project-spec.js +++ b/spec/project-spec.js @@ -1059,11 +1059,13 @@ describe('Project', () => { const waitForEvents = paths => { const remaining = new Set(paths.map(p => fs.realpathSync(p))); return new Promise((resolve, reject) => { + let expireTimeoutId; checkCallback = () => { for (let event of events) { remaining.delete(event.path); } if (remaining.size === 0) { + clearTimeout(expireTimeoutId) resolve(); } }; @@ -1076,8 +1078,8 @@ describe('Project', () => { ); }; + expireTimeoutId = setTimeout(expire, 2000); checkCallback(); - setTimeout(expire, 2000); }); }; From 9fa32c7c22b2aa8443205a262867a16a1e5c2d98 Mon Sep 17 00:00:00 2001 From: Jason Rudolph Date: Thu, 13 Jun 2019 11:35:12 -0400 Subject: [PATCH 24/61] Convert spec to use async/await Co-Authored-By: Antonio Scandurra --- spec/project-spec.js | 27 ++++++++++----------------- 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/spec/project-spec.js b/spec/project-spec.js index 3017aaf92..3da6e150a 100644 --- a/spec/project-spec.js +++ b/spec/project-spec.js @@ -1083,7 +1083,7 @@ describe('Project', () => { }); }; - it('reports filesystem changes within project paths', () => { + it('reports filesystem changes within project paths', async () => { jasmine.useRealClock(); const dirOne = temp.mkdirSync('atom-spec-project-one'); const fileOne = path.join(dirOne, 'file-one.txt'); @@ -1092,24 +1092,17 @@ describe('Project', () => { const fileThree = path.join(dirTwo, 'file-three.txt'); // Ensure that all preexisting watchers are stopped - waitsForPromise(() => stopAllWatchers()); + await stopAllWatchers(); - runs(() => atom.project.setPaths([dirOne])); - waitsForPromise(() => atom.project.getWatcherPromise(dirOne)); + atom.project.setPaths([dirOne]); + await atom.project.getWatcherPromise(dirOne); - runs(() => { - expect(atom.project.watcherPromisesByPath[dirTwo]).toEqual(undefined); - - fs.writeFileSync(fileThree, 'three\n'); - fs.writeFileSync(fileTwo, 'two\n'); - fs.writeFileSync(fileOne, 'one\n'); - }); - - waitsForPromise(() => waitForEvents([fileOne, fileTwo])); - - runs(() => - expect(events.some(event => event.path === fileThree)).toBeFalsy() - ); + expect(atom.project.watcherPromisesByPath[dirTwo]).toEqual(undefined); + fs.writeFileSync(fileThree, 'three\n'); + fs.writeFileSync(fileTwo, 'two\n'); + fs.writeFileSync(fileOne, 'one\n'); + await waitForEvents([fileOne, fileTwo]); + expect(events.some(event => event.path === fileThree)).toBeFalsy() }); }); From d03d2772b56ac85144fa1ef1617d79e6345c4bf8 Mon Sep 17 00:00:00 2001 From: Jason Rudolph Date: Thu, 13 Jun 2019 11:45:24 -0400 Subject: [PATCH 25/61] :shirt: Co-Authored-By: Antonio Scandurra --- spec/project-spec.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/spec/project-spec.js b/spec/project-spec.js index 3da6e150a..a812418c7 100644 --- a/spec/project-spec.js +++ b/spec/project-spec.js @@ -1047,7 +1047,7 @@ describe('Project', () => { let checkCallback = () => {}; beforeEach(() => { - events = [] + events = []; sub = atom.project.onDidChangeFiles(incoming => { events.push(...incoming); checkCallback(); @@ -1065,7 +1065,7 @@ describe('Project', () => { remaining.delete(event.path); } if (remaining.size === 0) { - clearTimeout(expireTimeoutId) + clearTimeout(expireTimeoutId); resolve(); } }; @@ -1102,7 +1102,7 @@ describe('Project', () => { fs.writeFileSync(fileTwo, 'two\n'); fs.writeFileSync(fileOne, 'one\n'); await waitForEvents([fileOne, fileTwo]); - expect(events.some(event => event.path === fileThree)).toBeFalsy() + expect(events.some(event => event.path === fileThree)).toBeFalsy(); }); }); From a0742f8e9da8ebf5ed3848c10f511fc693ff4269 Mon Sep 17 00:00:00 2001 From: Jason Rudolph Date: Thu, 13 Jun 2019 11:52:47 -0400 Subject: [PATCH 26/61] Disable flaky spec on Windows until we can identify a proper fix --- spec/project-spec.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/spec/project-spec.js b/spec/project-spec.js index a812418c7..dec6e9d7f 100644 --- a/spec/project-spec.js +++ b/spec/project-spec.js @@ -1084,6 +1084,8 @@ describe('Project', () => { }; it('reports filesystem changes within project paths', async () => { + if (process.platform === 'win32') return; // Flaky results on Windows: https://github.com/atom/atom/issues/19507 + jasmine.useRealClock(); const dirOne = temp.mkdirSync('atom-spec-project-one'); const fileOne = path.join(dirOne, 'file-one.txt'); From 00e3aa87210f87d3c42cdbe5a2881a44b64e12cd Mon Sep 17 00:00:00 2001 From: Landon Abney Date: Thu, 13 Jun 2019 14:31:00 -0700 Subject: [PATCH 27/61] :fire: Use organization level templates Move to the organization level templates for issues and pull requests, removing one of the many copies we have floating around. --- .github/ISSUE_TEMPLATE/Feature_request.md | 41 ----------- .github/ISSUE_TEMPLATE/bug_report.md | 46 ------------ .github/PULL_REQUEST_TEMPLATE/bug_fix.md | 59 ---------------- .../PULL_REQUEST_TEMPLATE/documentation.md | 30 -------- .../PULL_REQUEST_TEMPLATE/feature_change.md | 70 ------------------- .../performance_improvement.md | 55 --------------- .github/lock.yml | 2 +- CONTRIBUTING.md | 6 +- ISSUE_TEMPLATE.md | 40 ----------- PULL_REQUEST_TEMPLATE.md | 8 +-- 10 files changed, 8 insertions(+), 349 deletions(-) delete mode 100644 .github/ISSUE_TEMPLATE/Feature_request.md delete mode 100644 .github/ISSUE_TEMPLATE/bug_report.md delete mode 100644 .github/PULL_REQUEST_TEMPLATE/bug_fix.md delete mode 100644 .github/PULL_REQUEST_TEMPLATE/documentation.md delete mode 100644 .github/PULL_REQUEST_TEMPLATE/feature_change.md delete mode 100644 .github/PULL_REQUEST_TEMPLATE/performance_improvement.md delete mode 100644 ISSUE_TEMPLATE.md diff --git a/.github/ISSUE_TEMPLATE/Feature_request.md b/.github/ISSUE_TEMPLATE/Feature_request.md deleted file mode 100644 index 5b85299a6..000000000 --- a/.github/ISSUE_TEMPLATE/Feature_request.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -name: Feature request -about: Suggest an idea for this project - ---- - - - -## Summary - -One paragraph explanation of the feature. - -## Motivation - -Why are we doing this? What use cases does it support? What is the expected outcome? - -## Describe alternatives you've considered - -A clear and concise description of the alternative solutions you've considered. Be sure to explain why Atom's existing customizability isn't suitable for this feature. - -## Additional context - -Add any other context or screenshots about the feature request here. diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md deleted file mode 100644 index 293c66c18..000000000 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -name: Bug report -about: Create a report to help us improve - ---- - - - -### Prerequisites - -* [ ] Put an X between the brackets on this line if you have done all of the following: - * Reproduced the problem in Safe Mode: https://flight-manual.atom.io/hacking-atom/sections/debugging/#using-safe-mode - * Followed all applicable steps in the debugging guide: https://flight-manual.atom.io/hacking-atom/sections/debugging/ - * Checked the FAQs on the message board for common solutions: https://discuss.atom.io/c/faq - * Checked that your issue isn't already filed: https://github.com/issues?utf8=✓&q=is%3Aissue+user%3Aatom - * Checked that there is not already an Atom package that provides the described functionality: https://atom.io/packages - -### Description - -[Description of the issue] - -### Steps to Reproduce - -1. [First Step] -2. [Second Step] -3. [and so on...] - -**Expected behavior:** [What you expect to happen] - -**Actual behavior:** [What actually happens] - -**Reproduces how often:** [What percentage of the time does it reproduce?] - -### Versions - -You can get this information from copy and pasting the output of `atom --version` and `apm --version` from the command line. Also, please include the OS and what version of the OS you're running. - -### Additional Information - -Any additional information, configuration or data that might be necessary to reproduce the issue. diff --git a/.github/PULL_REQUEST_TEMPLATE/bug_fix.md b/.github/PULL_REQUEST_TEMPLATE/bug_fix.md deleted file mode 100644 index e6a293012..000000000 --- a/.github/PULL_REQUEST_TEMPLATE/bug_fix.md +++ /dev/null @@ -1,59 +0,0 @@ -### Requirements for Contributing a Bug Fix - -* Fill out the template below. Any pull request that does not include enough information to be reviewed in a timely manner may be closed at the maintainers' discretion. -* The pull request must only fix an existing bug. To contribute other changes, you must use a different template. You can see all templates at https://github.com/atom/atom/tree/master/.github/PULL_REQUEST_TEMPLATE. -* The pull request must update the test suite to demonstrate the changed functionality. For guidance, please see https://flight-manual.atom.io/hacking-atom/sections/writing-specs/. -* After you create the pull request, all status checks must be pass before a maintainer reviews your contribution. For more details, please see https://github.com/atom/atom/tree/master/CONTRIBUTING.md#pull-requests. - -### Identify the Bug - - - -### Description of the Change - - - -### Alternate Designs - - - -### Possible Drawbacks - - - -### Verification Process - - - -### Release Notes - - diff --git a/.github/PULL_REQUEST_TEMPLATE/documentation.md b/.github/PULL_REQUEST_TEMPLATE/documentation.md deleted file mode 100644 index 3fc1e4072..000000000 --- a/.github/PULL_REQUEST_TEMPLATE/documentation.md +++ /dev/null @@ -1,30 +0,0 @@ -### Requirements for Contributing Documentation - -* Fill out the template below. Any pull request that does not include enough information to be reviewed in a timely manner may be closed at the maintainers' discretion. -* The pull request must only contribute documentation (for example, markdown files or API docs). To contribute other changes, you must use a different template. You can see all templates at https://github.com/atom/atom/tree/master/.github/PULL_REQUEST_TEMPLATE. - -### Description of the Change - - - -### Release Notes - - diff --git a/.github/PULL_REQUEST_TEMPLATE/feature_change.md b/.github/PULL_REQUEST_TEMPLATE/feature_change.md deleted file mode 100644 index cc6ed68af..000000000 --- a/.github/PULL_REQUEST_TEMPLATE/feature_change.md +++ /dev/null @@ -1,70 +0,0 @@ -### Requirements for Adding, Changing, or Removing a Feature - -* Fill out the template below. Any pull request that does not include enough information to be reviewed in a timely manner may be closed at the maintainers' discretion. -* The pull request must contribute a change that has been endorsed by the maintainer team. See details in the template below. -* The pull request must update the test suite to exercise the updated functionality. For guidance, please see https://flight-manual.atom.io/hacking-atom/sections/writing-specs/. -* After you create the pull request, all status checks must be pass before a maintainer reviews your contribution. For more details, please see https://github.com/atom/atom/tree/master/CONTRIBUTING.md#pull-requests. - -### Issue or RFC Endorsed by Atom's Maintainers - - - -### Description of the Change - - - -### Alternate Designs - - - -### Possible Drawbacks - - - -### Verification Process - - - -### Release Notes - - diff --git a/.github/PULL_REQUEST_TEMPLATE/performance_improvement.md b/.github/PULL_REQUEST_TEMPLATE/performance_improvement.md deleted file mode 100644 index f75f5fb28..000000000 --- a/.github/PULL_REQUEST_TEMPLATE/performance_improvement.md +++ /dev/null @@ -1,55 +0,0 @@ -### Requirements for Contributing a Performance Improvement - -* Fill out the template below. Any pull request that does not include enough information to be reviewed in a timely manner may be closed at the maintainers' discretion. -* The pull request must only affect performance of existing functionality. To contribute other changes, you must use a different template. You can see all templates at https://github.com/atom/atom/tree/master/.github/PULL_REQUEST_TEMPLATE. -* After you create the pull request, all status checks must be pass before a maintainer reviews your contribution. For more details, please see https://github.com/atom/atom/tree/master/CONTRIBUTING.md#pull-requests. - -### Description of the Change - - - -### Quantitative Performance Benefits - - - -### Possible Drawbacks - - - -### Verification Process - - - -### Applicable Issues - - - -### Release Notes - - diff --git a/.github/lock.yml b/.github/lock.yml index 39319ee90..ba43e69a4 100644 --- a/.github/lock.yml +++ b/.github/lock.yml @@ -8,7 +8,7 @@ lockComment: > any recent activity after it was closed. If you can still reproduce this issue in [Safe Mode](https://flight-manual.atom.io/hacking-atom/sections/debugging/#using-safe-mode) then please open a new issue and fill out - [the entire issue template](https://github.com/atom/atom/blob/master/ISSUE_TEMPLATE.md) + [the entire issue template](https://github.com/atom/.github/blob/master/.github/ISSUE_TEMPLATE/bug_report.md) to ensure that we have enough information to address your issue. Thanks! # Issues or pull requests with these labels will not be locked exemptLabels: diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d57e61ab1..e05fcb18b 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -113,7 +113,7 @@ When we make a significant decision in how we maintain the project and what we c This section guides you through submitting a bug report for Atom. Following these guidelines helps maintainers and the community understand your report :pencil:, reproduce the behavior :computer: :computer:, and find related reports :mag_right:. -Before creating bug reports, please check [this list](#before-submitting-a-bug-report) as you might find out that you don't need to create one. When you are creating a bug report, please [include as many details as possible](#how-do-i-submit-a-good-bug-report). Fill out [the required template](ISSUE_TEMPLATE.md), the information it asks for helps us resolve issues faster. +Before creating bug reports, please check [this list](#before-submitting-a-bug-report) as you might find out that you don't need to create one. When you are creating a bug report, please [include as many details as possible](#how-do-i-submit-a-good-bug-report). Fill out [the required template](https://github.com/atom/.github/blob/master/.github/ISSUE_TEMPLATE/bug_report.md), the information it asks for helps us resolve issues faster. > **Note:** If you find a **Closed** issue that seems like it is the same thing that you're experiencing, open a new issue and include a link to the original issue in the body of your new one. @@ -126,7 +126,7 @@ Before creating bug reports, please check [this list](#before-submitting-a-bug-r #### How Do I Submit A (Good) Bug Report? -Bugs are tracked as [GitHub issues](https://guides.github.com/features/issues/). After you've determined [which repository](#atom-and-packages) your bug is related to, create an issue on that repository and provide the following information by filling in [the template](ISSUE_TEMPLATE.md). +Bugs are tracked as [GitHub issues](https://guides.github.com/features/issues/). After you've determined [which repository](#atom-and-packages) your bug is related to, create an issue on that repository and provide the following information by filling in [the template](https://github.com/atom/.github/blob/master/.github/ISSUE_TEMPLATE/bug_report.md). Explain the problem and include additional details to help maintainers reproduce the problem: @@ -163,7 +163,7 @@ Include details about your configuration and environment: This section guides you through submitting an enhancement suggestion for Atom, including completely new features and minor improvements to existing functionality. Following these guidelines helps maintainers and the community understand your suggestion :pencil: and find related suggestions :mag_right:. -Before creating enhancement suggestions, please check [this list](#before-submitting-an-enhancement-suggestion) as you might find out that you don't need to create one. When you are creating an enhancement suggestion, please [include as many details as possible](#how-do-i-submit-a-good-enhancement-suggestion). Fill in [the template](ISSUE_TEMPLATE.md), including the steps that you imagine you would take if the feature you're requesting existed. +Before creating enhancement suggestions, please check [this list](#before-submitting-an-enhancement-suggestion) as you might find out that you don't need to create one. When you are creating an enhancement suggestion, please [include as many details as possible](#how-do-i-submit-a-good-enhancement-suggestion). Fill in [the template](https://github.com/atom/.github/blob/master/.github/ISSUE_TEMPLATE/bug_report.md), including the steps that you imagine you would take if the feature you're requesting existed. #### Before Submitting An Enhancement Suggestion diff --git a/ISSUE_TEMPLATE.md b/ISSUE_TEMPLATE.md deleted file mode 100644 index cf1773856..000000000 --- a/ISSUE_TEMPLATE.md +++ /dev/null @@ -1,40 +0,0 @@ - - -### Prerequisites - -* [ ] Put an X between the brackets on this line if you have done all of the following: - * Reproduced the problem in Safe Mode: https://flight-manual.atom.io/hacking-atom/sections/debugging/#using-safe-mode - * Followed all applicable steps in the debugging guide: https://flight-manual.atom.io/hacking-atom/sections/debugging/ - * Checked the FAQs on the message board for common solutions: https://discuss.atom.io/c/faq - * Checked that your issue isn't already filed: https://github.com/issues?utf8=✓&q=is%3Aissue+user%3Aatom - * Checked that there is not already an Atom package that provides the described functionality: https://atom.io/packages - -### Description - -[Description of the issue] - -### Steps to Reproduce - -1. [First Step] -2. [Second Step] -3. [and so on...] - -**Expected behavior:** [What you expect to happen] - -**Actual behavior:** [What actually happens] - -**Reproduces how often:** [What percentage of the time does it reproduce?] - -### Versions - -You can get this information from copy and pasting the output of `atom --version` and `apm --version` from the command line. Also, please include the OS and what version of the OS you're running. - -### Additional Information - -Any additional information, configuration or data that might be necessary to reproduce the issue. diff --git a/PULL_REQUEST_TEMPLATE.md b/PULL_REQUEST_TEMPLATE.md index 7414fa3b1..af13a69e8 100644 --- a/PULL_REQUEST_TEMPLATE.md +++ b/PULL_REQUEST_TEMPLATE.md @@ -1,10 +1,10 @@ ⚛👋 Hello there! Welcome. Please follow the steps below to tell us about your contribution. 1. Copy the correct template for your contribution - - 🐛 Are you fixing a bug? Copy the template from https://bit.ly/atom-bugfix - - 📈 Are you improving performance? Copy the template from https://bit.ly/atom-perf - - 📝 Are you updating documentation? Copy the template from https://bit.ly/atom-docs - - 💻 Are you changing functionality? Copy the template from https://bit.ly/atom-behavior + - 🐛 Are you fixing a bug? Copy the template from + - 📈 Are you improving performance? Copy the template from + - 📝 Are you updating documentation? Copy the template from + - 💻 Are you changing functionality? Copy the template from 2. Replace this text with the contents of the template 3. Fill in all sections of the template 4. Click "Create pull request" From 24dd5e5a73ee74d3d4556d4b91410c6047a8ec66 Mon Sep 17 00:00:00 2001 From: Max Brunsfeld Date: Thu, 13 Jun 2019 14:54:44 -0700 Subject: [PATCH 28/61] Update to Tree-sitter 0.15.5 --- package-lock.json | 6 +++--- package.json | 2 +- spec/tree-sitter-language-mode-spec.js | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 85369853c..3eebf78fb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6532,9 +6532,9 @@ "integrity": "sha512-4hjqbObwlh2dLyW4tcz0Ymw0ggoaVDMveUB9w8kFSQScdRLo0gxO9J7WFcUBo+W3C1TLdFIEwNOWebgZZ0RH9Q==" }, "tree-sitter": { - "version": "0.15.4", - "resolved": "https://registry.npmjs.org/tree-sitter/-/tree-sitter-0.15.4.tgz", - "integrity": "sha512-EgZr6zJevERT/gl7dh2Z2sO0WKHSf8rLTJS38sLe0cTxqxTQ785VxemVCGBHzp8zZ4406sh+ORlB1z5HyORbYw==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/tree-sitter/-/tree-sitter-0.15.5.tgz", + "integrity": "sha512-3rrww3lc9NNbbVPT1uGkvbom5Ivr/lZqpzru/x+S0Jnh/jHKACNz7ED1JiAPKfR89eLRJxBGh+ZV5g+QqQrQaw==", "requires": { "nan": "^2.13.2", "prebuild-install": "^5.0.0" diff --git a/package.json b/package.json index b5db761e1..ea3f8ba2c 100644 --- a/package.json +++ b/package.json @@ -157,7 +157,7 @@ "temp": "^0.9.0", "text-buffer": "13.17.0", "timecop": "https://www.atom.io/api/packages/timecop/versions/0.36.2/tarball", - "tree-sitter": "0.15.4", + "tree-sitter": "0.15.5", "tree-sitter-css": "^0.13.7", "tree-view": "https://www.atom.io/api/packages/tree-view/versions/0.228.0/tarball", "typescript-simple": "1.0.0", diff --git a/spec/tree-sitter-language-mode-spec.js b/spec/tree-sitter-language-mode-spec.js index 06e7fd6de..2dba1c3a2 100644 --- a/spec/tree-sitter-language-mode-spec.js +++ b/spec/tree-sitter-language-mode-spec.js @@ -1811,7 +1811,7 @@ describe('TreeSitterLanguageMode', () => { [0, 5], [0, 8] ]); - expect(editor.bufferRangeForScopeAtPosition(null, [0, 9])).toEqual([ + expect(editor.bufferRangeForScopeAtPosition(null, [0, 8])).toEqual([ [0, 8], [0, 9] ]); From c7b55e5ceae15343be28e4ddca954c2277ea1970 Mon Sep 17 00:00:00 2001 From: Winston Liu <50Wliu@users.noreply.github.com> Date: Thu, 13 Jun 2019 22:25:23 -0400 Subject: [PATCH 29/61] Install apm using ci --- script/lib/install-apm.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/script/lib/install-apm.js b/script/lib/install-apm.js index a233f6119..510b429a7 100644 --- a/script/lib/install-apm.js +++ b/script/lib/install-apm.js @@ -6,10 +6,9 @@ const CONFIG = require('../config'); module.exports = function(ci) { console.log('Installing apm'); - // npm ci leaves apm with a bunch of unmet dependencies childProcess.execFileSync( CONFIG.getNpmBinPath(), - ['--global-style', '--loglevel=error', 'install'], + ['--global-style', '--loglevel=error', ci ? 'ci' : 'install'], { env: process.env, cwd: CONFIG.apmRootPath } ); }; From 86ad1c66049a450b28ad44fd469c6667f7f8b345 Mon Sep 17 00:00:00 2001 From: Winston Liu <50Wliu@users.noreply.github.com> Date: Thu, 13 Jun 2019 22:26:52 -0400 Subject: [PATCH 30/61] Revert "Install apm using ci" This reverts commit c7b55e5ceae15343be28e4ddca954c2277ea1970. --- script/lib/install-apm.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/script/lib/install-apm.js b/script/lib/install-apm.js index 510b429a7..a233f6119 100644 --- a/script/lib/install-apm.js +++ b/script/lib/install-apm.js @@ -6,9 +6,10 @@ const CONFIG = require('../config'); module.exports = function(ci) { console.log('Installing apm'); + // npm ci leaves apm with a bunch of unmet dependencies childProcess.execFileSync( CONFIG.getNpmBinPath(), - ['--global-style', '--loglevel=error', ci ? 'ci' : 'install'], + ['--global-style', '--loglevel=error', 'install'], { env: process.env, cwd: CONFIG.apmRootPath } ); }; From faf6adf4ea05de0450a9a10e56225178c363c8f6 Mon Sep 17 00:00:00 2001 From: Rafael Oleza Date: Fri, 14 Jun 2019 14:24:17 +0200 Subject: [PATCH 31/61] =?UTF-8?q?=E2=AC=86=EF=B8=8F=20autocomplete-plus@2.?= =?UTF-8?q?42.3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 4 ++-- package.json | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 85369853c..3df2e1e43 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1358,8 +1358,8 @@ "integrity": "sha512-AHEZOz7RcIdPWlGQByHGUE9yVhn1O9qJQRHehvkN8riiUyJpNpaImk7dloH8Nw/JX14tKJhjT+EadY2u/+j7IQ==" }, "autocomplete-plus": { - "version": "https://www.atom.io/api/packages/autocomplete-plus/versions/2.42.2/tarball", - "integrity": "sha512-DtjYUHXRZRgAv604C8YAhj2p7+6oPz7molJnurE2mHvhvWA7wxwojKzJejNQMKwc/Up4mA/CcZBeuCVRMckgzw==", + "version": "https://www.atom.io/api/packages/autocomplete-plus/versions/2.42.3/tarball", + "integrity": "sha512-/5Ou9lH8Yc7F7Hfl7UDu8zpVZCEYfYCGs0FxR+Z6+yS0O5k7TfYoJE74KgHHhW3vGAgDPph8/JIPptc5/a1YbQ==", "requires": { "atom-slick": "^2.0.0", "dompurify": "^1.0.8", diff --git a/package.json b/package.json index b5db761e1..a0eeec4a9 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "autocomplete-atom-api": "https://www.atom.io/api/packages/autocomplete-atom-api/versions/0.10.7/tarball", "autocomplete-css": "https://www.atom.io/api/packages/autocomplete-css/versions/0.17.5/tarball", "autocomplete-html": "https://www.atom.io/api/packages/autocomplete-html/versions/0.8.8/tarball", - "autocomplete-plus": "https://www.atom.io/api/packages/autocomplete-plus/versions/2.42.2/tarball", + "autocomplete-plus": "https://www.atom.io/api/packages/autocomplete-plus/versions/2.42.3/tarball", "autocomplete-snippets": "https://www.atom.io/api/packages/autocomplete-snippets/versions/1.12.1/tarball", "autoflow": "file:packages/autoflow", "autosave": "https://www.atom.io/api/packages/autosave/versions/0.24.6/tarball", @@ -187,7 +187,7 @@ "autocomplete-atom-api": "0.10.7", "autocomplete-css": "0.17.5", "autocomplete-html": "0.8.8", - "autocomplete-plus": "2.42.2", + "autocomplete-plus": "2.42.3", "autocomplete-snippets": "1.12.1", "autoflow": "file:./packages/autoflow", "autosave": "0.24.6", From 8c8fa10fcde3db3f667c974903320c6634ca94a5 Mon Sep 17 00:00:00 2001 From: Rafael Oleza Date: Fri, 14 Jun 2019 16:43:46 +0200 Subject: [PATCH 32/61] Tweak package-lock to not load fs-extra twice on main-process --- package-lock.json | 48 +++++++++++++---------------------------------- 1 file changed, 13 insertions(+), 35 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3df2e1e43..ae7a235d2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -35,18 +35,6 @@ "requires": { "fs-extra": "^7.0.0", "nan": "^2.10.0" - }, - "dependencies": { - "fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - } } }, "@atom/source-map-support": { @@ -68,16 +56,6 @@ "prebuild-install": "5.2.4" }, "dependencies": { - "fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, "nan": { "version": "2.12.1", "resolved": "https://registry.npmjs.org/nan/-/nan-2.12.1.tgz", @@ -2991,9 +2969,9 @@ "integrity": "sha1-a+Dem+mYzhavivwkSXue6bfM2a0=" }, "fs-extra": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", - "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", "requires": { "graceful-fs": "^4.1.2", "jsonfile": "^4.0.0", @@ -3246,6 +3224,16 @@ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" }, + "fs-extra": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", + "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, "moment": { "version": "2.24.0", "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", @@ -6175,16 +6163,6 @@ "ms": "^2.1.1" } }, - "fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, "lodash": { "version": "4.17.11", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", From 8734f66aabfe7df8f3097eff863d424b9759759c Mon Sep 17 00:00:00 2001 From: Jason Rudolph Date: Fri, 14 Jun 2019 11:19:49 -0400 Subject: [PATCH 33/61] :arrow_up: atom/nsfw@1.0.25 --- package-lock.json | 6 +++--- package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 85369853c..c3e068561 100644 --- a/package-lock.json +++ b/package-lock.json @@ -29,9 +29,9 @@ } }, "@atom/nsfw": { - "version": "1.0.24", - "resolved": "https://registry.npmjs.org/@atom/nsfw/-/nsfw-1.0.24.tgz", - "integrity": "sha512-/pv/m+HRX/E8qvN+lUijsLWCcx24503l4J4Wf2mfVqaXxexYIKVMGZS1ZikX0Vf507sUbtD7600JiBK/RBaRhg==", + "version": "1.0.25", + "resolved": "https://registry.npmjs.org/@atom/nsfw/-/nsfw-1.0.25.tgz", + "integrity": "sha512-V7g509EVRCCkzoQW/QA7lQsROrjsfYYEJRHzEuc6+PAH88Z4oAs7D3W8MOJrBPo+6e06gxEwfxZjIq7BQbpfwQ==", "requires": { "fs-extra": "^7.0.0", "nan": "^2.10.0" diff --git a/package.json b/package.json index b5db761e1..321c5938d 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ "license": "MIT", "electronVersion": "3.1.10", "dependencies": { - "@atom/nsfw": "1.0.24", + "@atom/nsfw": "1.0.25", "@atom/source-map-support": "^0.3.4", "@atom/watcher": "1.3.1", "about": "file:packages/about", From 44cad8f586c7794f3af2faa8264306c5c27bf709 Mon Sep 17 00:00:00 2001 From: Jason Rudolph Date: Fri, 14 Jun 2019 11:20:37 -0400 Subject: [PATCH 34/61] Revert "Disable flaky spec on Windows until we can identify a proper fix" This reverts commit a0742f8e9d. As of 8734f66aab, we're now using the nsfw fixes from https://github.com/atom/nsfw/pull/9, which should resolve the flakiness we were seeing on Windows. --- spec/project-spec.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/spec/project-spec.js b/spec/project-spec.js index dec6e9d7f..a812418c7 100644 --- a/spec/project-spec.js +++ b/spec/project-spec.js @@ -1084,8 +1084,6 @@ describe('Project', () => { }; it('reports filesystem changes within project paths', async () => { - if (process.platform === 'win32') return; // Flaky results on Windows: https://github.com/atom/atom/issues/19507 - jasmine.useRealClock(); const dirOne = temp.mkdirSync('atom-spec-project-one'); const fileOne = path.join(dirOne, 'file-one.txt'); From 57f70e2d7d30f485dc879fd4d1130752c1a42709 Mon Sep 17 00:00:00 2001 From: Landon Abney Date: Fri, 14 Jun 2019 09:21:07 -0700 Subject: [PATCH 35/61] Apply suggestions from code review New `bit.ly` links and a change to one of the target templates. Co-Authored-By: Jason Rudolph --- CONTRIBUTING.md | 2 +- PULL_REQUEST_TEMPLATE.md | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e05fcb18b..83b59fcb5 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -163,7 +163,7 @@ Include details about your configuration and environment: This section guides you through submitting an enhancement suggestion for Atom, including completely new features and minor improvements to existing functionality. Following these guidelines helps maintainers and the community understand your suggestion :pencil: and find related suggestions :mag_right:. -Before creating enhancement suggestions, please check [this list](#before-submitting-an-enhancement-suggestion) as you might find out that you don't need to create one. When you are creating an enhancement suggestion, please [include as many details as possible](#how-do-i-submit-a-good-enhancement-suggestion). Fill in [the template](https://github.com/atom/.github/blob/master/.github/ISSUE_TEMPLATE/bug_report.md), including the steps that you imagine you would take if the feature you're requesting existed. +Before creating enhancement suggestions, please check [this list](#before-submitting-an-enhancement-suggestion) as you might find out that you don't need to create one. When you are creating an enhancement suggestion, please [include as many details as possible](#how-do-i-submit-a-good-enhancement-suggestion). Fill in [the template](https://github.com/atom/.github/blob/master/.github/ISSUE_TEMPLATE/feature_request.md), including the steps that you imagine you would take if the feature you're requesting existed. #### Before Submitting An Enhancement Suggestion diff --git a/PULL_REQUEST_TEMPLATE.md b/PULL_REQUEST_TEMPLATE.md index af13a69e8..cdf247b79 100644 --- a/PULL_REQUEST_TEMPLATE.md +++ b/PULL_REQUEST_TEMPLATE.md @@ -1,10 +1,10 @@ ⚛👋 Hello there! Welcome. Please follow the steps below to tell us about your contribution. 1. Copy the correct template for your contribution - - 🐛 Are you fixing a bug? Copy the template from - - 📈 Are you improving performance? Copy the template from - - 📝 Are you updating documentation? Copy the template from - - 💻 Are you changing functionality? Copy the template from + - 🐛 Are you fixing a bug? Copy the template from + - 📈 Are you improving performance? Copy the template from + - 📝 Are you updating documentation? Copy the template from + - 💻 Are you changing functionality? Copy the template from 2. Replace this text with the contents of the template 3. Fill in all sections of the template 4. Click "Create pull request" From f866a107ccda05dd7c66f1df589a807a427fb0b9 Mon Sep 17 00:00:00 2001 From: Max Brunsfeld Date: Fri, 14 Jun 2019 10:17:04 -0700 Subject: [PATCH 36/61] :arrow_up: bracket-matcher (prerelease) --- package-lock.json | 4 ++-- package.json | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3eebf78fb..e490802aa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1715,8 +1715,8 @@ } }, "bracket-matcher": { - "version": "https://www.atom.io/api/packages/bracket-matcher/versions/0.91.0/tarball", - "integrity": "sha512-bgAsyS23bu3Y9LqRul4/IjOIqUZxpnIZGBEaxBHGcC5vW/ZHCr3SYsPsN2hLXwTHvXArwgcBt1Uylc0tz25FSQ==", + "version": "https://www.atom.io/api/packages/bracket-matcher/versions/0.91.1-0/tarball", + "integrity": "sha512-t6zMOe69vTMuEiKWIAkzGiISkcZilxMx2Nr51Kynqibf0TDVvghlXAXyugL3ToGuusPKmZgMs9U9lr2c7UUd8g==", "requires": { "first-mate": "^7.0.1", "underscore-plus": "1.x" diff --git a/package.json b/package.json index ea3f8ba2c..c583ae02e 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ "base16-tomorrow-dark-theme": "file:packages/base16-tomorrow-dark-theme", "base16-tomorrow-light-theme": "file:packages/base16-tomorrow-light-theme", "bookmarks": "https://www.atom.io/api/packages/bookmarks/versions/0.46.0/tarball", - "bracket-matcher": "https://www.atom.io/api/packages/bracket-matcher/versions/0.91.0/tarball", + "bracket-matcher": "https://www.atom.io/api/packages/bracket-matcher/versions/0.91.1-0/tarball", "chai": "3.5.0", "chart.js": "^2.3.0", "clear-cut": "^2.0.2", @@ -193,7 +193,7 @@ "autosave": "0.24.6", "background-tips": "0.28.0", "bookmarks": "0.46.0", - "bracket-matcher": "0.91.0", + "bracket-matcher": "0.91.1-0", "command-palette": "0.43.5", "dalek": "file:./packages/dalek", "deprecation-cop": "file:./packages/deprecation-cop", From 376b2e108e3ffd8766085c3cac25d3b4b1327d18 Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Fri, 14 Jun 2019 19:23:57 +0200 Subject: [PATCH 37/61] Shim `tokens` in tokenized lines returned from `TreeSitterLanguageMode` Co-Authored-By: Nathan Sobo --- spec/tree-sitter-language-mode-spec.js | 41 ++++++++++++++++++++++++++ src/tokenized-line.coffee | 22 ++++++++------ src/tree-sitter-language-mode.js | 37 ++++++++++++++++++++++- 3 files changed, 90 insertions(+), 10 deletions(-) diff --git a/spec/tree-sitter-language-mode-spec.js b/spec/tree-sitter-language-mode-spec.js index 06e7fd6de..de3f12599 100644 --- a/spec/tree-sitter-language-mode-spec.js +++ b/spec/tree-sitter-language-mode-spec.js @@ -2210,6 +2210,47 @@ describe('TreeSitterLanguageMode', () => { expect(editor.getSelectedText()).toBe('html ` c${def()}e${f}g `'); }); }); + + describe('.tokenizedLineForRow(row)', () => { + it('returns a shimmed TokenizedLine with tokens', () => { + const grammar = new TreeSitterGrammar(atom.grammars, jsGrammarPath, { + parser: 'tree-sitter-javascript', + scopes: { + program: 'source', + 'call_expression > identifier': 'function', + property_identifier: 'property', + 'call_expression > member_expression > property_identifier': 'method', + identifier: 'variable' + } + }); + + buffer.setText('aa.bbb = cc(d.eee());\n\n \n b'); + + const languageMode = new TreeSitterLanguageMode({ buffer, grammar }); + buffer.setLanguageMode(languageMode); + + expect(languageMode.tokenizedLineForRow(0).tokens).toEqual([ + { value: 'aa', scopes: ['source', 'variable'] }, + { value: '.', scopes: ['source'] }, + { value: 'bbb', scopes: ['source', 'property'] }, + { value: ' = ', scopes: ['source'] }, + { value: 'cc', scopes: ['source', 'function'] }, + { value: '(', scopes: ['source'] }, + { value: 'd', scopes: ['source', 'variable'] }, + { value: '.', scopes: ['source'] }, + { value: 'eee', scopes: ['source', 'method'] }, + { value: '());', scopes: ['source'] } + ]); + expect(languageMode.tokenizedLineForRow(1).tokens).toEqual([]); + expect(languageMode.tokenizedLineForRow(2).tokens).toEqual([ + { value: ' ', scopes: ['source'] } + ]); + expect(languageMode.tokenizedLineForRow(3).tokens).toEqual([ + { value: ' ', scopes: ['source'] }, + { value: 'b', scopes: ['source', 'variable'] } + ]); + }); + }); }); function nextHighlightingUpdate(languageMode) { diff --git a/src/tokenized-line.coffee b/src/tokenized-line.coffee index 986ec0442..abace0fcd 100644 --- a/src/tokenized-line.coffee +++ b/src/tokenized-line.coffee @@ -10,21 +10,25 @@ class TokenizedLine return unless properties? - {@openScopes, @text, @tags, @ruleStack, @tokenIterator, @grammar} = properties + {@openScopes, @text, @tags, @ruleStack, @tokenIterator, @grammar, tokens} = properties + @cachedTokens = tokens getTokenIterator: -> @tokenIterator.reset(this) Object.defineProperty @prototype, 'tokens', get: -> - iterator = @getTokenIterator() - tokens = [] + if @cachedTokens + @cachedTokens + else + iterator = @getTokenIterator() + tokens = [] - while iterator.next() - tokens.push(new Token({ - value: iterator.getText() - scopes: iterator.getScopes().slice() - })) + while iterator.next() + tokens.push(new Token({ + value: iterator.getText() + scopes: iterator.getScopes().slice() + })) - tokens + tokens tokenAtBufferColumn: (bufferColumn) -> @tokens[@tokenIndexAtBufferColumn(bufferColumn)] diff --git a/src/tree-sitter-language-mode.js b/src/tree-sitter-language-mode.js index 4391b02b2..66ac0174a 100644 --- a/src/tree-sitter-language-mode.js +++ b/src/tree-sitter-language-mode.js @@ -488,9 +488,44 @@ class TreeSitterLanguageMode { */ tokenizedLineForRow(row) { + const lineText = this.buffer.lineForRow(row); + const tokens = []; + + const iterator = this.buildHighlightIterator(); + let start = { row, column: 0 }; + const scopes = iterator.seek(start, row); + while (true) { + const end = iterator.getPosition(); + if (end.row > row) { + end.row = row; + end.column = lineText.length; + } + + if (end.column > start.column) { + tokens.push( + new Token({ + value: lineText.substring(start.column, end.column), + scopes: scopes.map(s => this.grammar.scopeNameForScopeId(s)) + }) + ); + } + + if (end.column < lineText.length) { + for (const _ of iterator.getCloseScopeIds()) { + scopes.pop(); + } + scopes.push(...iterator.getOpenScopeIds()); + start = end; + iterator.moveToSuccessor(); + } else { + break; + } + } + return new TokenizedLine({ openScopes: [], - text: this.buffer.lineForRow(row), + text: lineText, + tokens, tags: [], ruleStack: [], lineEnding: this.buffer.lineEndingForRow(row), From d5604bd3289aed4622b65279695ac82e03af4cb4 Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Thu, 13 Jun 2019 13:50:01 -0600 Subject: [PATCH 38/61] Assign originalFontSize when workspace is initialized --- src/atom-environment.js | 4 +++- src/workspace.js | 14 ++------------ 2 files changed, 5 insertions(+), 13 deletions(-) diff --git a/src/atom-environment.js b/src/atom-environment.js index b4a7e8e43..36830ff76 100644 --- a/src/atom-environment.js +++ b/src/atom-environment.js @@ -313,6 +313,8 @@ class AtomEnvironment { this.attachSaveStateListeners(); this.windowEventHandler.initialize(this.window, this.document); + this.workspace.initialize(); + const didChangeStyles = this.didChangeStyles.bind(this); this.disposables.add(this.styles.onDidAddStyleElement(didChangeStyles)); this.disposables.add(this.styles.onDidUpdateStyleElement(didChangeStyles)); @@ -429,7 +431,7 @@ class AtomEnvironment { this.workspace.reset(this.packages); this.registerDefaultOpeners(); this.project.reset(this.packages); - this.workspace.subscribeToEvents(); + this.workspace.initialize(); this.grammars.clear(); this.textEditors.clear(); this.views.clear(); diff --git a/src/workspace.js b/src/workspace.js index 9262e45f7..1299187dd 100644 --- a/src/workspace.js +++ b/src/workspace.js @@ -256,8 +256,6 @@ module.exports = class Workspace extends Model { }; this.incoming = new Map(); - - this.subscribeToEvents(); } get paneContainer() { @@ -375,9 +373,9 @@ module.exports = class Workspace extends Model { this.consumeServices(this.packageManager); } - subscribeToEvents() { + initialize() { + this.originalFontSize = this.config.get('editor.fontSize'); this.project.onDidChangePaths(this.updateWindowTitle); - this.subscribeToFontSize(); this.subscribeToAddedItems(); this.subscribeToMovedItems(); this.subscribeToDockToggling(); @@ -1753,14 +1751,6 @@ module.exports = class Workspace extends Model { } } - subscribeToFontSize() { - return this.config.onDidChange('editor.fontSize', () => { - if (this.originalFontSize == null) { - this.originalFontSize = this.config.get('editor.fontSize'); - } - }); - } - // Removes the item's uri from the list of potential items to reopen. itemOpened(item) { let uri; From e6db41fc276d7b989f11155f50c08b945c4c717b Mon Sep 17 00:00:00 2001 From: Max Brunsfeld Date: Fri, 14 Jun 2019 12:11:16 -0700 Subject: [PATCH 39/61] :arrow_up: bracket-matcher from pre-release to patch --- package-lock.json | 4 ++-- package.json | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index a6af3ec5a..9efd71bb7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1715,8 +1715,8 @@ } }, "bracket-matcher": { - "version": "https://www.atom.io/api/packages/bracket-matcher/versions/0.91.1-0/tarball", - "integrity": "sha512-t6zMOe69vTMuEiKWIAkzGiISkcZilxMx2Nr51Kynqibf0TDVvghlXAXyugL3ToGuusPKmZgMs9U9lr2c7UUd8g==", + "version": "https://www.atom.io/api/packages/bracket-matcher/versions/0.91.1/tarball", + "integrity": "sha512-aBbNNVfEAzzNu71ZZ4+P9Y0AxBUB74wseVF/Mu88wCrOQq889IHdiW+wzayfli0F6MXNH1wIh/zYPeZHzvU/MQ==", "requires": { "first-mate": "^7.0.1", "underscore-plus": "1.x" diff --git a/package.json b/package.json index bbc58e359..e6b520fd1 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ "base16-tomorrow-dark-theme": "file:packages/base16-tomorrow-dark-theme", "base16-tomorrow-light-theme": "file:packages/base16-tomorrow-light-theme", "bookmarks": "https://www.atom.io/api/packages/bookmarks/versions/0.46.0/tarball", - "bracket-matcher": "https://www.atom.io/api/packages/bracket-matcher/versions/0.91.1-0/tarball", + "bracket-matcher": "https://www.atom.io/api/packages/bracket-matcher/versions/0.91.1/tarball", "chai": "3.5.0", "chart.js": "^2.3.0", "clear-cut": "^2.0.2", @@ -193,7 +193,7 @@ "autosave": "0.24.6", "background-tips": "0.28.0", "bookmarks": "0.46.0", - "bracket-matcher": "0.91.1-0", + "bracket-matcher": "0.91.1", "command-palette": "0.43.5", "dalek": "file:./packages/dalek", "deprecation-cop": "file:./packages/deprecation-cop", From 3f2309522aed772be72698a26124ac31b324c425 Mon Sep 17 00:00:00 2001 From: Jason Rudolph Date: Fri, 14 Jun 2019 15:28:48 -0400 Subject: [PATCH 40/61] Revert "add delay to watch-path tests to make them less flaky" This reverts commit dd40782166. With the upgrade to atom/nsfw v1.0.25 in https://github.com/atom/atom/pull/19525, we should no longer need the delay introduced in dd40782166. --- spec/path-watcher-spec.js | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/spec/path-watcher-spec.js b/spec/path-watcher-spec.js index 5f97338b1..a2a9a4e6d 100644 --- a/spec/path-watcher-spec.js +++ b/spec/path-watcher-spec.js @@ -7,7 +7,6 @@ import { promisify } from 'util'; import { CompositeDisposable } from 'event-kit'; import { watchPath, stopAllWatchers } from '../src/path-watcher'; -import { timeoutPromise } from './async-spec-helpers'; temp.track(); @@ -22,7 +21,6 @@ describe('watchPath', function() { let subs; beforeEach(function() { - jasmine.useRealClock(); subs = new CompositeDisposable(); }); @@ -111,12 +109,6 @@ describe('watchPath', function() { waitForChanges(rootWatcher, subFile), waitForChanges(childWatcher, subFile) ]); - - // In Windows64, in some situations nsfw (the currently default watcher) - // does not trigger the change events if they happen just after start watching, - // so we need to wait some time. More info: https://github.com/atom/atom/issues/19442 - await timeoutPromise(300); - await writeFile(subFile, 'subfile\n', { encoding: 'utf8' }); await firstChanges; @@ -164,11 +156,6 @@ describe('watchPath', function() { expect(subWatcher0.native).toBe(parentWatcher.native); expect(subWatcher1.native).toBe(parentWatcher.native); - // In Windows64, in some situations nsfw (the currently default watcher) - // does not trigger the change events if they happen just after start watching, - // so we need to wait some time. More info: https://github.com/atom/atom/issues/19442 - await timeoutPromise(300); - // Ensure events are filtered correctly await Promise.all([ appendFile(rootFile, 'change\n', { encoding: 'utf8' }), From 228f12eb61b5212d0831a2a7d204bdf2a99263f6 Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Fri, 14 Jun 2019 14:14:27 -0600 Subject: [PATCH 41/61] Fix lint error --- src/tree-sitter-language-mode.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/tree-sitter-language-mode.js b/src/tree-sitter-language-mode.js index 66ac0174a..52b93b508 100644 --- a/src/tree-sitter-language-mode.js +++ b/src/tree-sitter-language-mode.js @@ -511,7 +511,8 @@ class TreeSitterLanguageMode { } if (end.column < lineText.length) { - for (const _ of iterator.getCloseScopeIds()) { + const closeScopeCount = iterator.getCloseScopeIds().length; + for (let i = 0; i < closeScopeCount; i++) { scopes.pop(); } scopes.push(...iterator.getOpenScopeIds()); From 80c559354761131ed87b646c3fdd8330cf704aca Mon Sep 17 00:00:00 2001 From: Rafael Oleza Date: Mon, 17 Jun 2019 18:09:06 +0200 Subject: [PATCH 42/61] =?UTF-8?q?=E2=AC=86=EF=B8=8F=20scandal@3.2.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 17 +++++++++++++---- package.json | 2 +- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9efd71bb7..4b9a3cd96 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5667,18 +5667,27 @@ "integrity": "sha1-vsEf3IOp/aBjQBIQ5AF2wwJNFWc=" }, "scandal": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/scandal/-/scandal-3.1.0.tgz", - "integrity": "sha1-m0AkuXxxm74lAIzAm6rHn7tdNQE=", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/scandal/-/scandal-3.2.0.tgz", + "integrity": "sha512-kXICe3ygxwyyO3Ur+k49UzQlu8yrdQgzD03eMgV8sMWDom9q4qpEvZuQRUcbyAujC1TpISPRUPoirOIO1bRxcQ==", "requires": { "argparse": "^1.0.2", - "git-utils": "^5.0.0", + "git-utils": "^5.6.0", "isbinaryfile": "^2.0.4", "minimatch": "^2.0.9", "split": "^1.0.0", "temp": "^0.8.3" }, "dependencies": { + "git-utils": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/git-utils/-/git-utils-5.6.0.tgz", + "integrity": "sha512-eOBROJEQPQtkqzZe5V0m43YhKjhmzXTqULxlhoaCwORClnHtZIwkJQTS6THXRbvIqDq/cRHta85IqTbVzdvB5g==", + "requires": { + "fs-plus": "^3.0.0", + "nan": "^2.0.0" + } + }, "minimatch": { "version": "2.0.10", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", diff --git a/package.json b/package.json index e6b520fd1..bdfdb8bf8 100644 --- a/package.json +++ b/package.json @@ -138,7 +138,7 @@ "property-accessors": "^1.1.3", "random-words": "0.0.1", "resolve": "^1.1.6", - "scandal": "^3.1.0", + "scandal": "^3.2.0", "scoped-property-store": "^0.17.0", "scrollbar-style": "^3.2", "season": "^6.0.2", From f0f9eadac3a67621dbf122f698bf738417ca6e55 Mon Sep 17 00:00:00 2001 From: Rafael Oleza Date: Mon, 17 Jun 2019 18:15:21 +0200 Subject: [PATCH 43/61] =?UTF-8?q?=E2=AC=86=EF=B8=8F=20git-utils@5.6.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 6 +++--- package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4b9a3cd96..43fedb531 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3192,9 +3192,9 @@ } }, "git-utils": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/git-utils/-/git-utils-5.5.0.tgz", - "integrity": "sha512-4t3f2pU4HPgKOyTXyaEdMHTBwa24ubC4FykCXlqnsPgHlupSq66d0/aq0h92BgnyGwI3ogqx9D0a+Uw/jNckOg==", + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/git-utils/-/git-utils-5.6.0.tgz", + "integrity": "sha512-eOBROJEQPQtkqzZe5V0m43YhKjhmzXTqULxlhoaCwORClnHtZIwkJQTS6THXRbvIqDq/cRHta85IqTbVzdvB5g==", "requires": { "fs-plus": "^3.0.0", "nan": "^2.0.0" diff --git a/package.json b/package.json index bdfdb8bf8..ba55ec36f 100644 --- a/package.json +++ b/package.json @@ -64,7 +64,7 @@ "fuzzaldrin": "^2.1", "fuzzy-finder": "https://www.atom.io/api/packages/fuzzy-finder/versions/1.13.7/tarball", "git-diff": "file:packages/git-diff", - "git-utils": "5.5.0", + "git-utils": "5.6.0", "github": "https://www.atom.io/api/packages/github/versions/0.29.0/tarball", "glob": "^7.1.1", "go-to-line": "file:packages/go-to-line", From 5595c110728496bd9c455870a368eefa3a24dc8e Mon Sep 17 00:00:00 2001 From: Rafael Oleza Date: Fri, 14 Jun 2019 19:56:13 +0200 Subject: [PATCH 44/61] =?UTF-8?q?=E2=AC=86=EF=B8=8F=20electron-winstaller@?= =?UTF-8?q?3.0.4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- script/package-lock.json | 202 +++++++++++++++++++++++++++------------ script/package.json | 2 +- 2 files changed, 143 insertions(+), 61 deletions(-) diff --git a/script/package-lock.json b/script/package-lock.json index d723bdaba..432c19cf9 100644 --- a/script/package-lock.json +++ b/script/package-lock.json @@ -119,6 +119,14 @@ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.4.tgz", "integrity": "sha512-5pCS4mOsL+ANsFZGdvNLybx4wtqAZJ0MJjMHxvzI3bvIsz6sQvzW8XX92EYIkiPtIvcfG3Aj+Ir5VNyjnZhP7w==" }, + "@babel/runtime": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.4.5.tgz", + "integrity": "sha512-TuI4qpWZP6lGOGIuGWtp9sPluqYICmbk8T/1vpSysqJxRPkudh/ofFWyqdcMsDf2s7KvDL4/YHgKyvcS3g9CJQ==", + "requires": { + "regenerator-runtime": "^0.13.2" + } + }, "@babel/template": { "version": "7.4.4", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.4.tgz", @@ -507,27 +515,34 @@ "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" }, "asar": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/asar/-/asar-0.11.0.tgz", - "integrity": "sha1-uSbnksMV+MBIxDNx4yWwnJenZGQ=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/asar/-/asar-1.0.0.tgz", + "integrity": "sha512-MBiDU5cDr9UWuY2F0zq2fZlnyRq1aOPmJGMas22Qa14K1odpRXL3xkMHPN3uw2hAK5mD89Q+/KidOUtpi4V0Cg==", "requires": { - "chromium-pickle-js": "^0.1.0", - "commander": "^2.9.0", - "cuint": "^0.2.1", - "glob": "^6.0.4", - "minimatch": "^3.0.0", - "mkdirp": "^0.5.0", - "mksnapshot": "^0.3.0" + "chromium-pickle-js": "^0.2.0", + "commander": "^2.19.0", + "cuint": "^0.2.2", + "glob": "^7.1.3", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "pify": "^4.0.1", + "tmp-promise": "^1.0.5" }, "dependencies": { + "commander": { + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", + "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==" + }, "glob": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", - "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", "requires": { + "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "2 || 3", + "minimatch": "^3.0.4", "once": "^1.3.0", "path-is-absolute": "^1.0.0" } @@ -539,6 +554,11 @@ "requires": { "brace-expansion": "^1.1.7" } + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" } } }, @@ -1174,9 +1194,9 @@ "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==" }, "chromium-pickle-js": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.1.0.tgz", - "integrity": "sha1-HUixB9ghJqLz4hHC6iX4A7pVGyE=" + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz", + "integrity": "sha1-BKEGZywYsIWrd02YPfo+oTjyIgU=" }, "circular-json": { "version": "0.3.3", @@ -2281,33 +2301,61 @@ "integrity": "sha1-0tnxJwuko7lnuDHEDvcftNmrXOA=" }, "electron-winstaller": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/electron-winstaller/-/electron-winstaller-2.6.4.tgz", - "integrity": "sha1-a0gHboc6bqNWJR8Ve2i55dwDtak=", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/electron-winstaller/-/electron-winstaller-3.0.4.tgz", + "integrity": "sha512-u3wTQUzBBBGWbExkKvgKt69EMoF0xC8uLQS5vTXtwr97BH8ffSW8CcHvVGWRyRDIhg2AA+togKOKWr41wgCeiA==", "requires": { - "asar": "^0.11.0", - "bluebird": "^3.3.4", - "debug": "^2.2.0", - "fs-extra": "^0.26.7", + "@babel/runtime": "^7.3.4", + "asar": "^1.0.0", + "debug": "^4.1.1", + "fs-extra": "^7.0.1", "lodash.template": "^4.2.2", - "temp": "^0.8.3" + "pify": "^4.0.1", + "temp": "^0.9.0" }, "dependencies": { - "bluebird": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", - "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==" + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } }, "fs-extra": { - "version": "0.26.7", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.26.7.tgz", - "integrity": "sha1-muH92UiXeY7at20JGM9C0MMYT6k=", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", "requires": { "graceful-fs": "^4.1.2", - "jsonfile": "^2.1.0", - "klaw": "^1.0.0", - "path-is-absolute": "^1.0.0", - "rimraf": "^2.2.8" + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" + }, + "temp": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/temp/-/temp-0.9.0.tgz", + "integrity": "sha512-YfUhPQCJoNQE5N+FJQcdPz63O3x3sdT4Xju69Gj4iZe0lBKOtnAMi0SLj9xKhGkcGhsxThvTJ/usxtFPo438zQ==", + "requires": { + "rimraf": "~2.6.2" } } } @@ -5096,30 +5144,6 @@ "resolved": "https://registry.npmjs.org/mkpath/-/mkpath-0.1.0.tgz", "integrity": "sha1-dVSm+Nhxg0zJe1RisSLEwSTW3pE=" }, - "mksnapshot": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/mksnapshot/-/mksnapshot-0.3.1.tgz", - "integrity": "sha1-JQHAVldDbXQs6Vik/5LHfkDdN+Y=", - "requires": { - "decompress-zip": "0.3.0", - "fs-extra": "0.26.7", - "request": "^2.79.0" - }, - "dependencies": { - "fs-extra": { - "version": "0.26.7", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.26.7.tgz", - "integrity": "sha1-muH92UiXeY7at20JGM9C0MMYT6k=", - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^2.1.0", - "klaw": "^1.0.0", - "path-is-absolute": "^1.0.0", - "rimraf": "^2.2.8" - } - } - } - }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -9024,6 +9048,11 @@ "through": "~2.3.8" } }, + "regenerator-runtime": { + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz", + "integrity": "sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA==" + }, "regex-cache": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", @@ -10425,6 +10454,59 @@ "os-tmpdir": "~1.0.2" } }, + "tmp-promise": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-1.1.0.tgz", + "integrity": "sha512-8+Ah9aB1IRXCnIOxXZ0uFozV1nMU5xiu7hhFVUSxZ3bYu+psD4TzagCzVbexUCgNNGJnsmNDQlS4nG3mTyoNkw==", + "requires": { + "bluebird": "^3.5.0", + "tmp": "0.1.0" + }, + "dependencies": { + "bluebird": { + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.5.tgz", + "integrity": "sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w==" + }, + "glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "requires": { + "glob": "^7.1.3" + } + }, + "tmp": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.1.0.tgz", + "integrity": "sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw==", + "requires": { + "rimraf": "^2.6.3" + } + } + } + }, "to-buffer": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", diff --git a/script/package.json b/script/package.json index cef1feff4..c10f44a4e 100644 --- a/script/package.json +++ b/script/package.json @@ -14,7 +14,7 @@ "electron-link": "0.4.0", "electron-mksnapshot": "^3.1.10", "electron-packager": "12.2.0", - "electron-winstaller": "2.6.4", + "electron-winstaller": "^3.0.4", "eslint": "^5.16.0", "eslint-config-prettier": "^4.2.0", "eslint-config-standard": "^12.0.0", From 0e7d99dce98d67cf464d95e4edb0f9308f4bb87e Mon Sep 17 00:00:00 2001 From: Rafael Oleza Date: Mon, 17 Jun 2019 10:16:46 +0200 Subject: [PATCH 45/61] Update name of windows autoupdater executable --- script/build | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/script/build b/script/build index 193eb7310..5c1eb0575 100755 --- a/script/build +++ b/script/build @@ -109,7 +109,7 @@ if (!argv.generateApiDocs) { if (argv.codeSign) { const executablesToSign = [ path.join(packagedAppPath, 'Atom.exe') ] if (argv.createWindowsInstaller) { - executablesToSign.push(path.join(__dirname, 'node_modules', 'electron-winstaller', 'vendor', 'Update.exe')) + executablesToSign.push(path.join(__dirname, 'node_modules', 'electron-winstaller', 'vendor', 'Squirrel.exe')) } codeSignOnWindows(executablesToSign) } else { From 8ea1bc24aaeba09678d1f2b1d943d837361a54c7 Mon Sep 17 00:00:00 2001 From: Rafael Oleza Date: Mon, 17 Jun 2019 22:52:08 +0200 Subject: [PATCH 46/61] Dedupe git-utils dependency --- package-lock.json | 9 --------- 1 file changed, 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index 43fedb531..7c8512752 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5679,15 +5679,6 @@ "temp": "^0.8.3" }, "dependencies": { - "git-utils": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/git-utils/-/git-utils-5.6.0.tgz", - "integrity": "sha512-eOBROJEQPQtkqzZe5V0m43YhKjhmzXTqULxlhoaCwORClnHtZIwkJQTS6THXRbvIqDq/cRHta85IqTbVzdvB5g==", - "requires": { - "fs-plus": "^3.0.0", - "nan": "^2.0.0" - } - }, "minimatch": { "version": "2.0.10", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", From c67794cf96cd16403a8621dc291112d6a4774b84 Mon Sep 17 00:00:00 2001 From: Rafael Oleza Date: Mon, 17 Jun 2019 20:33:58 +0200 Subject: [PATCH 47/61] Improve logic to generate nightly release notes --- script/vsts/lib/release-notes.js | 64 +++++++++++++++++++++++--------- 1 file changed, 46 insertions(+), 18 deletions(-) diff --git a/script/vsts/lib/release-notes.js b/script/vsts/lib/release-notes.js index c76c23317..360125148 100644 --- a/script/vsts/lib/release-notes.js +++ b/script/vsts/lib/release-notes.js @@ -97,32 +97,60 @@ module.exports.generateForNightly = async function( releaseVersion, githubToken ) { - const releases = await octokit.repos.getReleases({ - owner: 'atom', - repo: 'atom-nightly-releases' - }); - const previousRelease = getPreviousRelease(releaseVersion, releases.data); - const oldReleaseNotes = previousRelease ? previousRelease.body : undefined; - const latestCommitResult = childProcess.spawnSync('git', [ 'rev-parse', '--short', 'HEAD' ]); + if (!latestCommitResult) { + console.log("Couldn't get the current commmit from git."); - if (latestCommitResult && oldReleaseNotes) { - const latestCommit = latestCommitResult.stdout.toString().trim(); - const extractMatch = oldReleaseNotes.match( - /atom\/atom\/compare\/([0-9a-f]{5,40})\.\.\.([0-9a-f]{5,40})/ - ); - if (extractMatch) { - return `### Click [here](https://github.com/atom/atom/compare/${ - extractMatch[2] - }...${latestCommit}) to see the changes included with this release! :atom: :night_with_stars:`; - } + return undefined; } - return undefined; + const latestCommit = latestCommitResult.stdout.toString().trim(); + const output = [ + `### This nightly release is based on https://github.com/atom/atom/commit/${latestCommit} :atom: :night_with_stars:` + ]; + + try { + const releases = await octokit.repos.getReleases({ + owner: 'atom', + repo: 'atom-nightly-releases' + }); + + const previousRelease = getPreviousRelease(releaseVersion, releases.data); + const oldReleaseNotes = previousRelease ? previousRelease.body : undefined; + + if (oldReleaseNotes) { + const extractMatch = oldReleaseNotes.match( + /atom\/atom\/commit\/([0-9a-f]{5,40})/ + ); + if (extractMatch.length > 1 && extractMatch[1]) { + output.push('', '---', ''); + const previousCommit = extractMatch[1]; + + if ( + previousCommit === latestCommit || + previousCommit.startsWith(latestCommit) || + latestCommit.startsWith(previousCommit) + ) { + // TODO: Maybe we can bail out and not publish a release if it contains no commits? + output.push('No changes have been included in this release'); + } else { + output.push( + `Click [here](https://github.com/atom/atom/compare/${previousCommit}...${latestCommit}) to see the changes included with this release!` + ); + } + } + } + } catch (e) { + console.log( + 'Error when trying to find the previous nightly release: ' + e.message + ); + } + + return output; }; function extractWrittenReleaseNotes(oldReleaseNotes) { From 6708932b4abe4dbddf4d6bdda4401e1c2209c7a5 Mon Sep 17 00:00:00 2001 From: Max Brunsfeld Date: Mon, 17 Jun 2019 15:32:10 -0700 Subject: [PATCH 48/61] :arrow_up: tree-sitter-rust --- package-lock.json | 8 ++++---- packages/language-rust-bundled/package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7c8512752..be0db41f5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4010,7 +4010,7 @@ "language-rust-bundled": { "version": "file:packages/language-rust-bundled", "requires": { - "tree-sitter-rust": "^0.13.7" + "tree-sitter-rust": "^0.15.1" } }, "language-sass": { @@ -6675,9 +6675,9 @@ } }, "tree-sitter-rust": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/tree-sitter-rust/-/tree-sitter-rust-0.13.7.tgz", - "integrity": "sha512-OX7VlqNhw67yIB69ZhgtJb6sXhwLVwGx991EjLf4PP2bY4dWBgmZ+KxwxN7HBwk9RdUsNLf0KbTwzVRadKhPGw==", + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/tree-sitter-rust/-/tree-sitter-rust-0.15.1.tgz", + "integrity": "sha512-nkuVgr/1QS/IkC1IE9DhjMKbGUUNymrMnRlV6HcOOOsW8s4ubCaL9Yu0M+eyVwSGjiD92xWEZMtt1I5ekUILYg==", "requires": { "nan": "^2.8.0" } diff --git a/packages/language-rust-bundled/package.json b/packages/language-rust-bundled/package.json index 91c1662ab..b178f0d86 100644 --- a/packages/language-rust-bundled/package.json +++ b/packages/language-rust-bundled/package.json @@ -10,7 +10,7 @@ "repository": "https://github.com/atom/atom", "license": "MIT", "dependencies": { - "tree-sitter-rust": "^0.13.7" + "tree-sitter-rust": "^0.15.1" }, "engines": { "atom": ">=1.0.0 <2.0.0" From 8988f87da476f6ef52e988cf05b05059c65dddce Mon Sep 17 00:00:00 2001 From: Max Brunsfeld Date: Mon, 17 Jun 2019 15:33:35 -0700 Subject: [PATCH 49/61] Use injection to re-parse rust macro calls and defs as rust --- .../language-rust-bundled/grammars/tree-sitter-rust.cson | 1 + packages/language-rust-bundled/lib/main.js | 9 +++++++++ packages/language-rust-bundled/package.json | 1 + 3 files changed, 11 insertions(+) create mode 100644 packages/language-rust-bundled/lib/main.js diff --git a/packages/language-rust-bundled/grammars/tree-sitter-rust.cson b/packages/language-rust-bundled/grammars/tree-sitter-rust.cson index 6f77d1b90..651e2e247 100644 --- a/packages/language-rust-bundled/grammars/tree-sitter-rust.cson +++ b/packages/language-rust-bundled/grammars/tree-sitter-rust.cson @@ -2,6 +2,7 @@ name: 'Rust' scopeName: 'source.rust' type: 'tree-sitter' parser: 'tree-sitter-rust' +injectionRegex: 'rust' fileTypes: [ 'rs' diff --git a/packages/language-rust-bundled/lib/main.js b/packages/language-rust-bundled/lib/main.js new file mode 100644 index 000000000..982a9b338 --- /dev/null +++ b/packages/language-rust-bundled/lib/main.js @@ -0,0 +1,9 @@ +exports.activate = function() { + for (const nodeType of ['macro_invocation', 'macro_rule']) { + atom.grammars.addInjectionPoint('source.rust', { + type: nodeType, + language() { return 'rust'; }, + content(node) { return node.lastChild; }, + }); + } +}; diff --git a/packages/language-rust-bundled/package.json b/packages/language-rust-bundled/package.json index b178f0d86..ca6e7bdda 100644 --- a/packages/language-rust-bundled/package.json +++ b/packages/language-rust-bundled/package.json @@ -7,6 +7,7 @@ "grammar", "rust" ], + "main": "lib/main.js", "repository": "https://github.com/atom/atom", "license": "MIT", "dependencies": { From 7bfd33c5193f4363045d93727ad23acbbea690d0 Mon Sep 17 00:00:00 2001 From: Max Brunsfeld Date: Mon, 17 Jun 2019 15:34:10 -0700 Subject: [PATCH 50/61] Add `includeChildren` injection point API, use it for rust injections --- packages/language-rust-bundled/lib/main.js | 9 +- spec/tree-sitter-language-mode-spec.js | 78 ++++++++++ src/tree-sitter-language-mode.js | 171 ++++++++++++++------- 3 files changed, 198 insertions(+), 60 deletions(-) diff --git a/packages/language-rust-bundled/lib/main.js b/packages/language-rust-bundled/lib/main.js index 982a9b338..7a996b689 100644 --- a/packages/language-rust-bundled/lib/main.js +++ b/packages/language-rust-bundled/lib/main.js @@ -2,8 +2,13 @@ exports.activate = function() { for (const nodeType of ['macro_invocation', 'macro_rule']) { atom.grammars.addInjectionPoint('source.rust', { type: nodeType, - language() { return 'rust'; }, - content(node) { return node.lastChild; }, + language() { + return 'rust'; + }, + content(node) { + return node.lastChild; + }, + includeChildren: true }); } }; diff --git a/spec/tree-sitter-language-mode-spec.js b/spec/tree-sitter-language-mode-spec.js index 117132bf2..8919a54ec 100644 --- a/spec/tree-sitter-language-mode-spec.js +++ b/spec/tree-sitter-language-mode-spec.js @@ -27,6 +27,9 @@ const ejsGrammarPath = require.resolve( const rubyGrammarPath = require.resolve( 'language-ruby/grammars/tree-sitter-ruby.cson' ); +const rustGrammarPath = require.resolve( + 'language-rust-bundled/grammars/tree-sitter-rust.cson' +); describe('TreeSitterLanguageMode', () => { let editor, buffer; @@ -831,6 +834,81 @@ describe('TreeSitterLanguageMode', () => { ]); }); + it('respects the `includeChildren` property of injection points', async () => { + const rustGrammar = new TreeSitterGrammar( + atom.grammars, + rustGrammarPath, + { + scopeName: 'rust', + parser: 'tree-sitter-rust', + scopes: { + identifier: 'variable', + field_identifier: 'property', + 'call_expression > field_expression > field_identifier': + 'function', + 'macro_invocation > identifier': 'macro' + }, + injectionRegExp: 'rust', + injectionPoints: [ + { + type: 'macro_invocation', + language() { + return 'rust'; + }, + content(node) { + return node.lastChild; + }, + + // The tokens within a `token_tree` are all parsed as separate + // children of the `token_tree`. By default, when adding a language + // injection for a node, the node's children's ranges would be + // excluded from the injection. But for this injection point + // (parsing token trees as rust code), we want to reparse all of the + // content of the token tree. + includeChildren: true + } + ] + } + ); + + atom.grammars.addGrammar(rustGrammar); + + // Macro call within another macro call. + buffer.setText('assert_eq!(a.b.c(), vec![d.e()]); f.g();'); + + const languageMode = new TreeSitterLanguageMode({ + buffer, + grammar: rustGrammar, + grammars: atom.grammars + }); + buffer.setLanguageMode(languageMode); + + // There should not be duplicate scopes due to the root layer + // and for the injected rust layer. + expectTokensToEqual(editor, [ + [ + { text: 'assert_eq', scopes: ['macro'] }, + { text: '!(', scopes: [] }, + { text: 'a', scopes: ['variable'] }, + { text: '.', scopes: [] }, + { text: 'b', scopes: ['property'] }, + { text: '.', scopes: [] }, + { text: 'c', scopes: ['function'] }, + { text: '(), ', scopes: [] }, + { text: 'vec', scopes: ['macro'] }, + { text: '![', scopes: [] }, + { text: 'd', scopes: ['variable'] }, + { text: '.', scopes: [] }, + { text: 'e', scopes: ['function'] }, + { text: '()]); ', scopes: [] }, + { text: 'f', scopes: ['variable'] }, + { text: '.', scopes: [] }, + { text: 'g', scopes: ['function'] }, + { text: '();', scopes: [] } + ] + ]); + }); + it('notifies onDidTokenize listeners the first time all syntax highlighting is done', async () => { const promise = new Promise(resolve => { editor.onDidTokenize(event => { diff --git a/src/tree-sitter-language-mode.js b/src/tree-sitter-language-mode.js index 52b93b508..7d6ecf8cb 100644 --- a/src/tree-sitter-language-mode.js +++ b/src/tree-sitter-language-mode.js @@ -32,7 +32,7 @@ class TreeSitterLanguageMode { this.config = config; this.grammarRegistry = grammars; this.parser = new Parser(); - this.rootLanguageLayer = new LanguageLayer(this, grammar); + this.rootLanguageLayer = new LanguageLayer(this, grammar, 0, true); this.injectionsMarkerLayer = buffer.addMarkerLayer(); if (syncTimeoutMicros != null) { @@ -637,13 +637,14 @@ class TreeSitterLanguageMode { } class LanguageLayer { - constructor(languageMode, grammar, contentChildTypes) { + constructor(languageMode, grammar, depth, isOpaque) { this.languageMode = languageMode; this.grammar = grammar; this.tree = null; this.currentParsePromise = null; this.patchSinceCurrentParseStarted = null; - this.contentChildTypes = contentChildTypes; + this.depth = depth; + this.isOpaque = isOpaque; } buildHighlightIterator() { @@ -885,7 +886,8 @@ class LanguageLayer { marker.languageLayer = new LanguageLayer( this.languageMode, grammar, - injectionPoint.contentChildTypes + this.depth + 1, + injectionPoint.includeChildren ); marker.parentLanguageLayer = this; } @@ -895,7 +897,8 @@ class LanguageLayer { new NodeRangeSet( nodeRangeSet, injectionNodes, - injectionPoint.newlinesBetween + injectionPoint.newlinesBetween, + injectionPoint.includeChildren ) ); } @@ -910,7 +913,6 @@ class LanguageLayer { } if (markersToUpdate.size > 0) { - this.lastUpdateWasAsync = true; const promises = []; for (const [marker, nodeRangeSet] of markersToUpdate) { promises.push(marker.languageLayer.update(nodeRangeSet)); @@ -938,6 +940,7 @@ class HighlightIterator { constructor(languageMode) { this.languageMode = languageMode; this.iterators = null; + this.opaqueLayerDepth = 0; } seek(targetPosition, endRow) { @@ -947,55 +950,97 @@ class HighlightIterator { } ); - this.iterators = [ - this.languageMode.rootLanguageLayer.buildHighlightIterator() - ]; - for (const marker of injectionMarkers) { - this.iterators.push(marker.languageLayer.buildHighlightIterator()); - } - this.iterators.sort((a, b) => b.getIndex() - a.getIndex()); - const containingTags = []; const containingTagStartIndices = []; const targetIndex = this.languageMode.buffer.characterIndexForPosition( targetPosition ); - for (let i = this.iterators.length - 1; i >= 0; i--) { - this.iterators[i].seek( - targetIndex, - containingTags, - containingTagStartIndices - ); + + this.iterators = []; + const iterator = this.languageMode.rootLanguageLayer.buildHighlightIterator(); + if (iterator.seek(targetIndex, containingTags, containingTagStartIndices)) { + this.iterators.push(iterator); } - this.iterators.sort((a, b) => b.getIndex() - a.getIndex()); + for (const marker of injectionMarkers) { + const iterator = marker.languageLayer.buildHighlightIterator(); + if ( + iterator.seek(targetIndex, containingTags, containingTagStartIndices) + ) { + this.iterators.push(iterator); + } + } + this.iterators.sort((a, b) => b.compare(a)); return containingTags; } moveToSuccessor() { - const lastIndex = this.iterators.length - 1; - const leader = this.iterators[lastIndex]; - leader.moveToSuccessor(); - const leaderCharIndex = leader.getIndex(); - let i = lastIndex; - while (i > 0 && this.iterators[i - 1].getIndex() < leaderCharIndex) i--; - if (i < lastIndex) this.iterators.splice(i, 0, this.iterators.pop()); + let leader = last(this.iterators); + if (leader.moveToSuccessor()) { + const leaderIndex = this.iterators.length - 1; + let i = leaderIndex; + while (i > 0 && this.iterators[i - 1].compare(leader) < 0) i--; + if (i < leaderIndex) { + this.iterators.splice(i, 0, this.iterators.pop()); + this.trackLayerDepth(); + } + } else { + this.iterators.pop(); + this.trackLayerDepth(); + } + } + + trackLayerDepth() { + let i = this.iterators.length - 1; + let iterator = this.iterators[i]; + if (!iterator) return; + const offset = iterator.getOffset(); + if (iterator.languageLayer.isOpaque) { + this.opaqueLayerDepth = iterator.languageLayer.depth; + } + + while (i > 0) { + i--; + iterator = this.iterators[i]; + if (iterator.startOffset > offset) break; + if (iterator.languageLayer.isOpaque) { + const { depth } = iterator.languageLayer; + if (depth > this.opaqueLayerDepth) { + this.opaqueLayerDepth = depth; + } + } + } } getPosition() { - return last(this.iterators).getPosition(); + const iterator = last(this.iterators); + if (iterator) { + return iterator.getPosition(); + } else { + return Point.INFINITY; + } } getCloseScopeIds() { - return last(this.iterators).getCloseScopeIds(); + const iterator = last(this.iterators); + if (iterator && iterator.languageLayer.depth >= this.opaqueLayerDepth) { + return iterator.getCloseScopeIds(); + } else { + return []; + } } getOpenScopeIds() { - return last(this.iterators).getOpenScopeIds(); + const iterator = last(this.iterators); + if (iterator && iterator.languageLayer.depth >= this.opaqueLayerDepth) { + return iterator.getOpenScopeIds(); + } else { + return []; + } } logState() { const iterator = last(this.iterators); - if (iterator.treeCursor) { + if (iterator && iterator.treeCursor) { console.log( iterator.getPosition(), iterator.treeCursor.nodeType, @@ -1029,6 +1074,8 @@ class LayerHighlightIterator { this.atEnd = false; this.treeCursor = treeCursor; + this.startOffset = this.treeCursor.startIndex; + // In order to determine which selectors match its current node, the iterator maintains // a list of the current node's ancestors. Because the selectors can use the `:nth-child` // pseudo-class, each node's child index is also stored. @@ -1046,7 +1093,6 @@ class LayerHighlightIterator { seek(targetIndex, containingTags, containingTagStartIndices) { while (this.treeCursor.gotoParent()) {} - this.done = false; this.atEnd = true; this.closeTags.length = 0; this.openTags.length = 0; @@ -1057,8 +1103,7 @@ class LayerHighlightIterator { const containingTagEndIndices = []; if (targetIndex >= this.treeCursor.endIndex) { - this.done = true; - return; + return false; } let childIndex = -1; @@ -1099,14 +1144,14 @@ class LayerHighlightIterator { } } - return containingTags; + return true; } moveToSuccessor() { this.closeTags.length = 0; this.openTags.length = 0; - while (!this.done && !this.closeTags.length && !this.openTags.length) { + while (!this.closeTags.length && !this.openTags.length) { if (this.atEnd) { if (this._moveRight()) { const scopeId = this._currentScopeId(); @@ -1116,7 +1161,7 @@ class LayerHighlightIterator { } else if (this._moveUp(true)) { this.atEnd = true; } else { - this.done = true; + return false; } } else if (!this._moveDown()) { const scopeId = this._currentScopeId(); @@ -1125,28 +1170,34 @@ class LayerHighlightIterator { this._moveUp(false); } } + + return true; } getPosition() { - if (this.done) { - return Point.INFINITY; - } else if (this.atEnd) { + if (this.atEnd) { return this.treeCursor.endPosition; } else { return this.treeCursor.startPosition; } } - getIndex() { - if (this.done) { - return Infinity; - } else if (this.atEnd) { + getOffset() { + if (this.atEnd) { return this.treeCursor.endIndex; } else { return this.treeCursor.startIndex; } } + compare(other) { + let result = this.getOffset() - other.getOffset(); + if (result !== 0) return result; + if (this.atEnd && !other.atEnd) return -1; + if (other.atEnd && !this.atEnd) return 1; + return this.depth - other.depth; + } + getCloseScopeIds() { return this.closeTags.slice(); } @@ -1156,6 +1207,7 @@ class LayerHighlightIterator { } // Private methods + _moveUp(atLastChild) { let result = false; const { endIndex } = this.treeCursor; @@ -1264,7 +1316,7 @@ class NullHighlightIterator { return []; } moveToSuccessor() {} - getIndex() { + getOffset() { return Infinity; } getPosition() { @@ -1279,10 +1331,11 @@ class NullHighlightIterator { } class NodeRangeSet { - constructor(previous, nodes, newlinesBetween) { + constructor(previous, nodes, newlinesBetween, includeChildren) { this.previous = previous; this.nodes = nodes; this.newlinesBetween = newlinesBetween; + this.includeChildren = includeChildren; } getRanges(buffer) { @@ -1293,18 +1346,20 @@ class NodeRangeSet { let position = node.startPosition; let index = node.startIndex; - for (const child of node.children) { - const nextIndex = child.startIndex; - if (nextIndex > index) { - this._pushRange(buffer, previousRanges, result, { - startIndex: index, - endIndex: nextIndex, - startPosition: position, - endPosition: child.startPosition - }); + if (!this.includeChildren) { + for (const child of node.children) { + const nextIndex = child.startIndex; + if (nextIndex > index) { + this._pushRange(buffer, previousRanges, result, { + startIndex: index, + endIndex: nextIndex, + startPosition: position, + endPosition: child.startPosition + }); + } + position = child.endPosition; + index = child.endIndex; } - position = child.endPosition; - index = child.endIndex; } if (node.endIndex > index) { From ea6d06152bb705d31e304764fd8ff83e497f7f86 Mon Sep 17 00:00:00 2001 From: Max Brunsfeld Date: Mon, 17 Jun 2019 17:17:04 -0700 Subject: [PATCH 51/61] Load language-rust at snapshot-generation time --- src/initialize-application-window.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/initialize-application-window.js b/src/initialize-application-window.js index d8388ab9f..f32d7633d 100644 --- a/src/initialize-application-window.js +++ b/src/initialize-application-window.js @@ -41,6 +41,7 @@ if (global.isGeneratingSnapshot) { require('language-html'); require('language-javascript'); require('language-ruby'); + require('language-rust-bundled'); require('language-typescript'); require('line-ending-selector'); require('link'); From f7b8e5f12fdd3f4b52e007dc2e5b9fb00416e370 Mon Sep 17 00:00:00 2001 From: Max Brunsfeld Date: Mon, 17 Jun 2019 17:52:55 -0700 Subject: [PATCH 52/61] Implement .compare on NullHighlightIterator --- src/tree-sitter-language-mode.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/tree-sitter-language-mode.js b/src/tree-sitter-language-mode.js index 7d6ecf8cb..bcf00c7c3 100644 --- a/src/tree-sitter-language-mode.js +++ b/src/tree-sitter-language-mode.js @@ -1315,6 +1315,9 @@ class NullHighlightIterator { seek() { return []; } + compare() { + return 1; + } moveToSuccessor() {} getOffset() { return Infinity; From afeee24f9b66450bb713021093cb75a79da5f4df Mon Sep 17 00:00:00 2001 From: Rafael Oleza Date: Tue, 18 Jun 2019 18:06:20 +0200 Subject: [PATCH 53/61] =?UTF-8?q?=E2=AC=86=EF=B8=8F=20fuzzy-finder@1.13.8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 4 ++-- package.json | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7e5cb3915..6760133df 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3048,8 +3048,8 @@ "integrity": "sha1-gy9kifvodnaUWVmckUpnDsIpR+4=" }, "fuzzy-finder": { - "version": "https://www.atom.io/api/packages/fuzzy-finder/versions/1.13.7/tarball", - "integrity": "sha512-79C7IWrHrPk5UKL48KlcHoFy8T+FGfh/HXRwChkxrLYCrUZSl8a+Bj956j2xIRVanO+lNAnLR5QVyrDhbJ2McA==", + "version": "https://www.atom.io/api/packages/fuzzy-finder/versions/1.13.8/tarball", + "integrity": "sha512-uhBHzD0B42k4KQ+CktomP16nxH/0fxlM9of3r/1bEAAxK4i0+/4Z22Qmxv3qsawo+4DxFUc3P9KCTgjxZHTaBA==", "requires": { "@atom/fuzzy-native": "^1.0.3", "async": "0.2.6", diff --git a/package.json b/package.json index ba55ec36f..0c6c7d185 100644 --- a/package.json +++ b/package.json @@ -62,7 +62,7 @@ "fs-plus": "^3.1.1", "fstream": "0.1.24", "fuzzaldrin": "^2.1", - "fuzzy-finder": "https://www.atom.io/api/packages/fuzzy-finder/versions/1.13.7/tarball", + "fuzzy-finder": "https://www.atom.io/api/packages/fuzzy-finder/versions/1.13.8/tarball", "git-diff": "file:packages/git-diff", "git-utils": "5.6.0", "github": "https://www.atom.io/api/packages/github/versions/0.29.0/tarball", @@ -201,7 +201,7 @@ "encoding-selector": "0.23.9", "exception-reporting": "file:./packages/exception-reporting", "find-and-replace": "0.218.13", - "fuzzy-finder": "1.13.7", + "fuzzy-finder": "1.13.8", "github": "0.29.0", "git-diff": "file:./packages/git-diff", "go-to-line": "file:./packages/go-to-line", From 5e6770bb3fe7853596d2a6c6fb6c1ba87b926941 Mon Sep 17 00:00:00 2001 From: Max Brunsfeld Date: Tue, 18 Jun 2019 11:52:31 -0700 Subject: [PATCH 54/61] Implement scope boundary deduping by detecting each duplicate --- src/tree-sitter-language-mode.js | 129 ++++++++++++++++--------------- 1 file changed, 68 insertions(+), 61 deletions(-) diff --git a/src/tree-sitter-language-mode.js b/src/tree-sitter-language-mode.js index bcf00c7c3..77d902cee 100644 --- a/src/tree-sitter-language-mode.js +++ b/src/tree-sitter-language-mode.js @@ -32,7 +32,7 @@ class TreeSitterLanguageMode { this.config = config; this.grammarRegistry = grammars; this.parser = new Parser(); - this.rootLanguageLayer = new LanguageLayer(this, grammar, 0, true); + this.rootLanguageLayer = new LanguageLayer(this, grammar, 0); this.injectionsMarkerLayer = buffer.addMarkerLayer(); if (syncTimeoutMicros != null) { @@ -637,14 +637,13 @@ class TreeSitterLanguageMode { } class LanguageLayer { - constructor(languageMode, grammar, depth, isOpaque) { + constructor(languageMode, grammar, depth) { this.languageMode = languageMode; this.grammar = grammar; this.tree = null; this.currentParsePromise = null; this.patchSinceCurrentParseStarted = null; this.depth = depth; - this.isOpaque = isOpaque; } buildHighlightIterator() { @@ -886,8 +885,7 @@ class LanguageLayer { marker.languageLayer = new LanguageLayer( this.languageMode, grammar, - this.depth + 1, - injectionPoint.includeChildren + this.depth + 1 ); marker.parentLanguageLayer = this; } @@ -940,7 +938,6 @@ class HighlightIterator { constructor(languageMode) { this.languageMode = languageMode; this.iterators = null; - this.opaqueLayerDepth = 0; } seek(targetPosition, endRow) { @@ -961,6 +958,9 @@ class HighlightIterator { if (iterator.seek(targetIndex, containingTags, containingTagStartIndices)) { this.iterators.push(iterator); } + + // Populate the iterators array with all of the iterators whose syntax + // trees span the given position. for (const marker of injectionMarkers) { const iterator = marker.languageLayer.buildHighlightIterator(); if ( @@ -969,46 +969,54 @@ class HighlightIterator { this.iterators.push(iterator); } } + + // Sort the iterators so that the last one in the array is the earliest + // in the document, and represents the current position. this.iterators.sort((a, b) => b.compare(a)); + this.detectCoveredScope(); + return containingTags; } moveToSuccessor() { + // Advance the earliest layer iterator to its next scope boundary. let leader = last(this.iterators); + + // Maintain the sorting of the iterators by their position in the document. if (leader.moveToSuccessor()) { const leaderIndex = this.iterators.length - 1; let i = leaderIndex; while (i > 0 && this.iterators[i - 1].compare(leader) < 0) i--; if (i < leaderIndex) { this.iterators.splice(i, 0, this.iterators.pop()); - this.trackLayerDepth(); } } else { + // If the layer iterator was at the end of its syntax tree, then remove + // it from the array. this.iterators.pop(); - this.trackLayerDepth(); } + + this.detectCoveredScope(); } - trackLayerDepth() { - let i = this.iterators.length - 1; - let iterator = this.iterators[i]; - if (!iterator) return; - const offset = iterator.getOffset(); - if (iterator.languageLayer.isOpaque) { - this.opaqueLayerDepth = iterator.languageLayer.depth; - } - - while (i > 0) { - i--; - iterator = this.iterators[i]; - if (iterator.startOffset > offset) break; - if (iterator.languageLayer.isOpaque) { - const { depth } = iterator.languageLayer; - if (depth > this.opaqueLayerDepth) { - this.opaqueLayerDepth = depth; - } + // Detect whether or not another more deeply-nested language layer has a + // scope boundary at this same position. If so, the current language layer's + // scope boundary should not be reported. + detectCoveredScope() { + const layerCount = this.iterators.length; + if (layerCount > 1) { + const first = this.iterators[layerCount - 1]; + const next = this.iterators[layerCount - 2]; + if ( + next.offset === first.offset && + next.atEnd === first.atEnd && + next.languageLayer.depth > first.languageLayer.depth + ) { + this.currentScopeIsCovered = true; + return; } } + this.currentScopeIsCovered = false; } getPosition() { @@ -1022,20 +1030,18 @@ class HighlightIterator { getCloseScopeIds() { const iterator = last(this.iterators); - if (iterator && iterator.languageLayer.depth >= this.opaqueLayerDepth) { + if (iterator && !this.currentScopeIsCovered) { return iterator.getCloseScopeIds(); - } else { - return []; } + return []; } getOpenScopeIds() { const iterator = last(this.iterators); - if (iterator && iterator.languageLayer.depth >= this.opaqueLayerDepth) { + if (iterator && !this.currentScopeIsCovered) { return iterator.getOpenScopeIds(); - } else { - return []; } + return []; } logState() { @@ -1044,23 +1050,28 @@ class HighlightIterator { console.log( iterator.getPosition(), iterator.treeCursor.nodeType, + `depth=${iterator.languageLayer.depth}`, new Range( iterator.languageLayer.tree.rootNode.startPosition, iterator.languageLayer.tree.rootNode.endPosition ).toString() ); - console.log( - 'close', - iterator.closeTags.map(id => - this.languageMode.grammar.scopeNameForScopeId(id) - ) - ); - console.log( - 'open', - iterator.openTags.map(id => - this.languageMode.grammar.scopeNameForScopeId(id) - ) - ); + if (this.currentScopeIsCovered) { + console.log('covered'); + } else { + console.log( + 'close', + iterator.closeTags.map(id => + this.languageMode.grammar.scopeNameForScopeId(id) + ) + ); + console.log( + 'open', + iterator.openTags.map(id => + this.languageMode.grammar.scopeNameForScopeId(id) + ) + ); + } } } } @@ -1073,8 +1084,7 @@ class LayerHighlightIterator { // in the syntax tree. this.atEnd = false; this.treeCursor = treeCursor; - - this.startOffset = this.treeCursor.startIndex; + this.offset = 0; // In order to determine which selectors match its current node, the iterator maintains // a list of the current node's ancestors. Because the selectors can use the `:nth-child` @@ -1136,12 +1146,14 @@ class LayerHighlightIterator { } if (this.atEnd) { - const currentIndex = this.treeCursor.endIndex; + this.offset = this.treeCursor.endIndex; for (let i = 0, { length } = containingTags; i < length; i++) { - if (containingTagEndIndices[i] === currentIndex) { + if (containingTagEndIndices[i] === this.offset) { this.closeTags.push(containingTags[i]); } } + } else { + this.offset = this.treeCursor.startIndex; } return true; @@ -1171,6 +1183,12 @@ class LayerHighlightIterator { } } + if (this.atEnd) { + this.offset = this.treeCursor.endIndex; + } else { + this.offset = this.treeCursor.startIndex; + } + return true; } @@ -1182,20 +1200,12 @@ class LayerHighlightIterator { } } - getOffset() { - if (this.atEnd) { - return this.treeCursor.endIndex; - } else { - return this.treeCursor.startIndex; - } - } - compare(other) { - let result = this.getOffset() - other.getOffset(); + const result = this.offset - other.offset; if (result !== 0) return result; if (this.atEnd && !other.atEnd) return -1; if (other.atEnd && !this.atEnd) return 1; - return this.depth - other.depth; + return this.languageLayer.depth - other.languageLayer.depth; } getCloseScopeIds() { @@ -1319,9 +1329,6 @@ class NullHighlightIterator { return 1; } moveToSuccessor() {} - getOffset() { - return Infinity; - } getPosition() { return Point.INFINITY; } From dbdff0f56c72ea731403d3d5bb3a7e3e0907aa8a Mon Sep 17 00:00:00 2001 From: Max Brunsfeld Date: Tue, 18 Jun 2019 17:37:15 -0700 Subject: [PATCH 55/61] :arrow_up: language packages --- .eslintignore | 2 +- package-lock.json | 149 +++++++++++++------------ package.json | 32 +++--- spec/tree-sitter-language-mode-spec.js | 8 +- 4 files changed, 99 insertions(+), 92 deletions(-) diff --git a/.eslintignore b/.eslintignore index 2c1ef701c..b54c3b8df 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,4 +1,4 @@ **/spec/fixtures/**/*.js node_modules /vendor/ -/out/ \ No newline at end of file +/out/ diff --git a/package-lock.json b/package-lock.json index addc6a725..3109d65ef 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3874,11 +3874,11 @@ } }, "language-c": { - "version": "https://www.atom.io/api/packages/language-c/versions/0.60.17/tarball", - "integrity": "sha512-jGu5Eo/QqqmMM1r62nYJhLdgop/pf4RUUK+udYyp0mOQpU3qPRT+9lVv14/9SDpwkiBB1DQSLJekhVobcD0McQ==", + "version": "https://www.atom.io/api/packages/language-c/versions/0.60.18/tarball", + "integrity": "sha512-q+oTv3QtnLGP8L3qIuWdOQ9XVKskVTsCp8hvURaSz9MGIIjKIK1ssO/r/gkCiBF/AWqaBuglYix4E6RmytHlVg==", "requires": { - "tree-sitter-c": "^0.13.13", - "tree-sitter-cpp": "^0.13.15" + "tree-sitter-c": "^0.15.0", + "tree-sitter-cpp": "^0.15.0" } }, "language-clojure": { @@ -3909,19 +3909,19 @@ "integrity": "sha512-xvsGO/d3/XsKJmwdAz9VGHo6t7A13VuJeuEoZaoLmvzwkVpFdpJcK8PNwVMPHav+lpNeu73qiXmqS+YIlvLwLQ==" }, "language-go": { - "version": "https://www.atom.io/api/packages/language-go/versions/0.47.0/tarball", - "integrity": "sha512-41lrL5fCPKJSxZ+GUkOemPcDSfme2E2KULuhJGnWLUun5vTrqevtkLgQGAnqH+M/D9zOqJH6H3Lc2kYPrLdUaA==", + "version": "https://www.atom.io/api/packages/language-go/versions/0.47.1/tarball", + "integrity": "sha512-SiySXDxMZ0nUvNCBAClB8sbil0VQi6MJq2ut+jNuNLKtXvO+PtuHxohtbfsSwSYeET0a8ylVahLv1lo0HBgUjw==", "requires": { - "tree-sitter-go": "^0.13.3" + "tree-sitter-go": "^0.15.0" } }, "language-html": { - "version": "https://www.atom.io/api/packages/language-html/versions/0.52.1/tarball", - "integrity": "sha512-39BmsxqzTJcb6u5bSqv/k/bigdZibbMm3BHascMuWHHl5swIQlJhYf+QPR3ozaojNK/aFbx4hj4zDolmlFEKlA==", + "version": "https://www.atom.io/api/packages/language-html/versions/0.52.3/tarball", + "integrity": "sha512-NcEU2LTS76VgnLJIc7sN8QGpiYqTmIPwB+jAv7Wg6kzbt7H0GGZwlUCtHqo7OUFnF9dc++BtDLNKUCNchnh6UA==", "requires": { "atom-grammar-test": "^0.6.3", - "tree-sitter-embedded-template": "^0.13.0", - "tree-sitter-html": "^0.13.2" + "tree-sitter-embedded-template": "^0.15.0", + "tree-sitter-html": "^0.15.0" } }, "language-hyperlink": { @@ -3933,12 +3933,12 @@ "integrity": "sha512-QXVHoj0eJDbl3pJK+Dm0+vnR1yRB80lSrvThwoVnnxsNphovsglXSGkhHoZ6RbEwkX9fEhtwOrhLUspT2NkG3A==" }, "language-javascript": { - "version": "https://www.atom.io/api/packages/language-javascript/versions/0.130.0/tarball", - "integrity": "sha512-PHuHeuHivsm8gYZR2FopxhBMIbapFFLdztyao7E9D/qDlayyTGHoGzBVPMBPXWCOh/JUnco8JArhOCAOv83Mng==", + "version": "https://www.atom.io/api/packages/language-javascript/versions/0.130.1/tarball", + "integrity": "sha512-KLz0V7EjpoYQxihWXYiNqFIdbZrOO4lMXg2K7ZA5y8/vb44reOQu1UnOwiC3f6kd1bPyJfv9zR2dUYoXVREy1Q==", "requires": { - "tree-sitter-javascript": "^0.13.10", - "tree-sitter-jsdoc": "^0.13.4", - "tree-sitter-regex": "^0.13.1" + "tree-sitter-javascript": "^0.15.0", + "tree-sitter-jsdoc": "^0.15.0", + "tree-sitter-regex": "^0.15.0" } }, "language-json": { @@ -3977,18 +3977,18 @@ "integrity": "sha512-HD6HI41u57i0/Tu9catiriURhJsef0RDrzJDkGDtdFkE9F9KPxC9Fayq2JBLJrhIyADRVXFxwxsfwQ2Jmh6hxg==" }, "language-python": { - "version": "https://www.atom.io/api/packages/language-python/versions/0.53.2/tarball", - "integrity": "sha512-ACNHWQWlRUfWrOb5MTvjP2wMTFdAq8Wnd3tWXYEd/TcfECtmCGy+6h33dt9X6SmAZz6OGKQ7V8lnVbOlh3X+Fw==", + "version": "https://www.atom.io/api/packages/language-python/versions/0.53.3/tarball", + "integrity": "sha512-oZJ1WLqpdkpx8ca08jG6BmP/S6YNyu15Q0qMQKAle6ucbK0MagdmpaEcTP/1PkIIncCLaYa1Kdi15QZ+mCva8Q==", "requires": { "atom-grammar-test": "^0.6.4", - "tree-sitter-python": "^0.14.0" + "tree-sitter-python": "^0.15.0" } }, "language-ruby": { - "version": "https://www.atom.io/api/packages/language-ruby/versions/0.72.16/tarball", - "integrity": "sha512-7Ju9OP+fIo5qvFWFLuSR8KJe7wldZYI8m3ToBcds4v0+Q8i7+xNO2marC0JD72uEiK/x26xP9pYv/isSqTQ4dg==", + "version": "https://www.atom.io/api/packages/language-ruby/versions/0.72.17/tarball", + "integrity": "sha512-Yz+Kq06P07qz6KrC3I9vkMf60HjWTFGZBr8XTZOFs1AyLlHdxhXOnm67Rimlb4deCbGjzLda2JhqRkbUq6Y9FQ==", "requires": { - "tree-sitter-ruby": "^0.13.12" + "tree-sitter-ruby": "^0.15.0" } }, "language-ruby-on-rails": { @@ -4006,10 +4006,10 @@ "integrity": "sha512-qaH8BDNBOkpbR4thmcRimEphnrzzhpDxeQM+WCM3Unp3a8r3aV2xcY9LlvbZxpclz8TOUyvuc5qgj1YI//ge9w==" }, "language-shellscript": { - "version": "https://www.atom.io/api/packages/language-shellscript/versions/0.27.11/tarball", - "integrity": "sha512-SgVIqPfJz47jaJOe8d6INI6dIJUhznSsyF3rIyePQoDzimjPIOsgrMQEXYjfHicVts/q4Pa6D6x8v/sn2fTgog==", + "version": "https://www.atom.io/api/packages/language-shellscript/versions/0.27.12/tarball", + "integrity": "sha512-qulEv2pSginsKhMuIrqjBLmuNIEHorAjhNQZRsycW+cKR4c4Py+NEoMoGETEJhzIgxDs7bw7vffbFNRHUCPLgA==", "requires": { - "tree-sitter-bash": "^0.13.9" + "tree-sitter-bash": "^0.15.0" } }, "language-source": { @@ -4033,10 +4033,10 @@ "integrity": "sha512-6xFDqM6nZpynmxGKUS85iUWY0yeub7GYvLyzSOqDejMuOL5UXAITnSNcb7jhr+hQA8KTj5dCmRjphkAQER4Ucg==" }, "language-typescript": { - "version": "https://www.atom.io/api/packages/language-typescript/versions/0.5.0/tarball", - "integrity": "sha512-rRArdgBSjIxfMceapfPil4n5fraIr3lBWGWuXpRqGvYkmB7scvt01MpbCvdKlJGz/KAd7wKG8criIYqBvy2QDg==", + "version": "https://www.atom.io/api/packages/language-typescript/versions/0.5.2/tarball", + "integrity": "sha512-ji8aJg5QOueUHwwljnhDX/MkGSNReAJ2U0JyrB1HHZSJuYz89w1uSYYkoUfwK05FOkMLQr8kPi6SruZyIcRCUQ==", "requires": { - "tree-sitter-typescript": "^0.14.0" + "tree-sitter-typescript": "^0.15.1" } }, "language-xml": { @@ -6526,26 +6526,26 @@ } }, "tree-sitter-bash": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/tree-sitter-bash/-/tree-sitter-bash-0.13.9.tgz", - "integrity": "sha512-b0L+QLS2eeIVrHnnbkFlvO1nElhPwqTxLIwyTeJytPYT0TS50Pe7bP+uPi3gkHT1YajxcauCxX1aDWDiZK1h5Q==", + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/tree-sitter-bash/-/tree-sitter-bash-0.15.0.tgz", + "integrity": "sha512-rqXLK1S7ILV2W/mHrugruycDIJE/LXZzIqOUAWBXN4cTiFTcCnLlreTAu8nRqpxfPk76qQeJ9Os5D14Comg21Q==", "requires": { "nan": "^2.10.0", "prebuild-install": "^5.0.0" } }, "tree-sitter-c": { - "version": "0.13.13", - "resolved": "https://registry.npmjs.org/tree-sitter-c/-/tree-sitter-c-0.13.13.tgz", - "integrity": "sha512-ToGn+YgTnidSN7Y1qYoEUlk6kws+WKsEL7G3GmQ62ZUhxE7Oumom65l+QS0JuQXpLeic4BWhXEhOKugOkYpqzA==", + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/tree-sitter-c/-/tree-sitter-c-0.15.0.tgz", + "integrity": "sha512-TCae6lqrzIoOL0LAbAoC//zrdzqyouJO7zp9qTfVJmlz/BEw5Z6UrnDYNt6n1t1ENPDVgUAjPI8dU0TuZfjF2A==", "requires": { "nan": "^2.10.0" } }, "tree-sitter-cpp": { - "version": "0.13.15", - "resolved": "https://registry.npmjs.org/tree-sitter-cpp/-/tree-sitter-cpp-0.13.15.tgz", - "integrity": "sha512-S+29FaAfWFCkG02Lw0p4dVFRYnFua9Ua8tY+oFM9ZTgZMaBc7o5rfXVCxNIv5kXKdkHVq0TJWybsFJhtLlQuAw==", + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/tree-sitter-cpp/-/tree-sitter-cpp-0.15.0.tgz", + "integrity": "sha512-ckK6eIGljzEaOrGRR+5aQGQTXgkTcV6iiqZJoSlPSCNbbSjQHztNRFFlV5yWwQxHnpGfgNUdHnQgnEqd3ffObQ==", "requires": { "nan": "^2.10.0" } @@ -6566,49 +6566,56 @@ } }, "tree-sitter-embedded-template": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/tree-sitter-embedded-template/-/tree-sitter-embedded-template-0.13.0.tgz", - "integrity": "sha512-IJVjMcL2Bg+qF+HibtEXTF4CE6A66ppGSqU8E+2ddn2pCqDtZGREhI+KfqerF9NpKSo1OtbvhXiEXPdXQANLGg==", + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/tree-sitter-embedded-template/-/tree-sitter-embedded-template-0.15.0.tgz", + "integrity": "sha512-LyDtwopMlAHg3T4qeBCywKIMGC4A+a59Y4OaE0LO+UtPVgm5xC3kY+Rq3A9T3Dp6L4ZxZl+zL6LBQA5D0mMnlg==", "requires": { "nan": "^2.0.0" } }, "tree-sitter-go": { - "version": "0.13.3", - "resolved": "https://registry.npmjs.org/tree-sitter-go/-/tree-sitter-go-0.13.3.tgz", - "integrity": "sha512-pXnlEDMwrCdnYaOzfEzlMlWqZEKDJXEG4bPvc9j5JSd7IYDWBrwxo+XXuraLSlbj1mJL2kKLIDO8cKDNxUscHw==", + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/tree-sitter-go/-/tree-sitter-go-0.15.0.tgz", + "integrity": "sha512-booht80IETCTTj79Yeicr0UmH9DhZeg8IA58Cf8evuARatbebsUQdh4Zg49Ye+15zVD663/LM+NxkmnJLfq2Rw==", "requires": { "nan": "^2.10.0" } }, "tree-sitter-html": { - "version": "0.13.5", - "resolved": "https://registry.npmjs.org/tree-sitter-html/-/tree-sitter-html-0.13.5.tgz", - "integrity": "sha512-lawojfDlj/9ujEYvLoW4+WTTh2ocrYCYP2Dw5LmwxuvvE2lHr/D4RWA8W1N4jpR58tVef0SSqnnQwJkl1pNIeA==", + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/tree-sitter-html/-/tree-sitter-html-0.15.0.tgz", + "integrity": "sha512-i8pUX4hNljVpo35D4S+8iopJBU6mS8XRbupjEycjsI7+FSBhr8tnMrx9hjjYhgKYCHdxTnYGTi9K7jc0p3gVDA==", "requires": { "nan": "^2.10.0" } }, "tree-sitter-javascript": { - "version": "0.13.10", - "resolved": "https://registry.npmjs.org/tree-sitter-javascript/-/tree-sitter-javascript-0.13.10.tgz", - "integrity": "sha512-ku/841Nu7k/VXwI2ifm7xxv2cUiiYztLlIeYTYZXpjaIHMfFer5XZRgmZldJHVthTQ9uRMEr7UQ0qeqnWKzOlg==", + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/tree-sitter-javascript/-/tree-sitter-javascript-0.15.0.tgz", + "integrity": "sha512-1MJ1gO2Bp///UNexxUfGfh5A75Gb5qFxklAhQPgrbWSK6OgjgaHRiYMmW5tRMqoexSp3U2+9bp4j4Nc3Q2lEpg==", "requires": { - "nan": "^2.4.0" + "nan": "^2.12.1" + }, + "dependencies": { + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==" + } } }, "tree-sitter-jsdoc": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/tree-sitter-jsdoc/-/tree-sitter-jsdoc-0.13.4.tgz", - "integrity": "sha512-823BIawpN3JegYIhP3tTUlVO+Qc1iaGSl9CEiXt5Lun58TOV56HMnqq6iWgtdcMVcykO24C6Yeovqk+3y20FFw==", + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/tree-sitter-jsdoc/-/tree-sitter-jsdoc-0.15.0.tgz", + "integrity": "sha512-Z5jPAYpB0ofLJYwXTr8oQLBMHqIzMNnpGYKaMVIMpt+wa6ee9pSyy4Uq/tMUQB3qxiYT+66Ij8hu4ou1TNW2CA==", "requires": { "nan": "^2.11.1" }, "dependencies": { "nan": { - "version": "2.13.2", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.13.2.tgz", - "integrity": "sha512-TghvYc72wlMGMVMluVo9WRJc0mB8KxxF/gZ4YYFy7V2ZQX9l7rgbPg7vjS9mt6U5HXODVFVI2bOduCzwOMv/lw==" + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==" } } }, @@ -6621,34 +6628,34 @@ } }, "tree-sitter-python": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/tree-sitter-python/-/tree-sitter-python-0.14.0.tgz", - "integrity": "sha512-Kcj5AUdeI4/c/JLsQV8OFI0zLrwcQ1nKoqCRr+W73Tp5SIK+Dd1ILNC5TFHPw1IqOGstcg8AH0XTeU0uq3boZg==", + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/tree-sitter-python/-/tree-sitter-python-0.15.0.tgz", + "integrity": "sha512-lOV84DUTsyab8xRfU0o8pBQOKAZPjIJsGL7q0buuORHQvvwnvy3iwF/83OGSyiNYRJzPz6gW+E1N/VgNNavMHA==", "requires": { "nan": "^2.4.0" } }, "tree-sitter-regex": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/tree-sitter-regex/-/tree-sitter-regex-0.13.1.tgz", - "integrity": "sha512-A+ULuVOc37NOjmmmddqXMRwUq8g51FCRZ7YSupLdFcHngl1adI3nBRPskC9A8e++9jF+5fLytwA4X6uHW/v/mg==", + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/tree-sitter-regex/-/tree-sitter-regex-0.15.0.tgz", + "integrity": "sha512-e6SWC2vvDwFlTrKZMiqrKz5+6YpOawjb4wh7VyQClpF5fjOC6AeQO0EB0+oWXXKcveFZK0Xdn+cB/zY0GHwYrg==", "requires": { "nan": "^2.10.0" } }, "tree-sitter-ruby": { - "version": "0.13.14", - "resolved": "https://registry.npmjs.org/tree-sitter-ruby/-/tree-sitter-ruby-0.13.14.tgz", - "integrity": "sha512-ye0Bpzp12HifMoocwhDVR0Adqo7DdR44anPHkx1qhhmdpzMdzsW7WzQYBTJjQo/iFXsgahl/Q9L7AwNI+2cKLw==", + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/tree-sitter-ruby/-/tree-sitter-ruby-0.15.0.tgz", + "integrity": "sha512-DWLepimzxB6miFLS2dRUQHvQKxEyd3nkzl4WuYvGZEeqiVb3Y4KbzCgk4LCuhmqb+nhONZEgHsNBSN0G6hcpGw==", "requires": { "nan": "^2.12.1", "prebuild-install": "^5.0.0" }, "dependencies": { "nan": { - "version": "2.13.2", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.13.2.tgz", - "integrity": "sha512-TghvYc72wlMGMVMluVo9WRJc0mB8KxxF/gZ4YYFy7V2ZQX9l7rgbPg7vjS9mt6U5HXODVFVI2bOduCzwOMv/lw==" + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==" } } }, @@ -6661,9 +6668,9 @@ } }, "tree-sitter-typescript": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/tree-sitter-typescript/-/tree-sitter-typescript-0.14.0.tgz", - "integrity": "sha512-gx54LvIbjIdqSYGwau5G4Kr7j1oEwfWoZDKrR3jUlINEwskNOXaOzgsSdIM92JnFyqdBU+N6mBHpzjafbJ8EFw==", + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/tree-sitter-typescript/-/tree-sitter-typescript-0.15.1.tgz", + "integrity": "sha512-xntREG9BE+zknNgcwmeVuq5/AT+lVCSUKvhX6T6KoZLk5OPY5EfHrTqGTxS97KDlSRiGfGPheOPMNzIgk/kwNQ==", "requires": { "nan": "^2.10.0" } diff --git a/package.json b/package.json index 0c6c7d185..7594bad3d 100644 --- a/package.json +++ b/package.json @@ -77,18 +77,18 @@ "jasmine-tagged": "^1.1.4", "key-path-helpers": "^0.4.0", "keybinding-resolver": "https://www.atom.io/api/packages/keybinding-resolver/versions/0.39.0/tarball", - "language-c": "https://www.atom.io/api/packages/language-c/versions/0.60.17/tarball", + "language-c": "https://www.atom.io/api/packages/language-c/versions/0.60.18/tarball", "language-clojure": "https://www.atom.io/api/packages/language-clojure/versions/0.22.8/tarball", "language-coffee-script": "https://www.atom.io/api/packages/language-coffee-script/versions/0.50.0/tarball", "language-csharp": "https://www.atom.io/api/packages/language-csharp/versions/1.1.0/tarball", "language-css": "https://www.atom.io/api/packages/language-css/versions/0.44.0/tarball", "language-gfm": "https://www.atom.io/api/packages/language-gfm/versions/0.90.6/tarball", "language-git": "https://www.atom.io/api/packages/language-git/versions/0.19.1/tarball", - "language-go": "https://www.atom.io/api/packages/language-go/versions/0.47.0/tarball", - "language-html": "https://www.atom.io/api/packages/language-html/versions/0.52.1/tarball", + "language-go": "https://www.atom.io/api/packages/language-go/versions/0.47.1/tarball", + "language-html": "https://www.atom.io/api/packages/language-html/versions/0.52.3/tarball", "language-hyperlink": "https://www.atom.io/api/packages/language-hyperlink/versions/0.17.1/tarball", "language-java": "https://www.atom.io/api/packages/language-java/versions/0.31.3/tarball", - "language-javascript": "https://www.atom.io/api/packages/language-javascript/versions/0.130.0/tarball", + "language-javascript": "https://www.atom.io/api/packages/language-javascript/versions/0.130.1/tarball", "language-json": "https://www.atom.io/api/packages/language-json/versions/1.0.4/tarball", "language-less": "https://www.atom.io/api/packages/language-less/versions/0.34.3/tarball", "language-make": "https://www.atom.io/api/packages/language-make/versions/0.23.0/tarball", @@ -97,18 +97,18 @@ "language-perl": "https://www.atom.io/api/packages/language-perl/versions/0.38.1/tarball", "language-php": "https://www.atom.io/api/packages/language-php/versions/0.44.1/tarball", "language-property-list": "https://www.atom.io/api/packages/language-property-list/versions/0.9.1/tarball", - "language-python": "https://www.atom.io/api/packages/language-python/versions/0.53.2/tarball", - "language-ruby": "https://www.atom.io/api/packages/language-ruby/versions/0.72.16/tarball", + "language-python": "https://www.atom.io/api/packages/language-python/versions/0.53.3/tarball", + "language-ruby": "https://www.atom.io/api/packages/language-ruby/versions/0.72.17/tarball", "language-ruby-on-rails": "https://www.atom.io/api/packages/language-ruby-on-rails/versions/0.25.3/tarball", "language-rust-bundled": "file:packages/language-rust-bundled", "language-sass": "https://www.atom.io/api/packages/language-sass/versions/0.62.0/tarball", - "language-shellscript": "https://www.atom.io/api/packages/language-shellscript/versions/0.27.11/tarball", + "language-shellscript": "https://www.atom.io/api/packages/language-shellscript/versions/0.27.12/tarball", "language-source": "https://www.atom.io/api/packages/language-source/versions/0.9.0/tarball", "language-sql": "https://www.atom.io/api/packages/language-sql/versions/0.25.10/tarball", "language-text": "https://www.atom.io/api/packages/language-text/versions/0.7.4/tarball", "language-todo": "https://www.atom.io/api/packages/language-todo/versions/0.29.4/tarball", "language-toml": "https://www.atom.io/api/packages/language-toml/versions/0.20.0/tarball", - "language-typescript": "https://www.atom.io/api/packages/language-typescript/versions/0.5.0/tarball", + "language-typescript": "https://www.atom.io/api/packages/language-typescript/versions/0.5.2/tarball", "language-xml": "https://www.atom.io/api/packages/language-xml/versions/0.35.3/tarball", "language-yaml": "https://www.atom.io/api/packages/language-yaml/versions/0.32.0/tarball", "less-cache": "1.1.0", @@ -229,18 +229,18 @@ "welcome": "0.36.9", "whitespace": "0.37.7", "wrap-guide": "0.41.0", - "language-c": "0.60.17", + "language-c": "0.60.18", "language-clojure": "0.22.8", "language-coffee-script": "0.50.0", "language-csharp": "1.1.0", "language-css": "0.44.0", "language-gfm": "0.90.6", "language-git": "0.19.1", - "language-go": "0.47.0", - "language-html": "0.52.1", + "language-go": "0.47.1", + "language-html": "0.52.3", "language-hyperlink": "0.17.1", "language-java": "0.31.3", - "language-javascript": "0.130.0", + "language-javascript": "0.130.1", "language-json": "1.0.4", "language-less": "0.34.3", "language-make": "0.23.0", @@ -249,18 +249,18 @@ "language-perl": "0.38.1", "language-php": "0.44.1", "language-property-list": "0.9.1", - "language-python": "0.53.2", - "language-ruby": "0.72.16", + "language-python": "0.53.3", + "language-ruby": "0.72.17", "language-ruby-on-rails": "0.25.3", "language-rust-bundled": "file:./packages/language-rust-bundled", "language-sass": "0.62.0", - "language-shellscript": "0.27.11", + "language-shellscript": "0.27.12", "language-source": "0.9.0", "language-sql": "0.25.10", "language-text": "0.7.4", "language-todo": "0.29.4", "language-toml": "0.20.0", - "language-typescript": "0.5.0", + "language-typescript": "0.5.2", "language-xml": "0.35.3", "language-yaml": "0.32.0" }, diff --git a/spec/tree-sitter-language-mode-spec.js b/spec/tree-sitter-language-mode-spec.js index 8919a54ec..b3ae42b1c 100644 --- a/spec/tree-sitter-language-mode-spec.js +++ b/spec/tree-sitter-language-mode-spec.js @@ -1555,7 +1555,7 @@ describe('TreeSitterLanguageMode', () => { scopes: {}, folds: [ { - type: ['element', 'raw_element'], + type: ['element', 'script_element'], start: { index: 0 }, end: { index: -1 } } @@ -1696,7 +1696,7 @@ describe('TreeSitterLanguageMode', () => { parser: 'tree-sitter-html', scopes: { fragment: 'text.html', - raw_element: 'script.tag' + script_element: 'script.tag' }, injectionRegExp: 'html', injectionPoints: [SCRIPT_TAG_INJECTION_POINT] @@ -1859,7 +1859,7 @@ describe('TreeSitterLanguageMode', () => { 'text.html', 'fragment', 'element', - 'raw_element', + 'script_element', 'raw_text', 'program', 'expression_statement', @@ -2409,7 +2409,7 @@ const HTML_TEMPLATE_LITERAL_INJECTION_POINT = { }; const SCRIPT_TAG_INJECTION_POINT = { - type: 'raw_element', + type: 'script_element', language() { return 'javascript'; }, From 136ec1474e5f16bd8b6074f2827965950a8e171b Mon Sep 17 00:00:00 2001 From: Rafael Oleza Date: Wed, 19 Jun 2019 09:16:19 +0200 Subject: [PATCH 56/61] Fix generation of release notes for nightly builds --- script/vsts/lib/release-notes.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/script/vsts/lib/release-notes.js b/script/vsts/lib/release-notes.js index 360125148..144518d17 100644 --- a/script/vsts/lib/release-notes.js +++ b/script/vsts/lib/release-notes.js @@ -150,7 +150,7 @@ module.exports.generateForNightly = async function( ); } - return output; + return output.join('\n'); }; function extractWrittenReleaseNotes(oldReleaseNotes) { From ef8e5bc12a55d8281ddd4b71a3c4d28cf8242830 Mon Sep 17 00:00:00 2001 From: Rafael Oleza Date: Wed, 19 Jun 2019 09:42:42 +0200 Subject: [PATCH 57/61] Generate delta nightly updaters for windows We've recently updated to electron-winstaller@3.0.4, which includes a new version of Squirrel.Windows with the following fix: https://github.com/anaisbetts/NuGet/pull/1 Thanks to that fix we don't need anymore to disable delta nuget updaters, since that won't fail anymore. --- script/lib/create-windows-installer.js | 1 - 1 file changed, 1 deletion(-) diff --git a/script/lib/create-windows-installer.js b/script/lib/create-windows-installer.js index 9308a3c2b..8b68f53a8 100644 --- a/script/lib/create-windows-installer.js +++ b/script/lib/create-windows-installer.js @@ -25,7 +25,6 @@ module.exports = packagedAppPath => { ), outputDirectory: CONFIG.buildOutputPath, noMsi: true, - noDelta: CONFIG.channel === 'nightly', // Delta packages are broken for nightly versions past nightly9 due to Squirrel/NuGet limitations remoteReleases: `${updateUrlPrefix}/api/updates${archSuffix}?version=${ CONFIG.computedAppVersion }`, From 2c516fb705e43dc8d8b0a546955ea2ea4268958a Mon Sep 17 00:00:00 2001 From: Rafael Oleza Date: Wed, 19 Jun 2019 16:10:50 +0200 Subject: [PATCH 58/61] =?UTF-8?q?=E2=AC=86=EF=B8=8F=20electron-winstaller?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit With this PR Atom uses a custom version of `electron-winstaller` named `@atom/electron-winstaller` which contains a custom version of `Squirrel.Windows` built from https://github.com/Squirrel/Squirrel.Windows/pull/149 This should fix the issues when upgrading from e.g nightly-9 to nightly-10 --- script/build | 2 +- script/lib/code-sign-on-windows.js | 1 + script/lib/create-windows-installer.js | 2 +- script/package-lock.json | 120 ++++++++++++------------- script/package.json | 2 +- 5 files changed, 64 insertions(+), 63 deletions(-) diff --git a/script/build b/script/build index 5c1eb0575..9219edad2 100755 --- a/script/build +++ b/script/build @@ -109,7 +109,7 @@ if (!argv.generateApiDocs) { if (argv.codeSign) { const executablesToSign = [ path.join(packagedAppPath, 'Atom.exe') ] if (argv.createWindowsInstaller) { - executablesToSign.push(path.join(__dirname, 'node_modules', 'electron-winstaller', 'vendor', 'Squirrel.exe')) + executablesToSign.push(path.join(__dirname, 'node_modules', '@atom', 'electron-winstaller', 'vendor', 'Squirrel.exe')) } codeSignOnWindows(executablesToSign) } else { diff --git a/script/lib/code-sign-on-windows.js b/script/lib/code-sign-on-windows.js index 93bd3e65d..181f58c15 100644 --- a/script/lib/code-sign-on-windows.js +++ b/script/lib/code-sign-on-windows.js @@ -40,6 +40,7 @@ module.exports = function(filesToSign) { __dirname, '..', 'node_modules', + '@atom', 'electron-winstaller', 'vendor', 'signtool.exe' diff --git a/script/lib/create-windows-installer.js b/script/lib/create-windows-installer.js index 8b68f53a8..17171546a 100644 --- a/script/lib/create-windows-installer.js +++ b/script/lib/create-windows-installer.js @@ -1,6 +1,6 @@ 'use strict'; -const electronInstaller = require('electron-winstaller'); +const electronInstaller = require('@atom/electron-winstaller'); const fs = require('fs'); const glob = require('glob'); const path = require('path'); diff --git a/script/package-lock.json b/script/package-lock.json index 432c19cf9..9b3839dae 100644 --- a/script/package-lock.json +++ b/script/package-lock.json @@ -8,6 +8,66 @@ "resolved": "https://registry.npmjs.org/7zip-bin/-/7zip-bin-4.0.2.tgz", "integrity": "sha512-XtGk+IF57pr852UK1AhQJXqmm1WmSgS5uISL+LPs0z/iAxXouMvdlLJrHPeukP6gd7yR2rDTMSMkHNODgwIq7A==" }, + "@atom/electron-winstaller": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/@atom/electron-winstaller/-/electron-winstaller-0.0.1.tgz", + "integrity": "sha512-E8bGTBrhf4HsZZS5oPxQgx8XL2wCz04vi0gtYzQH+i9gpxdkuGuV+RHGAtQY+k+wbG5RVR89sB6ICMmhUYNi2Q==", + "requires": { + "@babel/runtime": "^7.3.4", + "asar": "^1.0.0", + "debug": "^4.1.1", + "fs-extra": "^7.0.1", + "lodash.template": "^4.2.2", + "pify": "^4.0.1", + "temp": "^0.9.0" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" + }, + "temp": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/temp/-/temp-0.9.0.tgz", + "integrity": "sha512-YfUhPQCJoNQE5N+FJQcdPz63O3x3sdT4Xju69Gj4iZe0lBKOtnAMi0SLj9xKhGkcGhsxThvTJ/usxtFPo438zQ==", + "requires": { + "rimraf": "~2.6.2" + } + } + } + }, "@babel/code-frame": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", @@ -2300,66 +2360,6 @@ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.52.tgz", "integrity": "sha1-0tnxJwuko7lnuDHEDvcftNmrXOA=" }, - "electron-winstaller": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/electron-winstaller/-/electron-winstaller-3.0.4.tgz", - "integrity": "sha512-u3wTQUzBBBGWbExkKvgKt69EMoF0xC8uLQS5vTXtwr97BH8ffSW8CcHvVGWRyRDIhg2AA+togKOKWr41wgCeiA==", - "requires": { - "@babel/runtime": "^7.3.4", - "asar": "^1.0.0", - "debug": "^4.1.1", - "fs-extra": "^7.0.1", - "lodash.template": "^4.2.2", - "pify": "^4.0.1", - "temp": "^0.9.0" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "requires": { - "ms": "^2.1.1" - } - }, - "fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" - }, - "temp": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/temp/-/temp-0.9.0.tgz", - "integrity": "sha512-YfUhPQCJoNQE5N+FJQcdPz63O3x3sdT4Xju69Gj4iZe0lBKOtnAMi0SLj9xKhGkcGhsxThvTJ/usxtFPo438zQ==", - "requires": { - "rimraf": "~2.6.2" - } - } - } - }, "emoji-regex": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", diff --git a/script/package.json b/script/package.json index c10f44a4e..35d0cf00e 100644 --- a/script/package.json +++ b/script/package.json @@ -14,7 +14,7 @@ "electron-link": "0.4.0", "electron-mksnapshot": "^3.1.10", "electron-packager": "12.2.0", - "electron-winstaller": "^3.0.4", + "@atom/electron-winstaller": "0.0.1", "eslint": "^5.16.0", "eslint-config-prettier": "^4.2.0", "eslint-config-standard": "^12.0.0", From 288cd124b7cb8faa6b826b01bcd829c5c86fb1d8 Mon Sep 17 00:00:00 2001 From: Max Brunsfeld Date: Wed, 19 Jun 2019 10:06:24 -0700 Subject: [PATCH 59/61] Fix exception when multiple language layers are not yet highlighted --- src/tree-sitter-language-mode.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/tree-sitter-language-mode.js b/src/tree-sitter-language-mode.js index 77d902cee..6d8c93368 100644 --- a/src/tree-sitter-language-mode.js +++ b/src/tree-sitter-language-mode.js @@ -1010,7 +1010,7 @@ class HighlightIterator { if ( next.offset === first.offset && next.atEnd === first.atEnd && - next.languageLayer.depth > first.languageLayer.depth + next.depth > first.depth ) { this.currentScopeIsCovered = true; return; @@ -1079,6 +1079,7 @@ class HighlightIterator { class LayerHighlightIterator { constructor(languageLayer, treeCursor) { this.languageLayer = languageLayer; + this.depth = this.languageLayer.depth; // The iterator is always positioned at either the start or the end of some node // in the syntax tree. From a6c21292beab45531194a917721145551aa35451 Mon Sep 17 00:00:00 2001 From: Rafael Oleza Date: Thu, 20 Jun 2019 11:13:19 +0200 Subject: [PATCH 60/61] Publish nightly releases to atom repo on packagecloud.io --- script/vsts/nightly-release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/script/vsts/nightly-release.yml b/script/vsts/nightly-release.yml index d0ae2239b..2faacf724 100644 --- a/script/vsts/nightly-release.yml +++ b/script/vsts/nightly-release.yml @@ -53,7 +53,7 @@ jobs: displayName: Download Release Artifacts - script: | - node $(Build.SourcesDirectory)\script\vsts\upload-artifacts.js --create-github-release --assets-path "$(System.ArtifactsDirectory)" + node $(Build.SourcesDirectory)\script\vsts\upload-artifacts.js --create-github-release --assets-path "$(System.ArtifactsDirectory)" --linux-repo-name "atom" env: GITHUB_TOKEN: $(GITHUB_TOKEN) ATOM_RELEASE_VERSION: $(ReleaseVersion) From 73274fb70a0a012319a72363f395fe8ccadb096a Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Thu, 20 Jun 2019 14:20:31 +0200 Subject: [PATCH 61/61] Run script/bootstrap for pull requests originated from forks --- script/vsts/platforms/macos.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/script/vsts/platforms/macos.yml b/script/vsts/platforms/macos.yml index 042b2652e..a3f11c712 100644 --- a/script/vsts/platforms/macos.yml +++ b/script/vsts/platforms/macos.yml @@ -122,6 +122,16 @@ jobs: targetfolder: '**/node_modules, !**/node_modules/**/node_modules' vstsFeed: 'bae1bc26-220d-43c7-a955-4de039370de2' + # The artifact caching task does not work on forks, so we need to + # bootstrap again for pull requests coming from forked repositories. + - script: script/bootstrap + displayName: Bootstrap build environment + env: + CI: true + CI_PROVIDER: VSTS + NPM_BIN_PATH: /usr/local/bin/npm + condition: ne(variables['CacheRestored'], 'true') + - task: DownloadBuildArtifacts@0 displayName: Download atom-mac.zip inputs: