mirror of
https://github.com/ckaczor/vscode-gitlens.git
synced 2026-01-14 17:25:28 -05:00
52 lines
1.9 KiB
TypeScript
52 lines
1.9 KiB
TypeScript
'use strict';
|
|
import { QuickPickItem, Uri } from 'vscode';
|
|
import { getGitStatusIcon, Git, GitCommit, GitStatusFileStatus, GitService, GitUri, IGitStatusFile } from '../gitService';
|
|
import { OpenFileCommandQuickPickItem } from './quickPicks';
|
|
import * as moment from 'moment';
|
|
import * as path from 'path';
|
|
|
|
export class CommitQuickPickItem implements QuickPickItem {
|
|
|
|
label: string;
|
|
description: string;
|
|
detail: string;
|
|
|
|
constructor(public commit: GitCommit, descriptionSuffix: string = '') {
|
|
this.label = `${commit.author}, ${moment(commit.date).fromNow()}`;
|
|
this.description = `\u00a0 \u2014 \u00a0\u00a0 $(git-commit) ${commit.shortSha}${descriptionSuffix}`;
|
|
this.detail = commit.message;
|
|
}
|
|
}
|
|
|
|
export class CommitWithFileStatusQuickPickItem extends OpenFileCommandQuickPickItem {
|
|
|
|
fileName: string;
|
|
gitUri: GitUri;
|
|
sha: string;
|
|
shortSha: string;
|
|
status: GitStatusFileStatus;
|
|
|
|
constructor(commit: GitCommit, status: IGitStatusFile) {
|
|
const icon = getGitStatusIcon(status.status);
|
|
|
|
let directory = Git.normalizePath(path.dirname(status.fileName));
|
|
if (!directory || directory === '.') {
|
|
directory = undefined;
|
|
}
|
|
|
|
let description = (status.status === 'R' && status.originalFileName)
|
|
? `${directory || ''} \u00a0\u2190\u00a0 ${status.originalFileName}`
|
|
: directory;
|
|
|
|
super(GitService.toGitContentUri(commit.sha, status.fileName, commit.repoPath, commit.originalFileName), {
|
|
label: `\u00a0\u00a0\u00a0\u00a0${icon}\u00a0\u00a0 ${path.basename(status.fileName)}`,
|
|
description: description
|
|
});
|
|
|
|
this.fileName = status.fileName;
|
|
this.gitUri = new GitUri(Uri.file(path.resolve(commit.repoPath, status.fileName)));
|
|
this.sha = commit.sha;
|
|
this.shortSha = commit.shortSha;
|
|
this.status = status.status;
|
|
}
|
|
} |