Merge commit 'refs/pull/294/head' of github.com:microsoft/vscode-vsce into pr/294

This commit is contained in:
Joao Moreno 2019-11-28 16:41:35 +01:00
commit 56f916b4fc
4 changed files with 27 additions and 13 deletions

View file

@ -90,6 +90,13 @@ export interface IListFilesOptions {
* no dependencies will be included.
*/
packagedDependencies?: string[];
/**
* The location of an alternative .vscodeignore file to be used.
* The `.vscodeignore` file located at the root of the project will be taken
* instead, if none is specified.
*/
ignoreFile?: string;
}
export interface IPublishVSIXOptions {
@ -135,7 +142,7 @@ export function publish(options: IPublishOptions = {}): Promise<any> {
* Lists the files included in the extension's package.
*/
export function listFiles(options: IListFilesOptions = {}): Promise<string[]> {
return _listFiles(options.cwd, options.packageManager === PackageManager.Yarn, options.packagedDependencies);
return _listFiles(options.cwd, options.packageManager === PackageManager.Yarn, options.packagedDependencies, options.ignoreFile);
}
/**

View file

@ -63,7 +63,8 @@ module.exports = function (argv: string[]): void {
.description('Lists all the files that will be published')
.option('--yarn', 'Use yarn instead of npm')
.option('--packagedDependencies <path>', 'Select packages that should be published only (includes dependencies)', (val, all) => all ? all.concat(val) : [val], undefined)
.action(({ yarn, packagedDependencies }) => main(ls(undefined, yarn, packagedDependencies)));
.option('--ignoreFile [path]', 'Indicate alternative .vscodeignore')
.action(({ yarn, packagedDependencies, ignoreFile }) => main(ls(undefined, yarn, packagedDependencies, ignoreFile)));
program
.command('package')
@ -72,7 +73,8 @@ module.exports = function (argv: string[]): void {
.option('--baseContentUrl [url]', 'Prepend all relative links in README.md with this url.')
.option('--baseImagesUrl [url]', 'Prepend all relative image links in README.md with this url.')
.option('--yarn', 'Use yarn instead of npm')
.action(({ out, baseContentUrl, baseImagesUrl, yarn }) => main(packageCommand({ packagePath: out, baseContentUrl, baseImagesUrl, useYarn: yarn })));
.option('--ignoreFile [path]', 'Indicate alternative .vscodeignore')
.action(({ out, baseContentUrl, baseImagesUrl, yarn, ignoreFile }) => main(packageCommand({ packagePath: out, baseContentUrl, baseImagesUrl, useYarn: yarn, ignoreFile })));
program
.command('publish [<version>]')
@ -84,7 +86,8 @@ module.exports = function (argv: string[]): void {
.option('--baseImagesUrl [url]', 'Prepend all relative image links in README.md with this url.')
.option('--yarn', 'Use yarn instead of npm while packing extension files')
.option('--noVerify')
.action((version, { pat, message, packagePath, baseContentUrl, baseImagesUrl, yarn, noVerify }) => main(publish({ pat, commitMessage: message, version, packagePath, baseContentUrl, baseImagesUrl, useYarn: yarn, noVerify })));
.option('--ignoreFile [path]', 'Indicate alternative .vscodeignore')
.action((version, { pat, message, packagePath, baseContentUrl, baseImagesUrl, yarn, noVerify, ignoreFile }) => main(publish({ pat, commitMessage: message, version, packagePath, baseContentUrl, baseImagesUrl, useYarn: yarn, noVerify, ignoreFile })));
program
.command('unpublish [<extensionid>]')

View file

@ -69,6 +69,7 @@ export interface IPackageOptions {
baseImagesUrl?: string;
useYarn?: boolean;
dependencyEntryPoints?: string[];
ignoreFile?: string;
}
export interface IProcessor {
@ -827,12 +828,12 @@ function collectAllFiles(cwd: string, useYarn = false, dependencyEntryPoints?: s
});
}
function collectFiles(cwd: string, useYarn = false, dependencyEntryPoints?: string[]): Promise<string[]> {
function collectFiles(cwd: string, useYarn = false, dependencyEntryPoints?: string[], ignoreFile?: string): Promise<string[]> {
return collectAllFiles(cwd, useYarn, dependencyEntryPoints).then(files => {
files = files.filter(f => !/\r$/m.test(f));
return readFile(path.join(cwd, '.vscodeignore'), 'utf8')
.catch<string>(err => err.code !== 'ENOENT' ? Promise.reject(err) : Promise.resolve(''))
return readFile(ignoreFile ? ignoreFile : path.join(cwd, '.vscodeignore'), 'utf8')
.catch<string>(err => err.code !== 'ENOENT' ? Promise.reject(err) : ignoreFile ? Promise.reject(err) : Promise.resolve(''))
// Parse raw ignore by splitting output into lines and filtering out empty lines and comments
.then(rawIgnore => rawIgnore.split(/[\n\r]/).map(s => s.trim()).filter(s => !!s).filter(i => !/^\s*#/.test(i)))
@ -888,9 +889,10 @@ export function collect(manifest: Manifest, options: IPackageOptions = {}): Prom
const cwd = options.cwd || process.cwd();
const useYarn = options.useYarn || false;
const packagedDependencies = options.dependencyEntryPoints || undefined;
const ignoreFile = options.ignoreFile || undefined;
const processors = createDefaultProcessors(manifest, options);
return collectFiles(cwd, useYarn, packagedDependencies).then(fileNames => {
return collectFiles(cwd, useYarn, packagedDependencies, ignoreFile).then(fileNames => {
const files = fileNames.map(f => ({ path: `extension/${f}`, localPath: path.join(cwd, f) }));
return processFiles(processors, files, options);
@ -992,17 +994,17 @@ export async function packageCommand(options: IPackageOptions = {}): Promise<any
/**
* Lists the files included in the extension's package. Does not run prepublish.
*/
export function listFiles(cwd = process.cwd(), useYarn = false, packagedDependencies?: string[]): Promise<string[]> {
export function listFiles(cwd = process.cwd(), useYarn = false, packagedDependencies?: string[], ignoreFile?: string): Promise<string[]> {
return readManifest(cwd)
.then(manifest => collectFiles(cwd, useYarn, packagedDependencies));
.then(manifest => collectFiles(cwd, useYarn, packagedDependencies, ignoreFile));
}
/**
* Lists the files included in the extension's package. Runs prepublish.
*/
export function ls(cwd = process.cwd(), useYarn = false, packagedDependencies?: string[]): Promise<void> {
export function ls(cwd = process.cwd(), useYarn = false, packagedDependencies?: string[], ignoreFile?: string): Promise<void> {
return readManifest(cwd)
.then(manifest => prepublish(cwd, manifest, useYarn))
.then(manifest => collectFiles(cwd, useYarn, packagedDependencies))
.then(manifest => collectFiles(cwd, useYarn, packagedDependencies, ignoreFile))
.then(files => files.forEach(f => console.log(`${f}`)));
}

View file

@ -97,6 +97,7 @@ export interface IPublishOptions {
baseImagesUrl?: string;
useYarn?: boolean;
noVerify?: boolean;
ignoreFile?: string;
}
function versionBump(cwd: string = process.cwd(), version?: string, commitMessage?: string): Promise<void> {
@ -152,10 +153,11 @@ export function publish(options: IPublishOptions = {}): Promise<any> {
const baseContentUrl = options.baseContentUrl;
const baseImagesUrl = options.baseImagesUrl;
const useYarn = options.useYarn;
const ignoreFile = options.ignoreFile;
promise = versionBump(options.cwd, options.version, options.commitMessage)
.then(() => tmpName())
.then(packagePath => pack({ packagePath, cwd, baseContentUrl, baseImagesUrl, useYarn }));
.then(packagePath => pack({ packagePath, cwd, baseContentUrl, baseImagesUrl, useYarn, ignoreFile }));
}
return promise.then(({ manifest, packagePath }) => {