unpublish without arguments

fixes #81
This commit is contained in:
Joao Moreno 2016-03-18 11:58:14 +00:00
parent 7bf31e59b7
commit 5d15533a78
3 changed files with 18 additions and 9 deletions

View file

@ -29,10 +29,10 @@ module.exports = function (argv: string[]): void {
.action((version, { pat }) => catchFatal(publish({ pat, version }))); .action((version, { pat }) => catchFatal(publish({ pat, version })));
program program
.command('unpublish <publisher> <name>') .command('unpublish [<extensionid>]')
.description('Unpublishes an extension') .description('Unpublishes an extension. Example extension id: microsoft.csharp.')
.option('-p, --pat <token>', 'Personal Access Token') .option('-p, --pat <token>', 'Personal Access Token')
.action((publisher, name, { pat }) => catchFatal(unpublish(publisher, name, { pat }))); .action((id, { pat }) => catchFatal(unpublish({ id, pat })));
program program
.command('list <publisher>') .command('list <publisher>')

View file

@ -286,7 +286,7 @@ export function validateManifest(manifest: Manifest): Manifest {
return manifest; return manifest;
} }
export function readManifest(cwd: string): Promise<Manifest> { export function readManifest(cwd = process.cwd()): Promise<Manifest> {
const manifestPath = path.join(cwd, 'package.json'); const manifestPath = path.join(cwd, 'package.json');
return readFile(manifestPath, 'utf8') return readFile(manifestPath, 'utf8')

View file

@ -157,12 +157,21 @@ export function list(publisher: string): Promise<any> {
}); });
} }
export function unpublish(publisher: string, name: string, options: IPublishOptions = {}): Promise<any> { export interface IUnpublishOptions extends IPublishOptions {
const details = publisher && name id?: string;
? Promise.resolve(({ publisher, name })) }
: readManifest(options.cwd);
return details.then(({ publisher, name }) => { export function unpublish(options: IUnpublishOptions = {}): Promise<any> {
let promise: Promise<{ publisher: string; name: string; }>;
if (options.id) {
const [publisher, name] = options.id.split('.');
promise = Promise.resolve(({ publisher, name }));
} else {
promise = readManifest(options.cwd);
}
return promise.then(({ publisher, name }) => {
const fullName = `${ publisher }.${ name }`; const fullName = `${ publisher }.${ name }`;
const pat = options.pat const pat = options.pat
? Promise.resolve(options.pat) ? Promise.resolve(options.pat)