60 lines
1.9 KiB
TypeScript
60 lines
1.9 KiB
TypeScript
import * as vscode from 'vscode';
|
|
|
|
import { GitService } from './GitService';
|
|
import { GViewProvider } from './view.provider';
|
|
|
|
function getGitApi(){
|
|
|
|
const gitExtension = vscode.extensions.getExtension<'vscode.git'>('vscode.git');
|
|
if(gitExtension && gitExtension.isActive){
|
|
const api = (gitExtension.exports as any).getAPI(1);
|
|
return api.git.path;
|
|
}else{
|
|
throw new Error('Git extension is not active');
|
|
}
|
|
|
|
}
|
|
|
|
export async function activate(context: vscode.ExtensionContext) {
|
|
const gitPath = getGitApi();
|
|
if(!gitPath){
|
|
vscode.window.showErrorMessage('No Git avaliable');
|
|
return;
|
|
}
|
|
const logger = vscode.window.createOutputChannel('GitCommitFilter',{log: true});
|
|
const gitService = new GitService(gitPath,logger);
|
|
|
|
const viewProvider = new GViewProvider(context, gitService,logger);
|
|
|
|
const activityBarIcon = vscode.window.registerWebviewViewProvider(GViewProvider.viewType, viewProvider);
|
|
|
|
context.subscriptions.push(activityBarIcon);
|
|
}
|
|
|
|
export function deactivate() {}
|
|
|
|
// 实现TreeDataProvider接口
|
|
class CommitTreeDataProvider implements vscode.TreeDataProvider<vscode.TreeItem> {
|
|
private _onDidChangeTreeData: vscode.EventEmitter<vscode.TreeItem | undefined | void> = new vscode.EventEmitter<vscode.TreeItem | undefined | void>();
|
|
readonly onDidChangeTreeData: vscode.Event<vscode.TreeItem | undefined | void> = this._onDidChangeTreeData.event;
|
|
|
|
private gitService: GitService;
|
|
|
|
constructor(gitService: GitService) {
|
|
this.gitService = gitService;
|
|
}
|
|
|
|
refresh(): void {
|
|
this._onDidChangeTreeData.fire();
|
|
}
|
|
|
|
getTreeItem(element: vscode.TreeItem): vscode.TreeItem {
|
|
return element;
|
|
}
|
|
|
|
getChildren(element?: vscode.TreeItem): vscode.ProviderResult<vscode.TreeItem[]> {
|
|
if (element) {
|
|
return [];
|
|
}
|
|
}
|
|
} |