This is an automated email from the ASF dual-hosted git repository. msciabarra pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/openserverless-vscode-extension.git
commit 21a7e09fa4a1d8335016cc8fac0e58ee77be9eb7 Author: mattia-tatone <[email protected]> AuthorDate: Thu Mar 7 23:36:04 2024 +0100 rilevazione status login in base al sistema operativo --- package.json | 4 +- src/enumerators.ts | 6 +-- src/extension.ts | 118 ++++++++++++++++++++--------------------------------- 3 files changed, 50 insertions(+), 78 deletions(-) diff --git a/package.json b/package.json index b54a360..2d8677e 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,7 @@ "viewsWelcome": [ { "view": "command-palette", - "contents": "\n[Deploy](command:nuvolaris.deploy)\n[Devel](command:nuvolaris.devel)\n[Change User](command:nuvolaris.changeuser)" + "contents": "\n[Devel](command:nuvolaris.devel)\n[Deploy](command:nuvolaris.deploy)\n[Change User](command:nuvolaris.changeuser)" } ] }, @@ -56,4 +56,4 @@ "eslint": "^8.26.0", "typescript": "^5.3.2" } -} +} \ No newline at end of file diff --git a/src/enumerators.ts b/src/enumerators.ts index debfbae..06f691e 100644 --- a/src/enumerators.ts +++ b/src/enumerators.ts @@ -1,6 +1,6 @@ -export enum Commands { - Deploy = "nuv ide deploy", - Devel = "nuv ide devel" +export enum CliCommands { + Devel = "nuv ide devel", + Deploy = "nuv ide deploy" } export enum LoginPageIDs { diff --git a/src/extension.ts b/src/extension.ts index b64b4fc..5237d75 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -2,7 +2,9 @@ import * as vscode from 'vscode'; import { NuvolarisTerminalName } from './constants'; import { NuvolarisLoginParams } from './interfaces'; import { LoginPanel } from './login/LoginPanel'; -import { Commands } from './enumerators'; +import { CliCommands } from './enumerators'; +import * as fs from "fs"; +import * as os from "os"; let nuvLoginParams: NuvolarisLoginParams = { nuvUser: '', nuvApiHost: '', @@ -13,10 +15,13 @@ let context: vscode.ExtensionContext; export async function activate(ctx: vscode.ExtensionContext) { try { context = ctx; - - Object.entries(Commands).forEach(([name, command]) => + let loggedIn = isLoggedIn(); + if (!loggedIn) LoginPanel.render(handleLogin, context.extensionUri); + + Object.entries(CliCommands).forEach(([name, command]) => context.subscriptions.push(vscode.commands.registerCommand(`nuvolaris.${name.toLowerCase()}`, () => { - if (loginIfNotAlreadyLoggedIn()) launchTerminal(command); + if (!loggedIn) LoginPanel.render(handleLogin, context.extensionUri); + launchTerminal(command); } ))); @@ -26,8 +31,7 @@ export async function activate(ctx: vscode.ExtensionContext) { vscode.window.showInformationMessage("Are you sure you want to change user?", yes, no) .then(answer => { if (answer === yes) { - clearEnvironmentVariables(); - loginIfNotAlreadyLoggedIn(); + LoginPanel.render(handleLogin, context.extensionUri); } }) })); @@ -37,99 +41,67 @@ export async function activate(ctx: vscode.ExtensionContext) { } } -function loginIfNotAlreadyLoggedIn() { - try { - let validCredentials = validateNuvolarisCredentials(); - if (validCredentials) launchLoginTerminal(); - else LoginPanel.render(handleLogin, context.extensionUri); - return validCredentials; - } catch (error) { - printError(error); - throw error; - } -} - - -function handleLogin(username: string, password: string, apiHost: string) { - try { - updateNuvolarisLoginParams(username, password, apiHost); - let loginTerminalStatus = launchLoginTerminal(); - // if (loginTerminalStatus?.code){ - // LoginPanel.currentPanel?.dispose(); - - // } - - } catch (error) { - printError(error); - throw error; - } -} - -function validateNuvolarisCredentials() { - try { - let { nuvUser, nuvApiHost, nuvPassword } = nuvLoginParams; - return nuvUser && nuvApiHost && nuvPassword; - } catch (error) { - printError(error); - throw error; - } -} - -function updateNuvolarisLoginParams(nuvUser: string, nuvPassword: string, nuvApiHost: string) { - try { - nuvLoginParams = { - nuvUser: nuvUser, - nuvApiHost: nuvApiHost, - nuvPassword: nuvPassword - } - - } catch (error) { - printError(error); - throw error; - } -} - -function clearEnvironmentVariables() { +function isLoggedIn() { try { - nuvLoginParams = { - nuvUser: '', - nuvApiHost: '', - nuvPassword: '' + let isLoggedIn = false; + switch (os.platform().toLowerCase()) { + case "linux": { + isLoggedIn = fs.existsSync("/root/.wskprops"); + break; + } + case "win32": { + isLoggedIn = fs.existsSync(os.userInfo().homedir + "/.wskprops"); + break; + } + case 'aix': { + throw new Error("Not implemented yet.") + break; + } + case 'darwin': { + throw new Error("Not implemented yet.") + break; + } + case 'freebsd': { + throw new Error("Not implemented yet.") + break; + } + case 'openbsd': { + throw new Error("Not implemented yet.") + break; + } + case 'sunos': { + throw new Error("Not implemented yet.") + break; + } } - + return isLoggedIn; } catch (error) { printError(error); throw error; } } -function launchLoginTerminal() { - // launchTerminal('nuv -login') +function handleLogin(username: string, password: string, apiHost: string) { try { - return launchTerminal(`nuv -login ${nuvLoginParams.nuvApiHost} ${nuvLoginParams.nuvUser} ${nuvLoginParams.nuvPassword}`) + launchTerminal(`nuv -login ${apiHost} ${username} ${password}`) } catch (error) { printError(error); throw error; } } -function launchTerminal(command: string) { +function launchTerminal(command: string): void { try { // If a terminal named "Nuvolaris" already exists, launch the command inside that one. const terminal = vscode.window.terminals.find(t => t.name === NuvolarisTerminalName) || vscode.window.createTerminal(NuvolarisTerminalName); terminal.show(); terminal.sendText(command, true); - return terminal } catch (error) { printError(error); throw error; } } - - - - function printError(error: any) { return vscode.window.showErrorMessage("Error occurred", error.toString()); } \ No newline at end of file
