|
|
- import { TextEditor, Uri } from 'vscode';
- import type { Container } from '../container';
- import { GitUri } from '../git/gitUri';
- import { Logger } from '../logger';
- import { ActiveEditorCommand, command, Commands, executeCommand, getCommandUri } from './common';
- import { OpenPullRequestOnRemoteCommandArgs } from './openPullRequestOnRemote';
-
- @command()
- export class OpenAssociatedPullRequestOnRemoteCommand extends ActiveEditorCommand {
- constructor(private readonly container: Container) {
- super(Commands.OpenAssociatedPullRequestOnRemote);
- }
-
- async execute(editor?: TextEditor, uri?: Uri) {
- if (editor == null) return;
-
- uri = getCommandUri(uri, editor);
- if (uri == null) return;
-
- const gitUri = await GitUri.fromUri(uri);
-
- const blameline = editor.selection.active.line;
- if (blameline < 0) return;
-
- try {
- const blame = await this.container.git.getBlameForLine(gitUri, blameline);
- if (blame == null) return;
-
- await executeCommand<OpenPullRequestOnRemoteCommandArgs>(Commands.OpenPullRequestOnRemote, {
- clipboard: false,
- ref: blame.commit.sha,
- repoPath: blame.commit.repoPath,
- });
- } catch (ex) {
- Logger.error(ex, 'OpenAssociatedPullRequestOnRemoteCommand', `getBlameForLine(${blameline})`);
- }
- }
- }
|