@@ -10,7 +10,7 @@ import * as vscode from "vscode";
1010import * as constants from "./common/constants" ;
1111const arduinoContentProviderModule =
1212 impor ( "./arduino/arduinoContentProvider" ) as typeof import ( "./arduino/arduinoContentProvider" ) ;
13- import { IBoard } from "./arduino/package" ;
13+ import { IBoard , IProgrammer } from "./arduino/package" ;
1414import { VscodeSettings } from "./arduino/vscodeSettings" ;
1515const arduinoActivatorModule = impor ( "./arduinoActivator" ) as typeof import ( "./arduinoActivator" ) ;
1616const arduinoContextModule = impor ( "./arduinoContext" ) as typeof import ( "./arduinoContext" ) ;
@@ -26,6 +26,7 @@ const completionProviderModule = impor("./langService/completionProvider") as ty
2626import { BuildMode } from "./arduino/arduino" ;
2727import * as Logger from "./logger/logger" ;
2828import { SerialMonitor } from "./serialmonitor/serialMonitor" ;
29+ import { ArduinoContentProvider } from "./arduino/arduinoContentProvider" ;
2930const usbDetectorModule = impor ( "./serialmonitor/usbDetector" ) as typeof import ( "./serialmonitor/usbDetector" ) ;
3031
3132export async function activate ( context : vscode . ExtensionContext ) {
@@ -383,10 +384,17 @@ export async function activate(context: vscode.ExtensionContext) {
383384 }
384385 Logger . traceUserData ( "end-activate-extension" , { correlationId : activeGuid } ) ;
385386
387+ // Makes the provider available to the programmatic api
388+ const provider : {
389+ arduinoManagerProvider ?: ArduinoContentProvider ,
390+ } = { } ;
391+
386392 setTimeout ( async ( ) => {
387393 const arduinoManagerProvider = new arduinoContentProviderModule . ArduinoContentProvider ( context . extensionPath ) ;
388394 await arduinoManagerProvider . initialize ( ) ;
389395
396+ provider . arduinoManagerProvider = arduinoManagerProvider ;
397+
390398 context . subscriptions . push ( vscode . workspace . registerTextDocumentContentProvider ( ARDUINO_MANAGER_PROTOCOL , arduinoManagerProvider ) ) ;
391399 registerArduinoCommand ( "arduino.showBoardManager" , async ( ) => {
392400 const panel = vscode . window . createWebviewPanel ( "arduinoBoardManager" , "Arduino Board Manager" , vscode . ViewColumn . Two , {
@@ -447,6 +455,48 @@ export async function activate(context: vscode.ExtensionContext) {
447455 usbDetectorModule . UsbDetector . getInstance ( ) . initialize ( context ) ;
448456 usbDetectorModule . UsbDetector . getInstance ( ) . startListening ( ) ;
449457 } , 200 ) ;
458+
459+ return {
460+ getCurrentBoard ( ) {
461+ return arduinoContextModule . default . boardManager . currentBoard ;
462+ } ,
463+ getBoardTypes ( ) {
464+ return arduinoContextModule . default . boardManager . listBoards ( ) ;
465+ } ,
466+ changeBoardType ( board : IBoard ) {
467+ arduinoContextModule . default . boardManager . doChangeBoardType ( board ) ;
468+ provider . arduinoManagerProvider . update ( LIBRARY_MANAGER_URI ) ;
469+ provider . arduinoManagerProvider . update ( EXAMPLES_URI ) ;
470+ return { board : arduinoContextModule . default . boardManager . currentBoard } ;
471+ } ,
472+ installBoard : async ( packageName : string , arch : string = "" , version : string = "" , showOutput : boolean = true ) => {
473+ await arduinoContextModule . default . arduinoApp . installBoard ( packageName , arch , version , showOutput )
474+ } ,
475+ getCurrentProgrammer ( ) {
476+ return deviceContext . programmer ;
477+ } ,
478+ getAvailableProgrammers ( board : IBoard ) {
479+ return arduinoContextModule . default . arduinoApp . programmerManager . getAvailableProgrammers ( board )
480+ } ,
481+ selectProgrammer ( programmer : IProgrammer ) {
482+ if ( ! arduinoContextModule . default . arduinoApp . building ) {
483+ try {
484+ arduinoContextModule . default . arduinoApp . programmerManager . setProgrammerValue ( programmer . name ) ;
485+ deviceContext . programmer = arduinoContextModule . default . arduinoApp . programmerManager . currentProgrammer ;
486+ return true ;
487+ } catch ( ex ) {
488+ return false ;
489+ }
490+ }
491+ } ,
492+ selectSketch ( relativeSketchPath : string ) {
493+ deviceContext . sketch = relativeSketchPath ;
494+ deviceContext . showStatusBar ( ) ;
495+ } ,
496+ setOutput ( relativeOutputPath : string ) {
497+ deviceContext . output = relativeOutputPath ;
498+ }
499+ }
450500}
451501
452502export async function deactivate ( ) {
0 commit comments