This repository was archived by the owner on Oct 1, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 236
/
Copy patharduinoActivator.ts
51 lines (45 loc) · 2.37 KB
/
arduinoActivator.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT license.
import * as vscode from "vscode";
import { ArduinoApp } from "./arduino/arduino";
import { ArduinoSettings } from "./arduino/arduinoSettings";
import { BoardManager } from "./arduino/boardManager";
import { ExampleManager } from "./arduino/exampleManager";
import { ExampleProvider } from "./arduino/exampleProvider";
import { LibraryManager } from "./arduino/libraryManager";
import { ProgrammerManager } from "./arduino/programmerManager";
import ArduinoContext from "./arduinoContext";
import { hostPlatform } from "./common/platform";
import { DeviceContext } from "./deviceContext";
class ArduinoActivator {
private _initializePromise: Promise<void>;
public async activate() {
if (this._initializePromise) {
await this._initializePromise;
return;
}
this._initializePromise = (async () => {
const arduinoSettings = new ArduinoSettings(hostPlatform());
await arduinoSettings.initialize();
const arduinoApp = new ArduinoApp(arduinoSettings);
await arduinoApp.initialize();
// TODO: After use the device.json config, should remove the dependency on the ArduinoApp object.
const deviceContext = DeviceContext.getInstance();
await deviceContext.loadContext();
// Show sketch status bar, and allow user to change sketch in config file
deviceContext.showStatusBar();
// Arduino board manager & library manager
arduinoApp.boardManager = new BoardManager(arduinoSettings, arduinoApp);
ArduinoContext.boardManager = arduinoApp.boardManager;
await arduinoApp.boardManager.loadPackages();
arduinoApp.libraryManager = new LibraryManager(arduinoSettings, arduinoApp);
arduinoApp.exampleManager = new ExampleManager(arduinoSettings, arduinoApp);
arduinoApp.programmerManager = new ProgrammerManager(arduinoSettings, arduinoApp);
ArduinoContext.arduinoApp = arduinoApp;
const exampleProvider = new ExampleProvider(arduinoApp.exampleManager, arduinoApp.boardManager);
vscode.window.registerTreeDataProvider("arduinoExampleExplorer", exampleProvider);
})();
await this._initializePromise;
}
}
export default new ArduinoActivator();