just playing around

This commit is contained in:
Michael Becker 2024-12-17 00:56:50 -05:00
parent c1558c1ca2
commit d38212fbb3
2 changed files with 103 additions and 27 deletions

View File

@ -14,12 +14,18 @@
"contributes": {
"commands": [
{
"command": "suvmanager.suv_manager",
"command": "mocha.suvmanager.suv_manager",
"title": "Manage SUVs",
"category": "Mocha"
},
{
"command": "suvmanager.suv_up",
"command": "mocha.suvmanager.suv_show",
"title": "Open SUV in Web Browser",
"shortTitle": "Show in Web",
"category": "Mocha"
},
{
"command": "mocha.suvmanager.suv_up",
"title": "Launch SUV",
"category": "Mocha"
},
@ -145,6 +151,18 @@
"when": "view == mocha.suvManager",
"group": "navigation@1"
}
],
"view/item/context": [
{
"command": "mocha.suvmanager.suv_show",
"group": "YourGroup@1",
"when": "view == mocha.suvManager"
},
{
"command": "mocha.suvmanager.suv_up",
"group": "YourGroup@2",
"when": "view == mocha.suvManager"
}
]
}
},

View File

@ -25,7 +25,7 @@ export function mkotsuri(suvId : string, tenantName : string, command : string,
}
function updateModuleExplorerTreeView() {
/*
dpModuleExplorer.items.push(new GenericTreeDataItem("tools", "tools", [
new GenericTreeDataItem("tools:xpresso", "xpressO", [
new GenericTreeDataItem("tools:xpressO:method", "method", [
@ -47,7 +47,7 @@ function updateModuleExplorerTreeView() {
"type": "module"
}
));
*/
return;
let suvId : string = "i-0c0398f84acecb702";
let tenantName : string = "super";
@ -102,10 +102,29 @@ function recursiveAddItemToTreeView(dp : GenericTreeDataProvider, item : any, pa
}
}
function launchSuv(name : string)
{
cp.exec("mocha suv up " + name, (err2: string, stdout2: string, stderr2: string) => {
vscode.window.showInformationMessage('Selected SUV ( ' + name + ' ) launched successfully!');
});
vscode.window.showInformationMessage('Selected SUV ( ' + name + ' ) is launching now!');
}
let outputChannel: vscode.OutputChannel | undefined = undefined;
export function openWebBrowser(url: vscode.Uri) {
cp.exec("xdg-open " + url.toString(), (err: string, stdout: string, stderr: string) => {
});
}
// This method is called when your extension is activated
// Your extension is activated the very first time the command is executed
export function activate(context: vscode.ExtensionContext) {
outputChannel = vscode.window.createOutputChannel("Mocha");
outputChannel.appendLine("Mocha for VSCode activated");
let treeDataProvider = new SuvManagerTreeDataProvider();
treeSuvManager = vscode.window.createTreeView("mocha.suvManager", { "canSelectMany": true, "showCollapseAll": true, "treeDataProvider": treeDataProvider });
treeDataProvider.treeview = treeSuvManager;
@ -116,7 +135,7 @@ export function activate(context: vscode.ExtensionContext) {
// dpModuleExplorer.treeview = treeModuleExplorer;
// treeModuleExplorer.badge = { "value": 1, "tooltip": "1 SUV(s) running" };
// updateModuleExplorerTreeView();
updateModuleExplorerTreeView();
// Use the console to output diagnostic information (console.log) and errors (console.error)
// This line of code will only be executed once when your extension is activated
@ -208,7 +227,7 @@ export function activate(context: vscode.ExtensionContext) {
// The command has been defined in the package.json file
// Now provide the implementation of the command with registerCommand
// The commandId parameter must match the command field in package.json
let cmd_suv_manager = vscode.commands.registerCommand('suvmanager.suv_manager', () => {
let cmd_suv_manager = vscode.commands.registerCommand('mocha.suvmanager.suv_manager', () => {
// The code you place here will be executed every time your command is executed
// Display a message box to the user
@ -216,34 +235,73 @@ export function activate(context: vscode.ExtensionContext) {
});
context.subscriptions.push(cmd_suv_manager);
let cmd_suv_up = vscode.commands.registerCommand('suvmanager.suv_up', () => {
// The code you place here will be executed every time your command is executed
// Display a message box to the user
cp.exec('mocha suv list', (err: string, stdout: string, stderr: string) =>
{
let cmd_suv_show = vscode.commands.registerCommand('mocha.suvmanager.suv_show', (...args) => {
if (args.length === 0) {
cp.exec('mocha suv list', (err: string, stdout: string, stderr: string) => {
vscode.window.showInformationMessage(stdout);
let list = stdout.split(' ');
let list2 = new Array<string>();
list.forEach( (element) =>
{
list.forEach((element) => {
list2.push(element.trim());
});
var w = vscode.window.showQuickPick(list2, { "title": "Launch SUV", "placeHolder": "Pick an SUV to launch (e.g. i-012345678)" }).then((value) =>
var w = vscode.window.showQuickPick(list2, { "title": "Open SUV in Web Browser", "placeHolder": "Choose an SUV to open" }).then((value) => {
if (value !== undefined) {
openWebBrowser(vscode.Uri.parse("https://" + value + ".privatesuv.com"));
}
});
});
}
else
{
cp.exec("mocha suv up " + value, (err2: string, stdout2: string, stderr2: string) =>
let machine : Machine = args[0] as Machine;
openWebBrowser(vscode.Uri.parse("https://" + machine.name + ".privatesuv.com"));
}
});
let cmd_suv_up = vscode.commands.registerCommand('mocha.suvmanager.suv_up', (...args) => {
if (args.length === 0) {
cp.exec('mocha suv list', (err: string, stdout: string, stderr: string) => {
vscode.window.showInformationMessage(stdout);
let list = stdout.split(' ');
let list2 = new Array<string>();
list.forEach((element) => {
list2.push(element.trim());
});
var w = vscode.window.showQuickPick(list2, { "title": "Launch SUV", "placeHolder": "Pick an SUV to launch (e.g. i-012345678)" }).then((value) => {
if (value !== undefined) {
launchSuv(value);
}
});
});
}
else
{
vscode.window.showInformationMessage('Selected SUV ( ' + value + ' ) launched successfully!');
});
vscode.window.showInformationMessage('Selected SUV ( ' + value + ' ) is launching now!');
});
});
let machine : Machine = args[0] as Machine;
launchSuv(machine.name);
}
});
let cmd_suv_new = vscode.commands.registerCommand('mocha.suvmanager.suv_new', () => {
outputChannel?.appendLine("Provisioning a new persistent SUV...");
cp.exec('mocha suv new --unattended', (err: string, stdout: string, stderr: string) =>
{
if (err == null) {
outputChannel?.appendLine("New SUV provisioned successfully!");
vscode.window.showInformationMessage('New SUV provisioned successfully!');
}
else {
outputChannel?.appendLine(err);
vscode.window.showErrorMessage("SUV provisioning failed. Check the error log for details.", "Show Error Log").then((value) => {
if (value == "Show Error Log")
{
outputChannel?.show();
}
});
}
treeDataProvider.refresh();
});
});