Files
vscode-gitlens/src/quickPicks/gitQuickPicks.ts
2017-03-28 10:41:32 -04:00

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;
}
}