ovsx 0.1.0-next.e000fdb → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +19 -0
- package/README.md +1 -1
- package/lib/check-license.d.ts +13 -0
- package/lib/check-license.d.ts.map +1 -0
- package/lib/check-license.js +129 -0
- package/lib/check-license.js.map +1 -0
- package/lib/create-namespace.d.ts +2 -9
- package/lib/create-namespace.d.ts.map +1 -1
- package/lib/create-namespace.js +4 -8
- package/lib/create-namespace.js.map +1 -1
- package/lib/get.d.ts +2 -5
- package/lib/get.d.ts.map +1 -1
- package/lib/get.js +2 -4
- package/lib/get.js.map +1 -1
- package/lib/index.d.ts +2 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +5 -0
- package/lib/index.js.map +1 -1
- package/lib/main.js +28 -25
- package/lib/main.js.map +1 -1
- package/lib/ovsx +4 -2
- package/lib/publish.d.ts +10 -14
- package/lib/publish.d.ts.map +1 -1
- package/lib/publish.js +37 -16
- package/lib/publish.js.map +1 -1
- package/lib/registry.d.ts +27 -3
- package/lib/registry.d.ts.map +1 -1
- package/lib/registry.js +30 -8
- package/lib/registry.js.map +1 -1
- package/lib/util.d.ts +16 -1
- package/lib/util.d.ts.map +1 -1
- package/lib/util.js +107 -1
- package/lib/util.js.map +1 -1
- package/package.json +10 -5
- package/src/check-license.ts +119 -0
- package/src/create-namespace.ts +7 -18
- package/src/get.ts +9 -11
- package/src/index.ts +2 -0
- package/src/main.ts +30 -27
- package/src/ovsx +4 -2
- package/src/publish.ts +64 -34
- package/src/registry.ts +57 -11
- package/src/util.ts +110 -1
package/lib/registry.d.ts
CHANGED
|
@@ -16,7 +16,10 @@ export declare class Registry {
|
|
|
16
16
|
readonly url: string;
|
|
17
17
|
readonly maxNamespaceSize: number;
|
|
18
18
|
readonly maxPublishSize: number;
|
|
19
|
+
readonly username?: string;
|
|
20
|
+
readonly password?: string;
|
|
19
21
|
constructor(options?: RegistryOptions);
|
|
22
|
+
get requiresLicense(): boolean;
|
|
20
23
|
createNamespace(name: string, pat: string): Promise<Response>;
|
|
21
24
|
publish(file: string, pat: string): Promise<Extension>;
|
|
22
25
|
getMetadata(namespace: string, extension: string): Promise<Extension>;
|
|
@@ -26,11 +29,33 @@ export declare class Registry {
|
|
|
26
29
|
postFile<T extends Response>(file: string, url: URL, headers?: http.OutgoingHttpHeaders, maxBodyLength?: number): Promise<T>;
|
|
27
30
|
private getUrl;
|
|
28
31
|
private getProtocol;
|
|
32
|
+
private getRequestOptions;
|
|
29
33
|
private getJsonResponse;
|
|
30
34
|
}
|
|
31
35
|
export interface RegistryOptions {
|
|
32
|
-
|
|
36
|
+
/**
|
|
37
|
+
* The base URL of the registry API.
|
|
38
|
+
*/
|
|
39
|
+
registryUrl?: string;
|
|
40
|
+
/**
|
|
41
|
+
* Personal access token.
|
|
42
|
+
*/
|
|
43
|
+
pat?: string;
|
|
44
|
+
/**
|
|
45
|
+
* User name for basic authentication.
|
|
46
|
+
*/
|
|
47
|
+
username?: string;
|
|
48
|
+
/**
|
|
49
|
+
* Password for basic authentication.
|
|
50
|
+
*/
|
|
51
|
+
password?: string;
|
|
52
|
+
/**
|
|
53
|
+
* Maximal request body size for creating namespaces.
|
|
54
|
+
*/
|
|
33
55
|
maxNamespaceSize?: number;
|
|
56
|
+
/**
|
|
57
|
+
* Maximal request body size for publishing.
|
|
58
|
+
*/
|
|
34
59
|
maxPublishSize?: number;
|
|
35
60
|
}
|
|
36
61
|
export interface Response {
|
|
@@ -47,8 +72,7 @@ export interface Extension extends Response {
|
|
|
47
72
|
namespace: string;
|
|
48
73
|
version: string;
|
|
49
74
|
publishedBy: UserData;
|
|
50
|
-
|
|
51
|
-
namespaceAccess: 'public' | 'restricted';
|
|
75
|
+
verified: boolean;
|
|
52
76
|
allVersions: {
|
|
53
77
|
[version: string]: string;
|
|
54
78
|
};
|
package/lib/registry.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;kFAQkF;;AAElF,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAO7B,eAAO,MAAM,WAAW,yBAAyB,CAAC;AAClD,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAC3C,eAAO,MAAM,oBAAoB,QAAoB,CAAC;AAEtD,qBAAa,QAAQ;IAEjB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
|
package/lib/registry.js
CHANGED
|
@@ -18,14 +18,20 @@ exports.DEFAULT_NAMESPACE_SIZE = 1024;
|
|
|
18
18
|
exports.DEFAULT_PUBLISH_SIZE = 512 * 1024 * 1024;
|
|
19
19
|
class Registry {
|
|
20
20
|
constructor(options = {}) {
|
|
21
|
-
if (options.
|
|
22
|
-
this.url = options.
|
|
23
|
-
else if (options.
|
|
24
|
-
this.url = options.
|
|
21
|
+
if (options.registryUrl && options.registryUrl.endsWith('/'))
|
|
22
|
+
this.url = options.registryUrl.substring(0, options.registryUrl.length - 1);
|
|
23
|
+
else if (options.registryUrl)
|
|
24
|
+
this.url = options.registryUrl;
|
|
25
25
|
else
|
|
26
26
|
this.url = exports.DEFAULT_URL;
|
|
27
27
|
this.maxNamespaceSize = options.maxNamespaceSize || exports.DEFAULT_NAMESPACE_SIZE;
|
|
28
28
|
this.maxPublishSize = options.maxPublishSize || exports.DEFAULT_PUBLISH_SIZE;
|
|
29
|
+
this.username = options.username;
|
|
30
|
+
this.password = options.password;
|
|
31
|
+
}
|
|
32
|
+
get requiresLicense() {
|
|
33
|
+
const url = new URL(this.url);
|
|
34
|
+
return url.hostname === 'open-vsx.org' || url.hostname.endsWith('.open-vsx.org');
|
|
29
35
|
}
|
|
30
36
|
createNamespace(name, pat) {
|
|
31
37
|
try {
|
|
@@ -64,8 +70,9 @@ class Registry {
|
|
|
64
70
|
download(file, url) {
|
|
65
71
|
return new Promise((resolve, reject) => {
|
|
66
72
|
const stream = fs.createWriteStream(file);
|
|
73
|
+
const requestOptions = this.getRequestOptions();
|
|
67
74
|
const request = this.getProtocol(url)
|
|
68
|
-
.request(url, response => {
|
|
75
|
+
.request(url, requestOptions, response => {
|
|
69
76
|
response.on('end', () => {
|
|
70
77
|
if (response.statusCode !== undefined && (response.statusCode < 200 || response.statusCode > 299)) {
|
|
71
78
|
reject(util_1.statusError(response));
|
|
@@ -89,15 +96,16 @@ class Registry {
|
|
|
89
96
|
}
|
|
90
97
|
getJson(url) {
|
|
91
98
|
return new Promise((resolve, reject) => {
|
|
99
|
+
const requestOptions = this.getRequestOptions();
|
|
92
100
|
const request = this.getProtocol(url)
|
|
93
|
-
.request(url, this.getJsonResponse(resolve, reject));
|
|
101
|
+
.request(url, requestOptions, this.getJsonResponse(resolve, reject));
|
|
94
102
|
request.on('error', reject);
|
|
95
103
|
request.end();
|
|
96
104
|
});
|
|
97
105
|
}
|
|
98
106
|
post(content, url, headers, maxBodyLength) {
|
|
99
107
|
return new Promise((resolve, reject) => {
|
|
100
|
-
const requestOptions =
|
|
108
|
+
const requestOptions = this.getRequestOptions('POST', headers, maxBodyLength);
|
|
101
109
|
const request = this.getProtocol(url)
|
|
102
110
|
.request(url, requestOptions, this.getJsonResponse(resolve, reject));
|
|
103
111
|
request.on('error', reject);
|
|
@@ -108,7 +116,7 @@ class Registry {
|
|
|
108
116
|
postFile(file, url, headers, maxBodyLength) {
|
|
109
117
|
return new Promise((resolve, reject) => {
|
|
110
118
|
const stream = fs.createReadStream(file);
|
|
111
|
-
const requestOptions =
|
|
119
|
+
const requestOptions = this.getRequestOptions('POST', headers, maxBodyLength);
|
|
112
120
|
const request = this.getProtocol(url)
|
|
113
121
|
.request(url, requestOptions, this.getJsonResponse(resolve, reject));
|
|
114
122
|
stream.on('error', err => {
|
|
@@ -136,6 +144,20 @@ class Registry {
|
|
|
136
144
|
else
|
|
137
145
|
return followRedirects.http;
|
|
138
146
|
}
|
|
147
|
+
getRequestOptions(method, headers, maxBodyLength) {
|
|
148
|
+
if (this.username && this.password) {
|
|
149
|
+
if (!headers) {
|
|
150
|
+
headers = {};
|
|
151
|
+
}
|
|
152
|
+
const credentials = Buffer.from(this.username + ':' + this.password).toString('base64');
|
|
153
|
+
headers['Authorization'] = 'Basic ' + credentials;
|
|
154
|
+
}
|
|
155
|
+
return {
|
|
156
|
+
method,
|
|
157
|
+
headers,
|
|
158
|
+
maxBodyLength
|
|
159
|
+
};
|
|
160
|
+
}
|
|
139
161
|
getJsonResponse(resolve, reject) {
|
|
140
162
|
return response => {
|
|
141
163
|
response.setEncoding('UTF-8');
|
package/lib/registry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":";AAAA;;;;;;;;kFAQkF;;AAIlF,yBAAyB;AACzB,2CAA2C;AAC3C,oDAAoD;AACpD,iCAAqC;AAExB,QAAA,WAAW,GAAG,sBAAsB,CAAC;AACrC,QAAA,sBAAsB,GAAG,IAAI,CAAC;AAC9B,QAAA,oBAAoB,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC;AAEtD,MAAa,QAAQ;
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
|
package/lib/util.d.ts
CHANGED
|
@@ -11,11 +11,26 @@
|
|
|
11
11
|
import * as fs from 'fs';
|
|
12
12
|
import * as tmp from 'tmp';
|
|
13
13
|
import * as http from 'http';
|
|
14
|
+
import { RegistryOptions } from './registry';
|
|
14
15
|
export { promisify } from 'util';
|
|
16
|
+
export declare function addEnvOptions(options: RegistryOptions): void;
|
|
15
17
|
export declare function matchExtensionId(id: string): RegExpExecArray | null;
|
|
16
18
|
export declare function optionalStat(path: fs.PathLike): Promise<fs.Stats | undefined>;
|
|
17
19
|
export declare function makeDirs(path: fs.PathLike): Promise<void>;
|
|
18
20
|
export declare function createTempFile(options: tmp.TmpNameOptions): Promise<string>;
|
|
19
|
-
export declare function handleError(debug?: boolean): (reason: any) => void;
|
|
21
|
+
export declare function handleError(debug?: boolean, additionalMessage?: string): (reason: any) => void;
|
|
20
22
|
export declare function statusError(response: http.IncomingMessage): Error;
|
|
23
|
+
export declare function readFile(name: string, packagePath?: string, encoding?: string): Promise<string>;
|
|
24
|
+
export declare function readManifest(packagePath?: string): Promise<Manifest>;
|
|
25
|
+
export declare function validateManifest(manifest: Manifest): void;
|
|
26
|
+
export declare function writeFile(name: string, content: string, packagePath?: string, encoding?: string): Promise<void>;
|
|
27
|
+
export declare function writeManifest(manifest: Manifest, packagePath?: string): Promise<void>;
|
|
28
|
+
export interface Manifest {
|
|
29
|
+
publisher: string;
|
|
30
|
+
name: string;
|
|
31
|
+
version: string;
|
|
32
|
+
license?: string;
|
|
33
|
+
}
|
|
34
|
+
export declare function getUserInput(text: string): Promise<string>;
|
|
35
|
+
export declare function getUserChoice<R extends string>(text: string, values: R[], defaultValue: R, lowerCase?: boolean): Promise<R>;
|
|
21
36
|
//# sourceMappingURL=util.d.ts.map
|
package/lib/util.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA;;;;;;;;kFAQkF;;AAElF,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA;;;;;;;;kFAQkF;;AAElF,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAEzB,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAC3B,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAEjC,wBAAgB,aAAa,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAa5D;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAEnE;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,GAAG,OAAO,CAAC,EAAE,CAAC,KAAK,GAAG,SAAS,CAAC,CAI7E;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAazD;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,GAAG,CAAC,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAS3E;AAED,wBAAgB,WAAW,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,iBAAiB,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAgB9F;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,GAAG,KAAK,CAKjE;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,QAAQ,SAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAchG;AAED,wBAAsB,YAAY,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAG1E;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAUzD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,QAAQ,SAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAehH;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGrF;AAED,MAAM,WAAW,QAAQ;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAQ1D;AAED,wBAAsB,aAAa,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,EACvE,YAAY,EAAE,CAAC,EAAE,SAAS,UAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAarD"}
|
package/lib/util.js
CHANGED
|
@@ -8,11 +8,37 @@
|
|
|
8
8
|
*
|
|
9
9
|
* SPDX-License-Identifier: EPL-2.0
|
|
10
10
|
********************************************************************************/
|
|
11
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
12
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
13
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
14
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
15
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
16
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
17
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
18
|
+
});
|
|
19
|
+
};
|
|
11
20
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
21
|
const fs = require("fs");
|
|
22
|
+
const path = require("path");
|
|
13
23
|
const tmp = require("tmp");
|
|
24
|
+
const readline = require("readline");
|
|
14
25
|
var util_1 = require("util");
|
|
15
26
|
exports.promisify = util_1.promisify;
|
|
27
|
+
function addEnvOptions(options) {
|
|
28
|
+
if (!options.registryUrl) {
|
|
29
|
+
options.registryUrl = process.env.OVSX_REGISTRY_URL;
|
|
30
|
+
}
|
|
31
|
+
if (!options.pat) {
|
|
32
|
+
options.pat = process.env.OVSX_PAT;
|
|
33
|
+
}
|
|
34
|
+
if (!options.username) {
|
|
35
|
+
options.username = process.env.OVSX_USERNAME;
|
|
36
|
+
}
|
|
37
|
+
if (!options.password) {
|
|
38
|
+
options.password = process.env.OVSX_PASSWORD;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
exports.addEnvOptions = addEnvOptions;
|
|
16
42
|
function matchExtensionId(id) {
|
|
17
43
|
return /^([\w-]+)(?:\.|\/)([\w-]+)$/.exec(id);
|
|
18
44
|
}
|
|
@@ -50,10 +76,13 @@ function createTempFile(options) {
|
|
|
50
76
|
});
|
|
51
77
|
}
|
|
52
78
|
exports.createTempFile = createTempFile;
|
|
53
|
-
function handleError(debug) {
|
|
79
|
+
function handleError(debug, additionalMessage) {
|
|
54
80
|
return reason => {
|
|
55
81
|
if (reason instanceof Error && !debug) {
|
|
56
82
|
console.error(`\u274c ${reason.message}`);
|
|
83
|
+
if (additionalMessage) {
|
|
84
|
+
console.error(additionalMessage);
|
|
85
|
+
}
|
|
57
86
|
}
|
|
58
87
|
else if (typeof reason === 'string') {
|
|
59
88
|
console.error(`\u274c ${reason}`);
|
|
@@ -75,4 +104,81 @@ function statusError(response) {
|
|
|
75
104
|
return new Error(`The server responded with status ${response.statusCode}.`);
|
|
76
105
|
}
|
|
77
106
|
exports.statusError = statusError;
|
|
107
|
+
function readFile(name, packagePath, encoding = 'utf-8') {
|
|
108
|
+
return new Promise((resolve, reject) => {
|
|
109
|
+
fs.readFile(path.join(packagePath || process.cwd(), name), { encoding }, (err, content) => {
|
|
110
|
+
if (err) {
|
|
111
|
+
reject(err);
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
resolve(content);
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
exports.readFile = readFile;
|
|
120
|
+
function readManifest(packagePath) {
|
|
121
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
122
|
+
const content = yield readFile('package.json', packagePath);
|
|
123
|
+
return JSON.parse(content);
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
exports.readManifest = readManifest;
|
|
127
|
+
function validateManifest(manifest) {
|
|
128
|
+
if (!manifest.publisher) {
|
|
129
|
+
throw new Error("Missing required field 'publisher'.");
|
|
130
|
+
}
|
|
131
|
+
if (!manifest.name) {
|
|
132
|
+
throw new Error("Missing required field 'name'.");
|
|
133
|
+
}
|
|
134
|
+
if (!manifest.version) {
|
|
135
|
+
throw new Error("Missing required field 'version'.");
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
exports.validateManifest = validateManifest;
|
|
139
|
+
function writeFile(name, content, packagePath, encoding = 'utf-8') {
|
|
140
|
+
return new Promise((resolve, reject) => {
|
|
141
|
+
fs.writeFile(path.join(packagePath || process.cwd(), name), content, { encoding }, err => {
|
|
142
|
+
if (err) {
|
|
143
|
+
reject(err);
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
resolve();
|
|
147
|
+
}
|
|
148
|
+
});
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
exports.writeFile = writeFile;
|
|
152
|
+
function writeManifest(manifest, packagePath) {
|
|
153
|
+
const content = JSON.stringify(manifest, null, 4);
|
|
154
|
+
return writeFile('package.json', content, packagePath);
|
|
155
|
+
}
|
|
156
|
+
exports.writeManifest = writeManifest;
|
|
157
|
+
function getUserInput(text) {
|
|
158
|
+
return new Promise(resolve => {
|
|
159
|
+
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
160
|
+
rl.question(text, answer => {
|
|
161
|
+
resolve(answer);
|
|
162
|
+
rl.close();
|
|
163
|
+
});
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
exports.getUserInput = getUserInput;
|
|
167
|
+
function getUserChoice(text, values, defaultValue, lowerCase = true) {
|
|
168
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
169
|
+
const prompt = text + '\n' + values.map(v => v === defaultValue ? `[${v}]` : v).join('/') + ': ';
|
|
170
|
+
const answer = yield getUserInput(prompt);
|
|
171
|
+
if (!answer) {
|
|
172
|
+
return defaultValue;
|
|
173
|
+
}
|
|
174
|
+
const lcAnswer = lowerCase ? answer.toLowerCase() : answer;
|
|
175
|
+
for (const value of values) {
|
|
176
|
+
if (value.startsWith(lcAnswer)) {
|
|
177
|
+
return value;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
return defaultValue;
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
exports.getUserChoice = getUserChoice;
|
|
78
184
|
//# sourceMappingURL=util.js.map
|
package/lib/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":";AAAA;;;;;;;;kFAQkF
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ovsx",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Command line interface for Eclipse Open VSX",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cli",
|
|
@@ -33,14 +33,19 @@
|
|
|
33
33
|
"ovsx": "lib/ovsx"
|
|
34
34
|
},
|
|
35
35
|
"engines": {
|
|
36
|
-
"node": ">=
|
|
36
|
+
"node": ">= 14"
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
|
39
|
-
"
|
|
40
|
-
"
|
|
39
|
+
"commander": "^6.1.0",
|
|
40
|
+
"follow-redirects": "^1.13.2",
|
|
41
|
+
"is-ci": "^2.0.0",
|
|
42
|
+
"leven": "^3.1.0",
|
|
43
|
+
"tmp": "^0.2.1",
|
|
44
|
+
"vsce": "^2.6.3"
|
|
41
45
|
},
|
|
42
46
|
"devDependencies": {
|
|
43
47
|
"@types/follow-redirects": "^1.13.0",
|
|
48
|
+
"@types/is-ci": "^2.0.0",
|
|
44
49
|
"@types/node": "^10.14.18",
|
|
45
50
|
"@types/semver": "^7.1.0",
|
|
46
51
|
"@types/tmp": "^0.1.0",
|
|
@@ -56,7 +61,7 @@
|
|
|
56
61
|
"watch": "tsc -w -p ./tsconfig.json",
|
|
57
62
|
"lint": "eslint -c ./configs/eslintrc.json --ext .ts src",
|
|
58
63
|
"prepare": "yarn run clean && yarn run build",
|
|
59
|
-
"publish:next": "yarn publish --new-version \"$(semver $npm_package_version -i minor)-next.$(git rev-parse --short HEAD)\" --tag
|
|
64
|
+
"publish:next": "yarn publish --new-version \"$(semver $npm_package_version -i minor)-next.$(git rev-parse --short HEAD)\" --tag next --no-git-tag-version",
|
|
60
65
|
"publish:latest": "yarn publish --tag latest"
|
|
61
66
|
}
|
|
62
67
|
}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2020 TypeFox and others
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
* http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
*
|
|
8
|
+
* SPDX-License-Identifier: EPL-2.0
|
|
9
|
+
********************************************************************************/
|
|
10
|
+
|
|
11
|
+
import * as fs from 'fs';
|
|
12
|
+
import * as isCI from 'is-ci';
|
|
13
|
+
import {
|
|
14
|
+
readManifest, writeManifest, Manifest, getUserInput, getUserChoice, writeFile, validateManifest, promisify
|
|
15
|
+
} from './util';
|
|
16
|
+
|
|
17
|
+
async function addLicense(packagePath: string, manifest: Manifest): Promise<void> {
|
|
18
|
+
console.log('Extension ' + manifest.publisher + '.' + manifest.name + ' has no license. All Open VSX '
|
|
19
|
+
+ 'Registry Content Offerings must be licensed. You may choose to publish this extension under '
|
|
20
|
+
+ 'the MIT License (https://opensource.org/licenses/MIT). Please note you are responsible to '
|
|
21
|
+
+ 'ensure that you have the necessary rights to permit this extension to be made available under '
|
|
22
|
+
+ 'the MIT license and for compliance with that license.');
|
|
23
|
+
let answer: 'yes' | 'help' | 'no';
|
|
24
|
+
do {
|
|
25
|
+
console.log();
|
|
26
|
+
answer = await getUserChoice('Would you like to publish your extension '
|
|
27
|
+
+ manifest.publisher + '.' + manifest.name
|
|
28
|
+
+ ' under the MIT license?',
|
|
29
|
+
['yes', 'help', 'no'], 'no');
|
|
30
|
+
switch (answer) {
|
|
31
|
+
case 'yes':
|
|
32
|
+
await useMITLicense(manifest, packagePath);
|
|
33
|
+
break;
|
|
34
|
+
case 'help':
|
|
35
|
+
console.log('If you select "yes" your extension will be published under the MIT License. '
|
|
36
|
+
+ 'You must enter the Copyright Year and Copyright Holder information. This information '
|
|
37
|
+
+ 'along with the text of the MIT License will be written to a LICENSE file and '
|
|
38
|
+
+ 'packaged with the uploaded extension.\n');
|
|
39
|
+
console.log(MIT_LICENSE_TEXT);
|
|
40
|
+
break;
|
|
41
|
+
case 'no':
|
|
42
|
+
throw new Error('This extension cannot be accepted because it has no license.');
|
|
43
|
+
}
|
|
44
|
+
} while (answer === 'help');
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export async function isLicenseOk(packagePath: string, manifest?: Manifest): Promise<boolean> {
|
|
48
|
+
// manifest is optional in order to use isLicenseOk function
|
|
49
|
+
// without need to read and parse manifest by the another step
|
|
50
|
+
manifest = manifest ?? await readManifest(packagePath);
|
|
51
|
+
validateManifest(manifest);
|
|
52
|
+
|
|
53
|
+
if (manifest.license) {
|
|
54
|
+
// The extension has a license identifier or a pointer to an alternative LICENSE file
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
if (await hasLicenseFile(packagePath)) {
|
|
59
|
+
// The extension has a LICENSE file that can be packaged
|
|
60
|
+
return true;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export async function checkLicense(packagePath: string): Promise<void> {
|
|
67
|
+
const manifest = await readManifest(packagePath);
|
|
68
|
+
if (!await isLicenseOk(packagePath, manifest) && !isCI) {
|
|
69
|
+
await addLicense(packagePath, manifest);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
async function useMITLicense(manifest: Manifest, packagePath?: string) {
|
|
74
|
+
console.log('Please enter a value for Copyright Year and Copyright Holder.\n'
|
|
75
|
+
+ 'Example: "Copyright 2020 John Doe"\n');
|
|
76
|
+
const copyright = await getUserInput('Copyright ');
|
|
77
|
+
if (!copyright) {
|
|
78
|
+
throw new Error('A copyright declaration is necessary for the MIT license.');
|
|
79
|
+
}
|
|
80
|
+
manifest.license = 'MIT';
|
|
81
|
+
await writeManifest(manifest, packagePath);
|
|
82
|
+
const license = MIT_LICENSE_TEXT.replace('<YEAR> <COPYRIGHT HOLDER>', copyright);
|
|
83
|
+
await writeFile('LICENSE', license, packagePath);
|
|
84
|
+
console.log('LICENSE file has been written. Please commit it to the source repository.');
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
const LICENSE_FILE_NAMES = ['license.md', 'license', 'license.txt', 'licence.md', 'licence', 'licence.txt'];
|
|
88
|
+
|
|
89
|
+
async function hasLicenseFile(packagePath?: string): Promise<boolean> {
|
|
90
|
+
const fileNames = await promisify(fs.readdir)(packagePath ?? '.');
|
|
91
|
+
for (const fileName of fileNames) {
|
|
92
|
+
for (const licFileName of LICENSE_FILE_NAMES) {
|
|
93
|
+
if (fileName.toLowerCase() === licFileName) {
|
|
94
|
+
return true;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return false;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
const MIT_LICENSE_TEXT: string = `Copyright <YEAR> <COPYRIGHT HOLDER>
|
|
102
|
+
|
|
103
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
104
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
105
|
+
in the Software without restriction, including without limitation the rights
|
|
106
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
107
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
108
|
+
furnished to do so, subject to the following conditions:
|
|
109
|
+
|
|
110
|
+
The above copyright notice and this permission notice shall be included in all
|
|
111
|
+
copies or substantial portions of the Software.
|
|
112
|
+
|
|
113
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
114
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
115
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
116
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
117
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
118
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
119
|
+
SOFTWARE.`;
|
package/src/create-namespace.ts
CHANGED
|
@@ -8,25 +8,22 @@
|
|
|
8
8
|
* SPDX-License-Identifier: EPL-2.0
|
|
9
9
|
********************************************************************************/
|
|
10
10
|
|
|
11
|
-
import { Registry } from './registry';
|
|
11
|
+
import { Registry, RegistryOptions } from './registry';
|
|
12
|
+
import { addEnvOptions } from './util';
|
|
12
13
|
|
|
13
14
|
/**
|
|
14
15
|
* Creates a namespace (corresponds to `publisher` in package.json).
|
|
15
16
|
*/
|
|
16
17
|
export async function createNamespace(options: CreateNamespaceOptions = {}): Promise<void> {
|
|
17
|
-
|
|
18
|
-
options.registryUrl = process.env.OVSX_REGISTRY_URL;
|
|
19
|
-
}
|
|
18
|
+
addEnvOptions(options);
|
|
20
19
|
if (!options.name) {
|
|
21
20
|
throw new Error('The namespace name is mandatory.');
|
|
22
21
|
}
|
|
23
22
|
if (!options.pat) {
|
|
24
|
-
|
|
25
|
-
if (!options.pat) {
|
|
26
|
-
throw new Error("A personal access token must be given with the option '--pat'.");
|
|
27
|
-
}
|
|
23
|
+
throw new Error("A personal access token must be given with the option '--pat'.");
|
|
28
24
|
}
|
|
29
|
-
|
|
25
|
+
|
|
26
|
+
const registry = new Registry(options);
|
|
30
27
|
const result = await registry.createNamespace(options.name, options.pat);
|
|
31
28
|
if (result.error) {
|
|
32
29
|
throw new Error(result.error);
|
|
@@ -34,15 +31,7 @@ export async function createNamespace(options: CreateNamespaceOptions = {}): Pro
|
|
|
34
31
|
console.log(`\ud83d\ude80 Created namespace ${options.name}`);
|
|
35
32
|
}
|
|
36
33
|
|
|
37
|
-
export interface CreateNamespaceOptions {
|
|
38
|
-
/**
|
|
39
|
-
* The base URL of the registry API.
|
|
40
|
-
*/
|
|
41
|
-
registryUrl?: string;
|
|
42
|
-
/**
|
|
43
|
-
* Personal access token.
|
|
44
|
-
*/
|
|
45
|
-
pat?: string;
|
|
34
|
+
export interface CreateNamespaceOptions extends RegistryOptions {
|
|
46
35
|
/**
|
|
47
36
|
* Name of the new namespace.
|
|
48
37
|
*/
|
package/src/get.ts
CHANGED
|
@@ -11,29 +11,31 @@
|
|
|
11
11
|
import * as fs from 'fs';
|
|
12
12
|
import * as path from 'path';
|
|
13
13
|
import * as semver from 'semver';
|
|
14
|
-
import { Registry, Extension } from "./registry";
|
|
15
|
-
import { promisify, matchExtensionId, optionalStat, makeDirs } from './util';
|
|
14
|
+
import { Registry, Extension, RegistryOptions } from "./registry";
|
|
15
|
+
import { promisify, matchExtensionId, optionalStat, makeDirs, addEnvOptions } from './util';
|
|
16
16
|
|
|
17
17
|
/**
|
|
18
18
|
* Downloads an extension or its metadata.
|
|
19
19
|
*/
|
|
20
20
|
export async function getExtension(options: GetOptions): Promise<void> {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
const registry = new Registry({ url: options.registryUrl });
|
|
21
|
+
addEnvOptions(options);
|
|
22
|
+
const registry = new Registry(options);
|
|
23
|
+
|
|
25
24
|
const match = matchExtensionId(options.extensionId);
|
|
26
25
|
if (!match) {
|
|
27
26
|
throw new Error('The extension identifier must have the form `namespace.extension`.');
|
|
28
27
|
}
|
|
28
|
+
|
|
29
29
|
const extension = await registry.getMetadata(match[1], match[2]);
|
|
30
30
|
if (extension.error) {
|
|
31
31
|
throw new Error(extension.error);
|
|
32
32
|
}
|
|
33
|
+
|
|
33
34
|
const matchingVersion = await findMatchingVersion(registry, extension, options.version);
|
|
34
35
|
if (matchingVersion.error) {
|
|
35
36
|
throw new Error(matchingVersion.error);
|
|
36
37
|
}
|
|
38
|
+
|
|
37
39
|
if (options.metadata) {
|
|
38
40
|
await printMetadata(registry, matchingVersion, options.output);
|
|
39
41
|
} else {
|
|
@@ -98,7 +100,7 @@ async function download(registry: Registry, extension: Extension, output?: strin
|
|
|
98
100
|
await registry.download(filePath, new URL(downloadUrl));
|
|
99
101
|
}
|
|
100
102
|
|
|
101
|
-
export interface GetOptions {
|
|
103
|
+
export interface GetOptions extends RegistryOptions {
|
|
102
104
|
/**
|
|
103
105
|
* Identifier in the form `namespace.extension` or `namespace/extension`.
|
|
104
106
|
*/
|
|
@@ -107,10 +109,6 @@ export interface GetOptions {
|
|
|
107
109
|
* An exact version or version range.
|
|
108
110
|
*/
|
|
109
111
|
version?: string;
|
|
110
|
-
/**
|
|
111
|
-
* The base URL of the registry API.
|
|
112
|
-
*/
|
|
113
|
-
registryUrl?: string;
|
|
114
112
|
/**
|
|
115
113
|
* Save the output in the specified file or directory.
|
|
116
114
|
*/
|