Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/extensions/git-base/src/api/extension.ts
3320 views
1
/*---------------------------------------------------------------------------------------------
2
* Copyright (c) Microsoft Corporation. All rights reserved.
3
* Licensed under the MIT License. See License.txt in the project root for license information.
4
*--------------------------------------------------------------------------------------------*/
5
6
import { Model } from '../model';
7
import { GitBaseExtension, API } from './git-base';
8
import { Event, EventEmitter } from 'vscode';
9
import { ApiImpl } from './api1';
10
11
export class GitBaseExtensionImpl implements GitBaseExtension {
12
13
enabled: boolean = false;
14
15
private _onDidChangeEnablement = new EventEmitter<boolean>();
16
readonly onDidChangeEnablement: Event<boolean> = this._onDidChangeEnablement.event;
17
18
private _model: Model | undefined = undefined;
19
20
set model(model: Model | undefined) {
21
this._model = model;
22
23
const enabled = !!model;
24
25
if (this.enabled === enabled) {
26
return;
27
}
28
29
this.enabled = enabled;
30
this._onDidChangeEnablement.fire(this.enabled);
31
}
32
33
get model(): Model | undefined {
34
return this._model;
35
}
36
37
constructor(model?: Model) {
38
if (model) {
39
this.enabled = true;
40
this._model = model;
41
}
42
}
43
44
getAPI(version: number): API {
45
if (!this._model) {
46
throw new Error('Git model not found');
47
}
48
49
if (version !== 1) {
50
throw new Error(`No API version ${version} found.`);
51
}
52
53
return new ApiImpl(this._model);
54
}
55
}
56
57