emoji-log-vscode
Version:
Emoji-Log — An Emoji Git commit log messages spec standard. [ 📦👌🐛📖🚀🤖 ‼️ ].
62 lines (50 loc) • 1.68 kB
text/typescript
import * as vscode from 'vscode';
import { GitExtension, Repository } from './api/git';
import EmojiLog from './EmojiLog/EmojiLog';
export function activate(context: vscode.ExtensionContext) {
let disposable = vscode.commands.registerCommand('extension.EmojiLog', (uri?) => {
const git = getGitExtension();
if (!git) {
vscode.window.showErrorMessage('Unable to load Git Extension');
return;
}
let emojis = EmojiLog;
let items = [];
for (let i = 0; i < emojis.length; i++) {
items.push({
label: `${emojis[i].emoji}`,
description: `${emojis[i].description}`,
emoji: emojis[i].emoji,
});
}
vscode.window
.showQuickPick(items, { placeHolder: 'Select a particular Emoji Log git commit.' })
.then(function (selected) {
if (selected) {
vscode.commands.executeCommand('workbench.view.scm');
if (uri) {
let selectedRepository = git.repositories.find((repository) => {
return repository.rootUri.path === uri._rootUri?.path || uri.rootUri.path;
});
if (selectedRepository) {
prefixCommit(selectedRepository, selected.emoji);
}
} else {
for (let repo of git.repositories) {
prefixCommit(repo, selected.emoji);
}
}
}
});
});
context.subscriptions.push(disposable);
}
function prefixCommit(repository: Repository, prefix: String) {
repository.inputBox.value = `${prefix} ${repository.inputBox.value}`;
}
function getGitExtension() {
const vscodeGit = vscode.extensions.getExtension<GitExtension>('vscode.git');
const gitExtension = vscodeGit && vscodeGit.exports;
return gitExtension && gitExtension.getAPI(1);
}
export function deactivate() {}