'use strict'; import { TextEditor, Uri, window } from 'vscode'; import { ActiveEditorCachedCommand, Commands, getCommandUri } from './common'; import { GitService } from '../gitService'; import { Logger } from '../logger'; import { Messages } from '../messages'; import { CommandQuickPickItem, RepoStatusQuickPick } from '../quickPicks'; export interface ShowQuickRepoStatusCommandArgs { goBackCommand?: CommandQuickPickItem; } export class ShowQuickRepoStatusCommand extends ActiveEditorCachedCommand { constructor(private git: GitService) { super(Commands.ShowQuickRepoStatus); } async execute(editor?: TextEditor, uri?: Uri, args: ShowQuickRepoStatusCommandArgs = {}) { uri = getCommandUri(uri, editor); try { const repoPath = await this.git.getRepoPathFromUri(uri); if (!repoPath) return Messages.showNoRepositoryWarningMessage(`Unable to show repository status`); const status = await this.git.getStatusForRepo(repoPath); if (status === undefined) return window.showWarningMessage(`Unable to show repository status`); const pick = await RepoStatusQuickPick.show(status, args.goBackCommand); if (pick === undefined) return undefined; if (pick instanceof CommandQuickPickItem) return pick.execute(); return undefined; } catch (ex) { Logger.error(ex, 'ShowQuickRepoStatusCommand'); return window.showErrorMessage(`Unable to show repository status. See output channel for more details`); } } }