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 })));
program
.command('unpublish <publisher> <name>')
.description('Unpublishes an extension')
.command('unpublish [<extensionid>]')
.description('Unpublishes an extension. Example extension id: microsoft.csharp.')
.option('-p, --pat <token>', 'Personal Access Token')
.action((publisher, name, { pat }) => catchFatal(unpublish(publisher, name, { pat })));
.action((id, { pat }) => catchFatal(unpublish({ id, pat })));
program
.command('list <publisher>')

View file

@ -286,7 +286,7 @@ export function validateManifest(manifest: Manifest): 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');
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> {
const details = publisher && name
? Promise.resolve(({ publisher, name }))
: readManifest(options.cwd);
export interface IUnpublishOptions extends IPublishOptions {
id?: string;
}
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 pat = options.pat
? Promise.resolve(options.pat)