summaryrefslogtreecommitdiff
path: root/use-local-vsix.patch
blob: 0719d4af4b6fc58215f57edadd85816d0671732b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
--- patches/ext-from-gh.patch
+++ patches/ext-from-gh.patch
@@ -7,7 +7,7 @@ index 1b0adc4..b595123 100644
 -    const galleryServiceUrl = productjson.extensionsGallery?.serviceUrl;
 -    return (galleryServiceUrl ? ext.fromMarketplace(galleryServiceUrl, extension) : ext.fromGithub(extension))
 -        .pipe(rename(p => p.dirname = `${extension.name}/${p.dirname}`));
-+    return ext.fromGithub(extension).pipe(rename(p => p.dirname = `${extension.name}/${p.dirname}`));
++    return ext.fromLocalVsix(extension).pipe(rename(p => p.dirname = `${extension.name}/${p.dirname}`));
  }
 diff --git a/build/lib/builtInExtensions.ts b/build/lib/builtInExtensions.ts
 index fefed43..4ae553e 100644
@@ -18,5 +18,5 @@ index fefed43..4ae553e 100644
 -	const galleryServiceUrl = productjson.extensionsGallery?.serviceUrl;
 -	return (galleryServiceUrl ? ext.fromMarketplace(galleryServiceUrl, extension) : ext.fromGithub(extension))
 -		.pipe(rename(p => p.dirname = `${extension.name}/${p.dirname}`));
-+	return ext.fromGithub(extension).pipe(rename(p => p.dirname = `${extension.name}/${p.dirname}`));
++	return ext.fromLocalVsix(extension).pipe(rename(p => p.dirname = `${extension.name}/${p.dirname}`));
  }

--- vscode/build/lib/extensions.js
+++ vscode/build/lib/extensions.js
@@ -4,6 +4,7 @@
  *  Licensed under the MIT License. See License.txt in the project root for license information.
  *--------------------------------------------------------------------------------------------*/
 Object.defineProperty(exports, "__esModule", { value: true });
+exports.fromLocalVsix = fromLocalVsix;
 exports.fromMarketplace = fromMarketplace;
 exports.fromGithub = fromGithub;
 exports.packageLocalExtensionsStream = packageLocalExtensionsStream;
@@ -21,6 +22,7 @@ const path = require("path");
 const File = require("vinyl");
 const stats_1 = require("./stats");
 const util2 = require("./util");
+const vinylFs = require("vinyl-fs");
 const vzip = require('gulp-vinyl-zip');
 const filter = require("gulp-filter");
 const rename = require("gulp-rename");
@@ -193,6 +195,20 @@ function fromLocalNormal(extensionPath) {
         .catch(err => result.emit('error', err));
     return result.pipe((0, stats_1.createStatsStream)(path.basename(extensionPath)));
 }
+function fromLocalVsix({ name, version, metadata }) {
+    const json = require('gulp-json-editor');
+    fancyLog('Processing extension from local directory:', ansiColors.yellow(`${name}@${version}`), '...');
+    const packageJsonFilter = filter('package.json', { restore: true });
+    return vinylFs.src(`${root}/../${name}.${version}.vsix`)
+        .pipe(buffer())
+        .pipe(vzip.src())
+        .pipe(filter('extension/**'))
+        .pipe(rename(p => p.dirname = p.dirname.replace(/^extension\/?/, '')))
+        .pipe(packageJsonFilter)
+        .pipe(buffer())
+        .pipe(json({ __metadata: metadata }))
+        .pipe(packageJsonFilter.restore);
+}
 const userAgent = 'VSCode Build';
 const baseHeaders = {
     'X-Market-Client-Id': 'VSCode Build',
 
--- vscode/build/lib/extensions.ts.orig
+++ vscode/build/lib/extensions.ts
@@ -13,6 +13,7 @@ import { Stream } from 'stream';
 import * as File from 'vinyl';
 import { createStatsStream } from './stats';
 import * as util2 from './util';
+import * as vinylFs from 'vinyl-fs';
 const vzip = require('gulp-vinyl-zip');
 import filter = require('gulp-filter');
 import rename = require('gulp-rename');
@@ -214,6 +215,24 @@ function fromLocalNormal(extensionPath: string): Stream {
 	return result.pipe(createStatsStream(path.basename(extensionPath)));
 }
 
+export function fromLocalVsix({ name, version, metadata }: IExtensionDefinition): Stream {
+	const json = require('gulp-json-editor') as typeof import('gulp-json-editor');
+
+	fancyLog('Processing extension from local directory:', ansiColors.yellow(`${name}@${version}`), '...');
+
+	const packageJsonFilter = filter('package.json', { restore: true });
+
+	return vinylFs.src(`${root}/../${name}.${version}.vsix`)
+		.pipe(buffer())
+		.pipe(vzip.src())
+		.pipe(filter('extension/**'))
+		.pipe(rename(p => p.dirname = p.dirname!.replace(/^extension\/?/, '')))
+		.pipe(packageJsonFilter)
+		.pipe(buffer())
+		.pipe(json({ __metadata: metadata }))
+		.pipe(packageJsonFilter.restore);
+}
+
 const userAgent = 'VSCode Build';
 const baseHeaders = {
 	'X-Market-Client-Id': 'VSCode Build',