From 44c96da50fad7376c4779b8b1c7cbdf9e715010d Mon Sep 17 00:00:00 2001 From: Kyle Carberry Date: Wed, 27 Mar 2019 10:40:17 -0400 Subject: [PATCH 01/14] Adjust linux distro to ubuntu 14.04 --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 37ccfea1a8dc..1b8f283e4a00 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,7 +6,7 @@ env: matrix: include: - os: linux - dist: ubuntu + dist: trusty - os: osx before_install: - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sudo apt-get install libxkbfile-dev From 16313f3c9eca73a1277490bc75121f3159dc7085 Mon Sep 17 00:00:00 2001 From: Kyle Carberry Date: Wed, 27 Mar 2019 11:00:36 -0400 Subject: [PATCH 02/14] Cache lib directory for speedy builds --- .travis.yml | 5 ++++- build/tasks.ts | 52 ++++++++++++++++++++++++++++++++++++++++++++------ 2 files changed, 50 insertions(+), 7 deletions(-) diff --git a/.travis.yml b/.travis.yml index 1b8f283e4a00..f6761e353679 100644 --- a/.travis.yml +++ b/.travis.yml @@ -35,4 +35,7 @@ deploy: on: repo: codercom/code-server branch: master -cache: yarn +cache: + yarn: true + directories: + - lib diff --git a/build/tasks.ts b/build/tasks.ts index a784fbf57216..8718a2f16a59 100644 --- a/build/tasks.ts +++ b/build/tasks.ts @@ -156,18 +156,27 @@ const copyForDefaultExtensions = register("build:copy-vscode", async (runner) => }); const buildDefaultExtensions = register("build:default-extensions", async (runner) => { - if (!fs.existsSync(defaultExtensionsPath)) { - await copyForDefaultExtensions(); - runner.cwd = extDirPath; - const resp = await runner.execute(isWin ? "npx.cmd" : "npx", [isWin ? "gulp.cmd" : "gulp", "vscode-linux-x64", "--max-old-space-size=32384"]); - if (resp.exitCode !== 0) { - throw new Error(`Failed to build default extensions: ${resp.stderr}`); + if (fs.existsSync(defaultExtensionsPath)) { + if (ifCiAndVsc("vscode-default-extensions")) { + return; + } else { + fse.removeSync(defaultExtensionsPath); } } + + await copyForDefaultExtensions(); + runner.cwd = extDirPath; + const resp = await runner.execute(isWin ? "npx.cmd" : "npx", [isWin ? "gulp.cmd" : "gulp", "vscode-linux-x64", "--max-old-space-size=32384"]); + if (resp.exitCode !== 0) { + throw new Error(`Failed to build default extensions: ${resp.stderr}`); + } }); const ensureInstalled = register("vscode:install", async (runner) => { await ensureCloned(); + if (ifCiAndVsc("vscode")) { + return; + } runner.cwd = vscodePath; const install = await runner.execute(isWin ? "yarn.cmd" : "yarn", []); @@ -177,6 +186,9 @@ const ensureInstalled = register("vscode:install", async (runner) => { }); const ensureCloned = register("vscode:clone", async (runner) => { + if (ifCiAndVsc("vscode")) { + return; + } if (fs.existsSync(vscodePath)) { await ensureClean(); } else { @@ -196,6 +208,14 @@ const ensureCloned = register("vscode:clone", async (runner) => { }); const ensureClean = register("vscode:clean", async (runner) => { + if (ifCiAndVsc("vscode")) { + const reset = await runner.execute("git", ["reset", "--hard"]); + if (reset.exitCode !== 0) { + throw new Error(`Failed to reset git repository: ${reset.stderr}`); + } + + return; + } runner.cwd = vscodePath; const status = await runner.execute("git", ["status", "--porcelain"]); @@ -255,4 +275,24 @@ register("package", async (runner, releaseTag) => { : runner.execute("zip", ["-r", `${archiveName}.zip`, `${archiveName}`]); }); +/** + * If we're in the CI and the VS Code version is the same, + * then we don't need to rebuild. + */ +const ifCiAndVsc = (vscName: "vscode" | "vscode-default-extensions"): boolean => { + if (process.env.CI) { + try { + const packageJson = path.join(libPath, vscName, "package.json"); + const version = JSON.parse(fs.readFileSync(packageJson).toString("utf8")).version; + if (version === vscodeVersion) { + return true; + } + } catch (ex) { + // Nothin. Will return false below + } + } + + return false; +}; + run(); From 7809a6a737117ee53af7bf33c3abc56263e852a7 Mon Sep 17 00:00:00 2001 From: Kyle Carberry Date: Wed, 27 Mar 2019 15:19:50 -0400 Subject: [PATCH 03/14] Fix path linking for default extensions --- build/tasks.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/build/tasks.ts b/build/tasks.ts index 8718a2f16a59..80862de6ec84 100644 --- a/build/tasks.ts +++ b/build/tasks.ts @@ -9,6 +9,7 @@ const isWin = os.platform() === "win32"; const libPath = path.join(__dirname, "../lib"); const vscodePath = path.join(libPath, "vscode"); const pkgsPath = path.join(__dirname, "../packages"); +const defaultExtensionsBuildDirectory = path.join(libPath, "vscode-default-extensions"); const defaultExtensionsPath = path.join(libPath, "VSCode-linux-x64/resources/app/extensions"); const vscodeVersion = process.env.VSCODE_VERSION || "1.32.0"; @@ -129,13 +130,12 @@ const buildWeb = register("build:web", async (runner) => { await runner.execute(isWin ? "npm.cmd" : "npm", ["run", "build"]); }); -const extDirPath = path.join("lib", "vscode-default-extensions"); const copyForDefaultExtensions = register("build:copy-vscode", async (runner) => { if (!fs.existsSync(defaultExtensionsPath)) { await ensureClean(); await ensureInstalled(); await new Promise((resolve, reject): void => { - fse.remove(extDirPath, (err) => { + fse.remove(defaultExtensionsBuildDirectory, (err) => { if (err) { return reject(err); } @@ -144,7 +144,7 @@ const copyForDefaultExtensions = register("build:copy-vscode", async (runner) => }); }); await new Promise((resolve, reject): void => { - fse.copy(vscodePath, extDirPath, (err) => { + fse.copy(vscodePath, defaultExtensionsBuildDirectory, (err) => { if (err) { return reject(err); } @@ -160,12 +160,12 @@ const buildDefaultExtensions = register("build:default-extensions", async (runne if (ifCiAndVsc("vscode-default-extensions")) { return; } else { - fse.removeSync(defaultExtensionsPath); + fse.removeSync(defaultExtensionsBuildDirectory); } } await copyForDefaultExtensions(); - runner.cwd = extDirPath; + runner.cwd = defaultExtensionsBuildDirectory; const resp = await runner.execute(isWin ? "npx.cmd" : "npx", [isWin ? "gulp.cmd" : "gulp", "vscode-linux-x64", "--max-old-space-size=32384"]); if (resp.exitCode !== 0) { throw new Error(`Failed to build default extensions: ${resp.stderr}`); From 528d852cb5c27ec322e10815406dec2fe91f0c77 Mon Sep 17 00:00:00 2001 From: Kyle Carberry Date: Tue, 2 Apr 2019 11:54:57 -0400 Subject: [PATCH 04/14] Update reset --- build/tasks.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/tasks.ts b/build/tasks.ts index 80862de6ec84..23420b6da142 100644 --- a/build/tasks.ts +++ b/build/tasks.ts @@ -209,7 +209,7 @@ const ensureCloned = register("vscode:clone", async (runner) => { const ensureClean = register("vscode:clean", async (runner) => { if (ifCiAndVsc("vscode")) { - const reset = await runner.execute("git", ["reset", "--hard"]); + const reset = await runner.execute("git", ["reset", "--hard", vscodeVersion]); if (reset.exitCode !== 0) { throw new Error(`Failed to reset git repository: ${reset.stderr}`); } From 7f264f9587fb19f9ff30863f2e0722d8fdb1a5b4 Mon Sep 17 00:00:00 2001 From: Kyle Carberry Date: Tue, 2 Apr 2019 17:41:21 -0400 Subject: [PATCH 05/14] Reset to head --- build/tasks.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/tasks.ts b/build/tasks.ts index 23420b6da142..bf8de5fd1a96 100644 --- a/build/tasks.ts +++ b/build/tasks.ts @@ -209,7 +209,7 @@ const ensureCloned = register("vscode:clone", async (runner) => { const ensureClean = register("vscode:clean", async (runner) => { if (ifCiAndVsc("vscode")) { - const reset = await runner.execute("git", ["reset", "--hard", vscodeVersion]); + const reset = await runner.execute("git", ["reset", "--hard", "HEAD"]); if (reset.exitCode !== 0) { throw new Error(`Failed to reset git repository: ${reset.stderr}`); } From 8c2ce091e9ee06d4174b8732e05f24eb5f164a65 Mon Sep 17 00:00:00 2001 From: Kyle Carberry Date: Wed, 3 Apr 2019 11:05:25 -0400 Subject: [PATCH 06/14] Improve caching --- .gitignore | 1 + .travis.yml | 1 + build/tasks.ts | 2 +- package.json | 2 ++ scripts/webpack.general.config.js | 14 ++++++++ yarn.lock | 54 ++++++++++++++++++++++++++++++- 6 files changed, 72 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 8795da8d3e83..d2ee77a371fd 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ dist out .DS_Store release +.cache \ No newline at end of file diff --git a/.travis.yml b/.travis.yml index f6761e353679..132a94b4c3b8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -39,3 +39,4 @@ cache: yarn: true directories: - lib + - .cache diff --git a/build/tasks.ts b/build/tasks.ts index bf8de5fd1a96..f50180431b81 100644 --- a/build/tasks.ts +++ b/build/tasks.ts @@ -208,6 +208,7 @@ const ensureCloned = register("vscode:clone", async (runner) => { }); const ensureClean = register("vscode:clean", async (runner) => { + runner.cwd = vscodePath; if (ifCiAndVsc("vscode")) { const reset = await runner.execute("git", ["reset", "--hard", "HEAD"]); if (reset.exitCode !== 0) { @@ -216,7 +217,6 @@ const ensureClean = register("vscode:clean", async (runner) => { return; } - runner.cwd = vscodePath; const status = await runner.execute("git", ["status", "--porcelain"]); if (status.stdout.trim() !== "") { diff --git a/package.json b/package.json index 8fb17fc50d95..ea69e579e937 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ "@types/fs-extra": "^5.0.4", "@types/node": "^10.12.18", "@types/trash": "^4.3.1", + "cache-loader": "^2.0.1", "cross-env": "^5.2.0", "crypto-browserify": "^3.12.0", "css-loader": "^2.1.0", @@ -34,6 +35,7 @@ "sass-loader": "^7.1.0", "string-replace-loader": "^2.1.1", "style-loader": "^0.23.1", + "terser-webpack-plugin": "^1.2.3", "ts-loader": "^5.3.3", "ts-node": "^7.0.1", "tsconfig-paths": "^3.8.0", diff --git a/scripts/webpack.general.config.js b/scripts/webpack.general.config.js index 83215fa8cd28..4da6ca88fc68 100644 --- a/scripts/webpack.general.config.js +++ b/scripts/webpack.general.config.js @@ -3,6 +3,7 @@ const os = require("os"); const environment = process.env.NODE_ENV || "development"; const HappyPack = require("happypack"); const webpack = require("webpack"); +const TerserPlugin = require("terser-webpack-plugin"); const root = path.join(__dirname, ".."); @@ -107,6 +108,11 @@ module.exports = (options = {}) => ({ id: "ts", threads: Math.max(os.cpus().length - 1, 1), loaders: [{ + path: "cache-loader", + query: { + cacheDirectory: path.join(__dirname, "..", ".cache"), + }, + }, { path: "ts-loader", query: { happyPackMode: true, @@ -121,6 +127,14 @@ module.exports = (options = {}) => ({ "process.env.VERSION": `"${process.env.VERSION || ""}"`, }), ], + optimization: { + minimizer: [ + new TerserPlugin({ + cache: path.join(__dirname, "..", ".cache", "terser"), + parallel: true, + }), + ], + }, stats: { all: false, // Fallback for options not defined. errors: true, diff --git a/yarn.lock b/yarn.lock index 5add43c679dc..43064ed1b631 100644 --- a/yarn.lock +++ b/yarn.lock @@ -723,6 +723,17 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" +cache-loader@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/cache-loader/-/cache-loader-2.0.1.tgz#5758f41a62d7c23941e3c3c7016e6faeb03acb07" + integrity sha512-V99T3FOynmGx26Zom+JrVBytLBsmUCzVG2/4NnUKgvXN4bEV42R1ERl1IyiH/cvFIDA1Ytq2lPZ9tXDSahcQpQ== + dependencies: + loader-utils "^1.1.0" + mkdirp "^0.5.1" + neo-async "^2.6.0" + normalize-path "^3.0.0" + schema-utils "^1.0.0" + camel-case@3.0.x: version "3.0.0" resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" @@ -916,6 +927,11 @@ commander@^2.12.1, commander@^2.18.0: resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== +commander@^2.19.0: + version "2.20.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" + integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== + commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" @@ -3305,7 +3321,7 @@ negotiator@0.6.1: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" integrity sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk= -neo-async@^2.5.0: +neo-async@^2.5.0, neo-async@^2.6.0: version "2.6.0" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.0.tgz#b9d15e4d71c6762908654b5183ed38b753340835" integrity sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA== @@ -3452,6 +3468,11 @@ normalize-path@^2.1.1: dependencies: remove-trailing-separator "^1.0.1" +normalize-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + npm-bundled@^1.0.1: version "1.0.5" resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.5.tgz#3c1732b7ba936b3a10325aef616467c0ccbcc979" @@ -4625,6 +4646,14 @@ source-map-support@^0.5.6, source-map-support@~0.5.6: buffer-from "^1.0.0" source-map "^0.6.0" +source-map-support@~0.5.10: + version "0.5.11" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.11.tgz#efac2ce0800355d026326a0ca23e162aeac9a4e2" + integrity sha512-//sajEx/fGL3iw6fltKMdPvy8kL3kJ2O3iuYlRoT3k9Kb4BjOoZ+BZzaNHeuaruSt+Kf3Zk9tnfAQg9/AJqUVQ== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + source-map-url@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" @@ -4951,6 +4980,29 @@ terser-webpack-plugin@^1.1.0: webpack-sources "^1.1.0" worker-farm "^1.5.2" +terser-webpack-plugin@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.2.3.tgz#3f98bc902fac3e5d0de730869f50668561262ec8" + integrity sha512-GOK7q85oAb/5kE12fMuLdn2btOS9OBZn4VsecpHDywoUC/jLhSAKOiYo0ezx7ss2EXPMzyEWFoE0s1WLE+4+oA== + dependencies: + cacache "^11.0.2" + find-cache-dir "^2.0.0" + schema-utils "^1.0.0" + serialize-javascript "^1.4.0" + source-map "^0.6.1" + terser "^3.16.1" + webpack-sources "^1.1.0" + worker-farm "^1.5.2" + +terser@^3.16.1: + version "3.17.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-3.17.0.tgz#f88ffbeda0deb5637f9d24b0da66f4e15ab10cb2" + integrity sha512-/FQzzPJmCpjAH9Xvk2paiWrFq+5M6aVOf+2KRbwhByISDX/EujxsK+BAvrhb6H+2rtrLCHK9N01wO014vrIwVQ== + dependencies: + commander "^2.19.0" + source-map "~0.6.1" + source-map-support "~0.5.10" + terser@^3.8.1: version "3.14.1" resolved "https://registry.yarnpkg.com/terser/-/terser-3.14.1.tgz#cc4764014af570bc79c79742358bd46926018a32" From df30a361991bcf9009883c612fb87e1a08341116 Mon Sep 17 00:00:00 2001 From: Kyle Carberry Date: Wed, 3 Apr 2019 11:21:41 -0400 Subject: [PATCH 07/14] Still run yarn in CI --- build/tasks.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/tasks.ts b/build/tasks.ts index f50180431b81..b9d04f9c372e 100644 --- a/build/tasks.ts +++ b/build/tasks.ts @@ -174,7 +174,7 @@ const buildDefaultExtensions = register("build:default-extensions", async (runne const ensureInstalled = register("vscode:install", async (runner) => { await ensureCloned(); - if (ifCiAndVsc("vscode")) { + if (ifCiAndVsc("vscode") && fs.existsSync(path.join(vscodePath, "node_modules"))) { return; } From 63b9ad4515e434045dad8e74d9ae71025e91ac4a Mon Sep 17 00:00:00 2001 From: Kyle Carberry Date: Wed, 3 Apr 2019 11:26:49 -0400 Subject: [PATCH 08/14] Update yarn before install --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index 132a94b4c3b8..849d08e3be82 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,6 +11,7 @@ matrix: before_install: - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sudo apt-get install libxkbfile-dev libsecret-1-dev; fi +- npm install -g yarn@1.12.3 script: - scripts/build.sh before_deploy: From 02cd3f9d103be22ceb168320a01a367e1f9d622e Mon Sep 17 00:00:00 2001 From: Kyle Carberry Date: Wed, 3 Apr 2019 11:52:53 -0400 Subject: [PATCH 09/14] Increase cache timeout --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index 849d08e3be82..b4559c4a6afb 100644 --- a/.travis.yml +++ b/.travis.yml @@ -38,6 +38,7 @@ deploy: branch: master cache: yarn: true + timeout: 1000 directories: - lib - .cache From 0ccb4d24d48259fde396a84a11548fc1ba677070 Mon Sep 17 00:00:00 2001 From: Kyle Carberry Date: Wed, 3 Apr 2019 13:50:13 -0400 Subject: [PATCH 10/14] Install vscode from vstar --- .travis.yml | 1 - build/tasks.ts | 129 +++++----------------- package.json | 3 + packages/server/src/cli.ts | 8 ++ scripts/vstar.sh | 24 ++++ yarn.lock | 217 ++++++++++++++++++++++++++++++++++++- 6 files changed, 276 insertions(+), 106 deletions(-) create mode 100755 scripts/vstar.sh diff --git a/.travis.yml b/.travis.yml index b4559c4a6afb..d144c09bfc9a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -40,5 +40,4 @@ cache: yarn: true timeout: 1000 directories: - - lib - .cache diff --git a/build/tasks.ts b/build/tasks.ts index b9d04f9c372e..74f3e9283401 100644 --- a/build/tasks.ts +++ b/build/tasks.ts @@ -4,22 +4,22 @@ import * as fse from "fs-extra"; import * as os from "os"; import * as path from "path"; import * as zlib from "zlib"; +import * as https from "https"; +import * as tar from "tar"; const isWin = os.platform() === "win32"; const libPath = path.join(__dirname, "../lib"); const vscodePath = path.join(libPath, "vscode"); +const defaultExtensionsPath = path.join(libPath, "extensions"); const pkgsPath = path.join(__dirname, "../packages"); -const defaultExtensionsBuildDirectory = path.join(libPath, "vscode-default-extensions"); -const defaultExtensionsPath = path.join(libPath, "VSCode-linux-x64/resources/app/extensions"); const vscodeVersion = process.env.VSCODE_VERSION || "1.32.0"; +const vsSourceUrl = `https://codesrv-ci.cdr.sh/vstar-${vscodeVersion}.tar.gz`; const buildServerBinary = register("build:server:binary", async (runner) => { await ensureInstalled(); - await copyForDefaultExtensions(); await Promise.all([ buildBootstrapFork(), buildWeb(), - buildDefaultExtensions(), buildServerBundle(), buildAppBrowser(), ]); @@ -130,116 +130,43 @@ const buildWeb = register("build:web", async (runner) => { await runner.execute(isWin ? "npm.cmd" : "npm", ["run", "build"]); }); -const copyForDefaultExtensions = register("build:copy-vscode", async (runner) => { - if (!fs.existsSync(defaultExtensionsPath)) { - await ensureClean(); - await ensureInstalled(); - await new Promise((resolve, reject): void => { - fse.remove(defaultExtensionsBuildDirectory, (err) => { - if (err) { - return reject(err); - } - - resolve(); - }); - }); - await new Promise((resolve, reject): void => { - fse.copy(vscodePath, defaultExtensionsBuildDirectory, (err) => { - if (err) { - return reject(err); - } - - resolve(); - }); - }); - } -}); - -const buildDefaultExtensions = register("build:default-extensions", async (runner) => { - if (fs.existsSync(defaultExtensionsPath)) { - if (ifCiAndVsc("vscode-default-extensions")) { - return; - } else { - fse.removeSync(defaultExtensionsBuildDirectory); - } - } - - await copyForDefaultExtensions(); - runner.cwd = defaultExtensionsBuildDirectory; - const resp = await runner.execute(isWin ? "npx.cmd" : "npx", [isWin ? "gulp.cmd" : "gulp", "vscode-linux-x64", "--max-old-space-size=32384"]); - if (resp.exitCode !== 0) { - throw new Error(`Failed to build default extensions: ${resp.stderr}`); - } -}); - const ensureInstalled = register("vscode:install", async (runner) => { - await ensureCloned(); - if (ifCiAndVsc("vscode") && fs.existsSync(path.join(vscodePath, "node_modules"))) { - return; - } - - runner.cwd = vscodePath; - const install = await runner.execute(isWin ? "yarn.cmd" : "yarn", []); - if (install.exitCode !== 0) { - throw new Error(`Failed to install vscode dependencies: ${install.stderr}`); - } -}); + runner.cwd = libPath; -const ensureCloned = register("vscode:clone", async (runner) => { - if (ifCiAndVsc("vscode")) { - return; - } - if (fs.existsSync(vscodePath)) { - await ensureClean(); - } else { - fse.mkdirpSync(libPath); - runner.cwd = libPath; - const clone = await runner.execute("git", ["clone", "https://github.com/microsoft/vscode", "--branch", vscodeVersion, "--single-branch", "--depth=1"]); - if (clone.exitCode !== 0) { - throw new Error(`Failed to clone: ${clone.exitCode}`); + if (fs.existsSync(vscodePath) && fs.existsSync(defaultExtensionsPath)) { + const pkgVersion = JSON.parse(fs.readFileSync(path.join(vscodePath, "package.json")).toString("utf8")).version; + if (pkgVersion === vscodeVersion) { + return; } } - runner.cwd = vscodePath; - const checkout = await runner.execute("git", ["checkout", vscodeVersion]); - if (checkout.exitCode !== 0) { - throw new Error(`Failed to checkout: ${checkout.stderr}`); - } -}); - -const ensureClean = register("vscode:clean", async (runner) => { - runner.cwd = vscodePath; - if (ifCiAndVsc("vscode")) { - const reset = await runner.execute("git", ["reset", "--hard", "HEAD"]); - if (reset.exitCode !== 0) { - throw new Error(`Failed to reset git repository: ${reset.stderr}`); - } + fse.removeSync(libPath); + fse.mkdirpSync(libPath); - return; - } + await new Promise((resolve, reject): void => { + https.get(vsSourceUrl, (res) => { + if (res.statusCode !== 200) { + return reject(res.statusMessage); + } - const status = await runner.execute("git", ["status", "--porcelain"]); - if (status.stdout.trim() !== "") { - const clean = await runner.execute("git", ["clean", "-f", "-d", "-X"]); - if (clean.exitCode !== 0) { - throw new Error(`Failed to clean git repository: ${clean.stderr}`); - } - const removeUnstaged = await runner.execute("git", ["checkout", "--", "."]); - if (removeUnstaged.exitCode !== 0) { - throw new Error(`Failed to remove unstaged files: ${removeUnstaged.stderr}`); - } - } - const fetch = await runner.execute("git", ["fetch", "--prune"]); - if (fetch.exitCode !== 0) { - throw new Error(`Failed to fetch latest changes: ${fetch.stderr}`); - } + res.pipe(tar.x({ + C: libPath, + }).on("finish", () => { + resolve(); + }).on("error", (err: Error) => { + reject(err); + })); + }).on("error", (err) => { + reject(err); + }); + }); }); const ensurePatched = register("vscode:patch", async (runner) => { if (!fs.existsSync(vscodePath)) { throw new Error("vscode must be cloned to patch"); } - await ensureClean(); + await ensureInstalled(); runner.cwd = vscodePath; const patchPath = path.join(__dirname, "../scripts/vscode.patch"); diff --git a/package.json b/package.json index ea69e579e937..377074b146dc 100644 --- a/package.json +++ b/package.json @@ -15,11 +15,13 @@ "devDependencies": { "@types/fs-extra": "^5.0.4", "@types/node": "^10.12.18", + "@types/tar": "^4.0.0", "@types/trash": "^4.3.1", "cache-loader": "^2.0.1", "cross-env": "^5.2.0", "crypto-browserify": "^3.12.0", "css-loader": "^2.1.0", + "decompress": "^4.2.0", "file-loader": "^3.0.1", "fork-ts-checker-webpack-plugin": "^0.5.2", "fs-extra": "^7.0.1", @@ -35,6 +37,7 @@ "sass-loader": "^7.1.0", "string-replace-loader": "^2.1.1", "style-loader": "^0.23.1", + "tar": "^4.4.8", "terser-webpack-plugin": "^1.2.3", "ts-loader": "^5.3.3", "ts-node": "^7.0.1", diff --git a/packages/server/src/cli.ts b/packages/server/src/cli.ts index 84d53367e7bc..09a33c962314 100644 --- a/packages/server/src/cli.ts +++ b/packages/server/src/cli.ts @@ -22,6 +22,8 @@ commander.version(process.env.VERSION || "development") .option("--cert ") .option("--cert-key ") .option("-d, --data-dir ", "Customize where user-data is stored.") + .option("-e --extensions-dir ", "Set the root path for extensions.") + .option("-u --user-data-dir ", "Specifies the directory that user data is kept in, useful when running as root.") .option("-h, --host ", "Customize the hostname.", "0.0.0.0") .option("-o, --open", "Open in the browser on startup.", false) .option("-p, --port ", "Port to bind on.", 8443) @@ -47,6 +49,8 @@ if (isCli) { readonly host: string; readonly port: number; + readonly extensionsDir?: string; + readonly userDataDir?: string; readonly dataDir?: string; readonly password?: string; readonly open?: boolean; @@ -63,6 +67,10 @@ if (isCli) { const noAuthValue = (commander as any).auth; options.noAuth = !noAuthValue; + if (options.dataDir) { + logger.warn('"--data-dir" is deprecated. Use "--user-data-dir" instead.'); + } + const dataDir = path.resolve(options.dataDir || path.join(dataHome, "code-server")); const workingDir = path.resolve(args[0] || process.cwd()); diff --git a/scripts/vstar.sh b/scripts/vstar.sh new file mode 100755 index 000000000000..478bc81cd3d4 --- /dev/null +++ b/scripts/vstar.sh @@ -0,0 +1,24 @@ +#!/bin/bash +set -euxo pipefail + +# Builds a tarfile containing vscode sourcefiles neccessary for CI. +# Done outside the CI and uploaded to object storage to reduce CI time. + +branch=1.32.0 +dir=/tmp/vstar +outfile=/tmp/vstar-$branch.tar.gz +rm -rf $dir +mkdir -p $dir + +cd $dir +git clone https://github.com/microsoft/vscode --branch $branch --single-branch --depth=1 +cd vscode + +yarn + +npx gulp vscode-linux-x64 --max-old-space-size=32384 +rm -rf extensions build out* test +cd .. +mv *-x64/resources/app/extensions ./extensions +rm -rf *-x64 +tar -czvf $outfile . diff --git a/yarn.lock b/yarn.lock index 43064ed1b631..78f8983e20f5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -24,6 +24,13 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-10.12.18.tgz#1d3ca764718915584fcd9f6344621b7672665c67" integrity sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ== +"@types/tar@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/tar/-/tar-4.0.0.tgz#e3239d969eeb693a012200613860d0eb871c94f0" + integrity sha512-YybbEHNngcHlIWVCYsoj7Oo1JU9JqONuAlt1LlTH/lmL8BMhbzdFUgReY87a05rY1j8mfK47Del+TCkaLAXwLw== + dependencies: + "@types/node" "*" + "@types/trash@^4.3.1": version "4.3.1" resolved "https://registry.yarnpkg.com/@types/trash/-/trash-4.3.1.tgz#4880ff17c4eb467f1a26774ea6328428403b5c57" @@ -511,6 +518,14 @@ binary-extensions@^1.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.12.0.tgz#c2d780f53d45bba8317a8902d4ceeaf3a6385b14" integrity sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg== +bl@^1.0.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.2.tgz#a160911717103c07410cef63ef51b397c025af9c" + integrity sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA== + dependencies: + readable-stream "^2.3.5" + safe-buffer "^5.1.1" + block-stream@*: version "0.0.9" resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" @@ -649,6 +664,29 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" +buffer-alloc-unsafe@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" + integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== + +buffer-alloc@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" + integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== + dependencies: + buffer-alloc-unsafe "^1.1.0" + buffer-fill "^1.0.0" + +buffer-crc32@~0.2.3: + version "0.2.13" + resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= + +buffer-fill@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" + integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= + buffer-from@^1.0.0, buffer-from@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" @@ -673,6 +711,14 @@ buffer@^4.3.0: ieee754 "^1.1.4" isarray "^1.0.0" +buffer@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.2.1.tgz#dd57fa0f109ac59c602479044dca7b8b3d0b71d6" + integrity sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + builtin-modules@^1.0.0, builtin-modules@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" @@ -932,6 +978,13 @@ commander@^2.19.0: resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== +commander@~2.8.1: + version "2.8.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.8.1.tgz#06be367febfda0c330aa1e2a072d3dc9762425d4" + integrity sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ= + dependencies: + graceful-readlink ">= 1.0.0" + commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" @@ -1235,6 +1288,59 @@ decode-uri-component@^0.2.0: resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= +decompress-tar@^4.0.0, decompress-tar@^4.1.0, decompress-tar@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/decompress-tar/-/decompress-tar-4.1.1.tgz#718cbd3fcb16209716e70a26b84e7ba4592e5af1" + integrity sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ== + dependencies: + file-type "^5.2.0" + is-stream "^1.1.0" + tar-stream "^1.5.2" + +decompress-tarbz2@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz#3082a5b880ea4043816349f378b56c516be1a39b" + integrity sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A== + dependencies: + decompress-tar "^4.1.0" + file-type "^6.1.0" + is-stream "^1.1.0" + seek-bzip "^1.0.5" + unbzip2-stream "^1.0.9" + +decompress-targz@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/decompress-targz/-/decompress-targz-4.1.1.tgz#c09bc35c4d11f3de09f2d2da53e9de23e7ce1eee" + integrity sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w== + dependencies: + decompress-tar "^4.1.1" + file-type "^5.2.0" + is-stream "^1.1.0" + +decompress-unzip@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/decompress-unzip/-/decompress-unzip-4.0.1.tgz#deaaccdfd14aeaf85578f733ae8210f9b4848f69" + integrity sha1-3qrM39FK6vhVePczroIQ+bSEj2k= + dependencies: + file-type "^3.8.0" + get-stream "^2.2.0" + pify "^2.3.0" + yauzl "^2.4.2" + +decompress@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/decompress/-/decompress-4.2.0.tgz#7aedd85427e5a92dacfe55674a7c505e96d01f9d" + integrity sha1-eu3YVCflqS2s/lVnSnxQXpbQH50= + dependencies: + decompress-tar "^4.0.0" + decompress-tarbz2 "^4.0.0" + decompress-targz "^4.0.0" + decompress-unzip "^4.0.1" + graceful-fs "^4.1.10" + make-dir "^1.0.0" + pify "^2.3.0" + strip-dirs "^2.0.0" + deep-equal@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" @@ -1765,6 +1871,13 @@ faye-websocket@~0.11.1: dependencies: websocket-driver ">=0.5.1" +fd-slicer@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" + integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4= + dependencies: + pend "~1.2.0" + figgy-pudding@^3.5.1: version "3.5.1" resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790" @@ -1778,6 +1891,21 @@ file-loader@^3.0.1: loader-utils "^1.0.2" schema-utils "^1.0.0" +file-type@^3.8.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-3.9.0.tgz#257a078384d1db8087bc449d107d52a52672b9e9" + integrity sha1-JXoHg4TR24CHvESdEH1SpSZyuek= + +file-type@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-5.2.0.tgz#2ddbea7c73ffe36368dfae49dc338c058c2b8ad6" + integrity sha1-LdvqfHP/42No365J3DOMBYwritY= + +file-type@^6.1.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-6.2.0.tgz#e50cd75d356ffed4e306dc4f5bcf52a79903a919" + integrity sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg== + filesize@^3.6.1: version "3.6.1" resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz#090bb3ee01b6f801a8a8be99d31710b3422bb317" @@ -1923,6 +2051,11 @@ from2@^2.1.0: inherits "^2.0.1" readable-stream "^2.0.0" +fs-constants@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" + integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== + fs-extra@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" @@ -2008,6 +2141,14 @@ get-stdin@^4.0.1: resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4= +get-stream@^2.2.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-2.3.1.tgz#5f38f93f346009666ee0150a054167f91bdd95de" + integrity sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4= + dependencies: + object-assign "^4.0.1" + pinkie-promise "^2.0.0" + get-stream@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" @@ -2097,11 +2238,16 @@ globule@^1.0.0: lodash "~4.17.10" minimatch "~3.0.2" -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6: +graceful-fs@^4.1.10, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6: version "4.1.15" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== +"graceful-readlink@>= 1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" + integrity sha1-TK+tdrxi8C+gObL5Tpo906ORpyU= + gzip-size@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.0.0.tgz#a55ecd99222f4c48fd8c01c625ce3b349d0a0e80" @@ -2631,6 +2777,11 @@ is-glob@^4.0.0: dependencies: is-extglob "^2.1.1" +is-natural-number@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-natural-number/-/is-natural-number-4.0.1.tgz#ab9d76e1db4ced51e35de0c72ebecf09f734cde8" + integrity sha1-q5124dtM7VHjXeDHLr7PCfc0zeg= + is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" @@ -3838,6 +3989,11 @@ pbkdf2@^3.0.3: safe-buffer "^5.0.1" sha.js "^2.4.8" +pend@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" + integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= + performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" @@ -3848,7 +4004,7 @@ pidtree@^0.3.0: resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.3.0.tgz#f6fada10fccc9f99bf50e90d0b23d72c9ebc2e6b" integrity sha512-9CT4NFlDcosssyg8KVFltgokyKZIFjoBxw8CTGy+5F38Y1eQWrt8tRayiUOXE+zVKQnYu5BR8JjCtvK3BcnBhg== -pify@^2.0.0: +pify@^2.0.0, pify@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= @@ -4129,7 +4285,7 @@ read-pkg@^3.0.0: normalize-package-data "^2.3.2" path-type "^3.0.0" -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== @@ -4419,6 +4575,13 @@ scss-tokenizer@^0.2.3: js-base64 "^2.1.8" source-map "^0.4.2" +seek-bzip@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/seek-bzip/-/seek-bzip-1.0.5.tgz#cfe917cb3d274bcffac792758af53173eb1fabdc" + integrity sha1-z+kXyz0nS8/6x5J1ivUxc+sfq9w= + dependencies: + commander "~2.8.1" + select-hose@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" @@ -4895,6 +5058,13 @@ strip-bom@^3.0.0: resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= +strip-dirs@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/strip-dirs/-/strip-dirs-2.1.0.tgz#4987736264fc344cf20f6c34aca9d13d1d4ed6c5" + integrity sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g== + dependencies: + is-natural-number "^4.0.1" + strip-eof@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" @@ -4944,6 +5114,19 @@ tapable@^1.0.0, tapable@^1.1.0: resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.1.tgz#4d297923c5a72a42360de2ab52dadfaaec00018e" integrity sha512-9I2ydhj8Z9veORCw5PRm4u9uebCn0mcCa6scWoNcbZ6dAtoo2618u9UUzxgmsCOreJpqDDuv61LvwofW7hLcBA== +tar-stream@^1.5.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.2.tgz#8ea55dab37972253d9a9af90fdcd559ae435c555" + integrity sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A== + dependencies: + bl "^1.0.0" + buffer-alloc "^1.2.0" + end-of-stream "^1.0.0" + fs-constants "^1.0.0" + readable-stream "^2.3.0" + to-buffer "^1.1.1" + xtend "^4.0.0" + tar@^2.0.0: version "2.2.1" resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" @@ -4953,7 +5136,7 @@ tar@^2.0.0: fstream "^1.0.2" inherits "2" -tar@^4: +tar@^4, tar@^4.4.8: version "4.4.8" resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.8.tgz#b19eec3fde2a96e64666df9fdb40c5ca1bc3747d" integrity sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ== @@ -5020,6 +5203,11 @@ through2@^2.0.0: readable-stream "~2.3.6" xtend "~4.0.1" +through@^2.3.8: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= + thunky@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.0.3.tgz#f5df732453407b09191dae73e2a8cc73f381a826" @@ -5037,6 +5225,11 @@ to-arraybuffer@^1.0.0: resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= +to-buffer@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80" + integrity sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg== + to-object-path@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" @@ -5224,6 +5417,14 @@ uglifyjs-webpack-plugin@^2.1.1: webpack-sources "^1.1.0" worker-farm "^1.5.2" +unbzip2-stream@^1.0.9: + version "1.3.3" + resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.3.3.tgz#d156d205e670d8d8c393e1c02ebd506422873f6a" + integrity sha512-fUlAF7U9Ah1Q6EieQ4x4zLNejrRvDWUYmxXUpN3uziFYCHapjWFaCAnreY9bGgxzaMCFAPPpYNng57CypwJVhg== + dependencies: + buffer "^5.2.1" + through "^2.3.8" + union-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" @@ -5797,6 +5998,14 @@ yargs@^7.0.0: y18n "^3.2.1" yargs-parser "^5.0.0" +yauzl@^2.4.2: + version "2.10.0" + resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" + integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk= + dependencies: + buffer-crc32 "~0.2.3" + fd-slicer "~1.1.0" + yn@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/yn/-/yn-2.0.0.tgz#e5adabc8acf408f6385fc76495684c88e6af689a" From bb08893609b49bb6f6a45fd979ecdc673ed4dc29 Mon Sep 17 00:00:00 2001 From: Kyle Carberry Date: Wed, 3 Apr 2019 14:34:48 -0400 Subject: [PATCH 11/14] Undo data-dir changes to CLI, add back clean, remove unused CI func --- build/tasks.ts | 34 ++++++++++++++-------------------- packages/server/src/cli.ts | 6 ------ 2 files changed, 14 insertions(+), 26 deletions(-) diff --git a/build/tasks.ts b/build/tasks.ts index 74f3e9283401..d115ffe98a1c 100644 --- a/build/tasks.ts +++ b/build/tasks.ts @@ -136,6 +136,20 @@ const ensureInstalled = register("vscode:install", async (runner) => { if (fs.existsSync(vscodePath) && fs.existsSync(defaultExtensionsPath)) { const pkgVersion = JSON.parse(fs.readFileSync(path.join(vscodePath, "package.json")).toString("utf8")).version; if (pkgVersion === vscodeVersion) { + runner.cwd = vscodePath; + + const status = await runner.execute("git", ["status", "--porcelain"]); + if (status.stdout.trim() !== "") { + const clean = await runner.execute("git", ["clean", "-f", "-d", "-X"]); + if (clean.exitCode !== 0) { + throw new Error(`Failed to clean git repository: ${clean.stderr}`); + } + const removeUnstaged = await runner.execute("git", ["checkout", "--", "."]); + if (removeUnstaged.exitCode !== 0) { + throw new Error(`Failed to remove unstaged files: ${removeUnstaged.stderr}`); + } + } + return; } } @@ -202,24 +216,4 @@ register("package", async (runner, releaseTag) => { : runner.execute("zip", ["-r", `${archiveName}.zip`, `${archiveName}`]); }); -/** - * If we're in the CI and the VS Code version is the same, - * then we don't need to rebuild. - */ -const ifCiAndVsc = (vscName: "vscode" | "vscode-default-extensions"): boolean => { - if (process.env.CI) { - try { - const packageJson = path.join(libPath, vscName, "package.json"); - const version = JSON.parse(fs.readFileSync(packageJson).toString("utf8")).version; - if (version === vscodeVersion) { - return true; - } - } catch (ex) { - // Nothin. Will return false below - } - } - - return false; -}; - run(); diff --git a/packages/server/src/cli.ts b/packages/server/src/cli.ts index 09a33c962314..4b15c8f87a35 100644 --- a/packages/server/src/cli.ts +++ b/packages/server/src/cli.ts @@ -49,8 +49,6 @@ if (isCli) { readonly host: string; readonly port: number; - readonly extensionsDir?: string; - readonly userDataDir?: string; readonly dataDir?: string; readonly password?: string; readonly open?: boolean; @@ -67,10 +65,6 @@ if (isCli) { const noAuthValue = (commander as any).auth; options.noAuth = !noAuthValue; - if (options.dataDir) { - logger.warn('"--data-dir" is deprecated. Use "--user-data-dir" instead.'); - } - const dataDir = path.resolve(options.dataDir || path.join(dataHome, "code-server")); const workingDir = path.resolve(args[0] || process.cwd()); From ba72dc62890ccb258e96051399544210fdc1dec0 Mon Sep 17 00:00:00 2001 From: Kyle Carberry Date: Wed, 3 Apr 2019 14:35:20 -0400 Subject: [PATCH 12/14] Remove additional flags added --- packages/server/src/cli.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/server/src/cli.ts b/packages/server/src/cli.ts index 4b15c8f87a35..84d53367e7bc 100644 --- a/packages/server/src/cli.ts +++ b/packages/server/src/cli.ts @@ -22,8 +22,6 @@ commander.version(process.env.VERSION || "development") .option("--cert ") .option("--cert-key ") .option("-d, --data-dir ", "Customize where user-data is stored.") - .option("-e --extensions-dir ", "Set the root path for extensions.") - .option("-u --user-data-dir ", "Specifies the directory that user data is kept in, useful when running as root.") .option("-h, --host ", "Customize the hostname.", "0.0.0.0") .option("-o, --open", "Open in the browser on startup.", false) .option("-p, --port ", "Port to bind on.", 8443) From 7d08e8e2b5031ecf1081fa6b2662344e19d1f7bd Mon Sep 17 00:00:00 2001 From: Kyle Carberry Date: Wed, 3 Apr 2019 14:35:53 -0400 Subject: [PATCH 13/14] Remove unused dependency --- package.json | 1 - yarn.lock | 208 +-------------------------------------------------- 2 files changed, 3 insertions(+), 206 deletions(-) diff --git a/package.json b/package.json index 377074b146dc..72e50078d981 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,6 @@ "cross-env": "^5.2.0", "crypto-browserify": "^3.12.0", "css-loader": "^2.1.0", - "decompress": "^4.2.0", "file-loader": "^3.0.1", "fork-ts-checker-webpack-plugin": "^0.5.2", "fs-extra": "^7.0.1", diff --git a/yarn.lock b/yarn.lock index 78f8983e20f5..4c998bb70513 100644 --- a/yarn.lock +++ b/yarn.lock @@ -518,14 +518,6 @@ binary-extensions@^1.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.12.0.tgz#c2d780f53d45bba8317a8902d4ceeaf3a6385b14" integrity sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg== -bl@^1.0.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.2.tgz#a160911717103c07410cef63ef51b397c025af9c" - integrity sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA== - dependencies: - readable-stream "^2.3.5" - safe-buffer "^5.1.1" - block-stream@*: version "0.0.9" resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" @@ -664,29 +656,6 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -buffer-alloc-unsafe@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" - integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== - -buffer-alloc@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" - integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== - dependencies: - buffer-alloc-unsafe "^1.1.0" - buffer-fill "^1.0.0" - -buffer-crc32@~0.2.3: - version "0.2.13" - resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" - integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= - -buffer-fill@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" - integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= - buffer-from@^1.0.0, buffer-from@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" @@ -711,14 +680,6 @@ buffer@^4.3.0: ieee754 "^1.1.4" isarray "^1.0.0" -buffer@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.2.1.tgz#dd57fa0f109ac59c602479044dca7b8b3d0b71d6" - integrity sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg== - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - builtin-modules@^1.0.0, builtin-modules@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" @@ -978,13 +939,6 @@ commander@^2.19.0: resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== -commander@~2.8.1: - version "2.8.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.8.1.tgz#06be367febfda0c330aa1e2a072d3dc9762425d4" - integrity sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ= - dependencies: - graceful-readlink ">= 1.0.0" - commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" @@ -1288,59 +1242,6 @@ decode-uri-component@^0.2.0: resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= -decompress-tar@^4.0.0, decompress-tar@^4.1.0, decompress-tar@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/decompress-tar/-/decompress-tar-4.1.1.tgz#718cbd3fcb16209716e70a26b84e7ba4592e5af1" - integrity sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ== - dependencies: - file-type "^5.2.0" - is-stream "^1.1.0" - tar-stream "^1.5.2" - -decompress-tarbz2@^4.0.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz#3082a5b880ea4043816349f378b56c516be1a39b" - integrity sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A== - dependencies: - decompress-tar "^4.1.0" - file-type "^6.1.0" - is-stream "^1.1.0" - seek-bzip "^1.0.5" - unbzip2-stream "^1.0.9" - -decompress-targz@^4.0.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/decompress-targz/-/decompress-targz-4.1.1.tgz#c09bc35c4d11f3de09f2d2da53e9de23e7ce1eee" - integrity sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w== - dependencies: - decompress-tar "^4.1.1" - file-type "^5.2.0" - is-stream "^1.1.0" - -decompress-unzip@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/decompress-unzip/-/decompress-unzip-4.0.1.tgz#deaaccdfd14aeaf85578f733ae8210f9b4848f69" - integrity sha1-3qrM39FK6vhVePczroIQ+bSEj2k= - dependencies: - file-type "^3.8.0" - get-stream "^2.2.0" - pify "^2.3.0" - yauzl "^2.4.2" - -decompress@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/decompress/-/decompress-4.2.0.tgz#7aedd85427e5a92dacfe55674a7c505e96d01f9d" - integrity sha1-eu3YVCflqS2s/lVnSnxQXpbQH50= - dependencies: - decompress-tar "^4.0.0" - decompress-tarbz2 "^4.0.0" - decompress-targz "^4.0.0" - decompress-unzip "^4.0.1" - graceful-fs "^4.1.10" - make-dir "^1.0.0" - pify "^2.3.0" - strip-dirs "^2.0.0" - deep-equal@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" @@ -1871,13 +1772,6 @@ faye-websocket@~0.11.1: dependencies: websocket-driver ">=0.5.1" -fd-slicer@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" - integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4= - dependencies: - pend "~1.2.0" - figgy-pudding@^3.5.1: version "3.5.1" resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790" @@ -1891,21 +1785,6 @@ file-loader@^3.0.1: loader-utils "^1.0.2" schema-utils "^1.0.0" -file-type@^3.8.0: - version "3.9.0" - resolved "https://registry.yarnpkg.com/file-type/-/file-type-3.9.0.tgz#257a078384d1db8087bc449d107d52a52672b9e9" - integrity sha1-JXoHg4TR24CHvESdEH1SpSZyuek= - -file-type@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/file-type/-/file-type-5.2.0.tgz#2ddbea7c73ffe36368dfae49dc338c058c2b8ad6" - integrity sha1-LdvqfHP/42No365J3DOMBYwritY= - -file-type@^6.1.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/file-type/-/file-type-6.2.0.tgz#e50cd75d356ffed4e306dc4f5bcf52a79903a919" - integrity sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg== - filesize@^3.6.1: version "3.6.1" resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz#090bb3ee01b6f801a8a8be99d31710b3422bb317" @@ -2051,11 +1930,6 @@ from2@^2.1.0: inherits "^2.0.1" readable-stream "^2.0.0" -fs-constants@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" - integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== - fs-extra@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" @@ -2141,14 +2015,6 @@ get-stdin@^4.0.1: resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4= -get-stream@^2.2.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-2.3.1.tgz#5f38f93f346009666ee0150a054167f91bdd95de" - integrity sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4= - dependencies: - object-assign "^4.0.1" - pinkie-promise "^2.0.0" - get-stream@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" @@ -2238,16 +2104,11 @@ globule@^1.0.0: lodash "~4.17.10" minimatch "~3.0.2" -graceful-fs@^4.1.10, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6: +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6: version "4.1.15" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== -"graceful-readlink@>= 1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" - integrity sha1-TK+tdrxi8C+gObL5Tpo906ORpyU= - gzip-size@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.0.0.tgz#a55ecd99222f4c48fd8c01c625ce3b349d0a0e80" @@ -2777,11 +2638,6 @@ is-glob@^4.0.0: dependencies: is-extglob "^2.1.1" -is-natural-number@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/is-natural-number/-/is-natural-number-4.0.1.tgz#ab9d76e1db4ced51e35de0c72ebecf09f734cde8" - integrity sha1-q5124dtM7VHjXeDHLr7PCfc0zeg= - is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" @@ -3989,11 +3845,6 @@ pbkdf2@^3.0.3: safe-buffer "^5.0.1" sha.js "^2.4.8" -pend@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" - integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= - performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" @@ -4004,7 +3855,7 @@ pidtree@^0.3.0: resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.3.0.tgz#f6fada10fccc9f99bf50e90d0b23d72c9ebc2e6b" integrity sha512-9CT4NFlDcosssyg8KVFltgokyKZIFjoBxw8CTGy+5F38Y1eQWrt8tRayiUOXE+zVKQnYu5BR8JjCtvK3BcnBhg== -pify@^2.0.0, pify@^2.3.0: +pify@^2.0.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= @@ -4285,7 +4136,7 @@ read-pkg@^3.0.0: normalize-package-data "^2.3.2" path-type "^3.0.0" -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== @@ -4575,13 +4426,6 @@ scss-tokenizer@^0.2.3: js-base64 "^2.1.8" source-map "^0.4.2" -seek-bzip@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/seek-bzip/-/seek-bzip-1.0.5.tgz#cfe917cb3d274bcffac792758af53173eb1fabdc" - integrity sha1-z+kXyz0nS8/6x5J1ivUxc+sfq9w= - dependencies: - commander "~2.8.1" - select-hose@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" @@ -5058,13 +4902,6 @@ strip-bom@^3.0.0: resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= -strip-dirs@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/strip-dirs/-/strip-dirs-2.1.0.tgz#4987736264fc344cf20f6c34aca9d13d1d4ed6c5" - integrity sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g== - dependencies: - is-natural-number "^4.0.1" - strip-eof@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" @@ -5114,19 +4951,6 @@ tapable@^1.0.0, tapable@^1.1.0: resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.1.tgz#4d297923c5a72a42360de2ab52dadfaaec00018e" integrity sha512-9I2ydhj8Z9veORCw5PRm4u9uebCn0mcCa6scWoNcbZ6dAtoo2618u9UUzxgmsCOreJpqDDuv61LvwofW7hLcBA== -tar-stream@^1.5.2: - version "1.6.2" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.2.tgz#8ea55dab37972253d9a9af90fdcd559ae435c555" - integrity sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A== - dependencies: - bl "^1.0.0" - buffer-alloc "^1.2.0" - end-of-stream "^1.0.0" - fs-constants "^1.0.0" - readable-stream "^2.3.0" - to-buffer "^1.1.1" - xtend "^4.0.0" - tar@^2.0.0: version "2.2.1" resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" @@ -5203,11 +5027,6 @@ through2@^2.0.0: readable-stream "~2.3.6" xtend "~4.0.1" -through@^2.3.8: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= - thunky@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.0.3.tgz#f5df732453407b09191dae73e2a8cc73f381a826" @@ -5225,11 +5044,6 @@ to-arraybuffer@^1.0.0: resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= -to-buffer@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80" - integrity sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg== - to-object-path@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" @@ -5417,14 +5231,6 @@ uglifyjs-webpack-plugin@^2.1.1: webpack-sources "^1.1.0" worker-farm "^1.5.2" -unbzip2-stream@^1.0.9: - version "1.3.3" - resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.3.3.tgz#d156d205e670d8d8c393e1c02ebd506422873f6a" - integrity sha512-fUlAF7U9Ah1Q6EieQ4x4zLNejrRvDWUYmxXUpN3uziFYCHapjWFaCAnreY9bGgxzaMCFAPPpYNng57CypwJVhg== - dependencies: - buffer "^5.2.1" - through "^2.3.8" - union-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" @@ -5998,14 +5804,6 @@ yargs@^7.0.0: y18n "^3.2.1" yargs-parser "^5.0.0" -yauzl@^2.4.2: - version "2.10.0" - resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" - integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk= - dependencies: - buffer-crc32 "~0.2.3" - fd-slicer "~1.1.0" - yn@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/yn/-/yn-2.0.0.tgz#e5adabc8acf408f6385fc76495684c88e6af689a" From f4cc2b17bc09f02bff676e5639735d808dba20ef Mon Sep 17 00:00:00 2001 From: Kyle Carberry Date: Wed, 3 Apr 2019 14:45:58 -0400 Subject: [PATCH 14/14] Reset vscode install dir so patching always works --- build/tasks.ts | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/build/tasks.ts b/build/tasks.ts index d115ffe98a1c..ae285123a8a5 100644 --- a/build/tasks.ts +++ b/build/tasks.ts @@ -138,16 +138,9 @@ const ensureInstalled = register("vscode:install", async (runner) => { if (pkgVersion === vscodeVersion) { runner.cwd = vscodePath; - const status = await runner.execute("git", ["status", "--porcelain"]); - if (status.stdout.trim() !== "") { - const clean = await runner.execute("git", ["clean", "-f", "-d", "-X"]); - if (clean.exitCode !== 0) { - throw new Error(`Failed to clean git repository: ${clean.stderr}`); - } - const removeUnstaged = await runner.execute("git", ["checkout", "--", "."]); - if (removeUnstaged.exitCode !== 0) { - throw new Error(`Failed to remove unstaged files: ${removeUnstaged.stderr}`); - } + const reset = await runner.execute("git", ["reset", "--hard"]); + if (reset.exitCode !== 0) { + throw new Error(`Failed to clean git repository: ${reset.stderr}`); } return; pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy