You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

47 lines
1.5 KiB

'use strict';
import { commands } from 'vscode';
import { Container } from '../container';
import { GitStashCommit } from '../git/gitService';
import { CommandQuickPickItem } from '../quickpicks';
import { command, Command, CommandContext, Commands, isCommandViewContextWithCommit } from './common';
import { GitCommandsCommandArgs } from '../commands';
export interface StashDeleteCommandArgs {
repoPath?: string;
stashItem?: { stashName: string; message: string; repoPath: string };
goBackCommand?: CommandQuickPickItem;
}
@command()
export class StashDeleteCommand extends Command {
constructor() {
super(Commands.StashDelete);
}
protected preExecute(context: CommandContext, args: StashDeleteCommandArgs = {}) {
if (isCommandViewContextWithCommit<GitStashCommit>(context)) {
args = { ...args };
args.stashItem = context.node.commit;
}
return this.execute(args);
}
async execute(args: StashDeleteCommandArgs = {}) {
let repo;
if (args.stashItem !== undefined || args.repoPath !== undefined) {
repo = await Container.git.getRepository((args.stashItem && args.stashItem.repoPath) || args.repoPath!);
}
const gitCommandArgs: GitCommandsCommandArgs = {
command: 'stash',
state: {
subcommand: 'drop',
repo: repo,
stash: args.stashItem
}
};
return commands.executeCommand(Commands.GitCommands, gitCommandArgs);
}
}