diff --git a/NodeApp/package-lock.json b/NodeApp/package-lock.json index ed153abcf0d2bf7fc6adaac6804de00f39edb7a4..348f49dc0943f7978b4999de37c5f06c5b0199e7 100644 --- a/NodeApp/package-lock.json +++ b/NodeApp/package-lock.json @@ -1,12 +1,12 @@ { "name": "dojo_cli", - "version": "3.1.0", + "version": "3.1.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "dojo_cli", - "version": "3.1.0", + "version": "3.1.2", "license": "AGPLv3", "dependencies": { "ajv": "^8.12.0", @@ -22,7 +22,7 @@ "inquirer": "^8.2.6", "json5": "^2.2.3", "jsonwebtoken": "^8.5.1", - "openurl": "^1.1.1", + "open": "^8.4.2", "ora": "^5.4.1", "tar-stream": "^3.1.6", "winston": "^3.11.0", @@ -36,7 +36,6 @@ "@types/inquirer": "^8.2.10", "@types/jsonwebtoken": "^8.5.9", "@types/node": "^18.19.2", - "@types/openurl": "^1.0.3", "@types/tar-stream": "^3.1.3", "@typescript-eslint/eslint-plugin": "^6.13.2", "@typescript-eslint/parser": "^6.13.2", @@ -857,15 +856,6 @@ "undici-types": "~5.26.4" } }, - "node_modules/@types/openurl": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@types/openurl/-/openurl-1.0.3.tgz", - "integrity": "sha512-rdWpxNve8iUBizep3BwjGzcdfk2XeXeeFiMwIgLN6dAKxCusfFC6H9XVvfPeNObRFpSgqI+HVmoG7UOB9HEnBQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@types/semver": { "version": "7.5.6", "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz", @@ -1719,6 +1709,14 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "engines": { + "node": ">=8" + } + }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -2799,7 +2797,6 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true, "bin": { "is-docker": "cli.js" }, @@ -2901,7 +2898,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, "dependencies": { "is-docker": "^2.0.0" }, @@ -3455,10 +3451,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/openurl": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/openurl/-/openurl-1.1.1.tgz", - "integrity": "sha512-d/gTkTb1i1GKz5k3XE3XFV/PxQ1k45zDqGP2OA7YhgsaLoqm6qRvARAZOFer1fcXritWlGBRCu/UgeS4HAnXAA==" + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/optionator": { "version": "0.9.3", diff --git a/NodeApp/package.json b/NodeApp/package.json index d98d45ada9f8d1e639e47080cb44cc2466294190..1b72e69833e4ed195b6c76fc52eb8c798cb2f0f7 100644 --- a/NodeApp/package.json +++ b/NodeApp/package.json @@ -1,7 +1,7 @@ { "name" : "dojo_cli", "description" : "CLI of the Dojo project", - "version" : "3.1.1", + "version" : "3.1.2", "license" : "AGPLv3", "author" : "Michaƫl Minelli <dojo@minelli.me>", "main" : "dist/app.js", @@ -46,7 +46,7 @@ "inquirer" : "^8.2.6", "json5" : "^2.2.3", "jsonwebtoken" : "^8.5.1", - "openurl" : "^1.1.1", + "open" : "^8.4.2", "ora" : "^5.4.1", "tar-stream" : "^3.1.6", "winston" : "^3.11.0", @@ -57,7 +57,6 @@ "@types/inquirer" : "^8.2.10", "@types/jsonwebtoken" : "^8.5.9", "@types/node" : "^18.19.2", - "@types/openurl" : "^1.0.3", "@types/tar-stream" : "^3.1.3", "@typescript-eslint/eslint-plugin": "^6.13.2", "@typescript-eslint/parser" : "^6.13.2", diff --git a/NodeApp/src/managers/SessionManager.ts b/NodeApp/src/managers/SessionManager.ts index 9bbd640f523b04e530b5fcaadf591ee2b208e6e0..18f91796c6bf0075f4d5567af3ad4d16e714d924 100644 --- a/NodeApp/src/managers/SessionManager.ts +++ b/NodeApp/src/managers/SessionManager.ts @@ -12,7 +12,6 @@ import Config from '../config/Config'; import ClientsSharedConfig from '../sharedByClients/config/ClientsSharedConfig'; import DojoGitlabCredentials from '../sharedByClients/types/Dojo/DojoGitlabCredentials'; import * as http from 'http'; -import * as openurl from 'openurl'; import EventEmitter from 'events'; import SharedConfig from '../shared/config/SharedConfig'; import chalk from 'chalk'; @@ -20,6 +19,7 @@ import inquirer from 'inquirer'; import SharedGitlabManager from '../shared/managers/SharedGitlabManager'; import GitlabManager from './GitlabManager'; import GitlabToken from '../shared/types/Gitlab/GitlabToken'; +import open from 'open'; class LoginServer { @@ -141,6 +141,11 @@ class SessionManager { private getGitlabCodeFromGraphicEnvironment(): Promise<string> { return new Promise<string>((resolve, reject) => { + ora({ + text : 'GUI mode (for headless mode, use the --cli option)', + indent: 4 + }).start().info(); + let currentSpinner: ora.Ora = ora({ text : 'Starting login server', indent: 4 @@ -150,26 +155,10 @@ class SessionManager { loginServer.events.on('started', () => { currentSpinner.succeed('Login server started'); currentSpinner = ora({ - text : 'Waiting for user to authorize the application in his web browser', + text : `Waiting for user to authorize the application in his web browser. If the browser does not open automatically, please go to : ${ Config.login.gitlab.url.code }`, indent: 4 }).start(); - openurl.open(Config.login.gitlab.url.code, (error) => { - if ( error ) { - currentSpinner.warn('Error while opening the web browser. Attempting the login in CLI only mode (headless mode).'); - currentSpinner = ora({ - text : 'Stopping login server', - indent: 4 - }).start(); - loginServer.events.on('stopped', () => { - try { - resolve(this.getGitlabCodeFromHeadlessEnvironment()); - } catch ( error ) { - reject(error); - } - }); - loginServer.stop(); - } - }); + open(Config.login.gitlab.url.code).then(); }); loginServer.events.on('error', (error: string) => { currentSpinner.fail(`Login server error: ${ error }`);