Path: blob/main/extensions/git-base/src/api/extension.ts
3320 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/45import { Model } from '../model';6import { GitBaseExtension, API } from './git-base';7import { Event, EventEmitter } from 'vscode';8import { ApiImpl } from './api1';910export class GitBaseExtensionImpl implements GitBaseExtension {1112enabled: boolean = false;1314private _onDidChangeEnablement = new EventEmitter<boolean>();15readonly onDidChangeEnablement: Event<boolean> = this._onDidChangeEnablement.event;1617private _model: Model | undefined = undefined;1819set model(model: Model | undefined) {20this._model = model;2122const enabled = !!model;2324if (this.enabled === enabled) {25return;26}2728this.enabled = enabled;29this._onDidChangeEnablement.fire(this.enabled);30}3132get model(): Model | undefined {33return this._model;34}3536constructor(model?: Model) {37if (model) {38this.enabled = true;39this._model = model;40}41}4243getAPI(version: number): API {44if (!this._model) {45throw new Error('Git model not found');46}4748if (version !== 1) {49throw new Error(`No API version ${version} found.`);50}5152return new ApiImpl(this._model);53}54}555657