1 | const cli = require('cli-ux').default
|
2 | const chalk = require('chalk')
|
3 | const isDockerContainer = require('is-docker')
|
4 |
|
5 | function unableToOpenBrowserMessage(url, err) {
|
6 |
|
7 | console.log('---------------------------')
|
8 | const errMsg = err ? `\n${err.message}` : ''
|
9 | const msg = `Error: Unable to open browser automatically${errMsg}\n`
|
10 | console.log(`${chalk.redBright(msg)}`)
|
11 | console.log(chalk.greenBright('Please open your browser & open the URL below to login:'))
|
12 | console.log(chalk.whiteBright(url))
|
13 | console.log('---------------------------')
|
14 | return Promise.resolve()
|
15 | }
|
16 |
|
17 | async function openBrowser(url) {
|
18 | let browser = process.env.BROWSER
|
19 | if (browser === 'none' || isDockerContainer()) {
|
20 | return unableToOpenBrowserMessage(url)
|
21 | }
|
22 | if (process.platform === 'darwin' && browser === 'open') {
|
23 | browser = undefined
|
24 | }
|
25 |
|
26 | await cli.open(url).catch(err => {
|
27 | unableToOpenBrowserMessage(url, err)
|
28 | })
|
29 | }
|
30 |
|
31 | module.exports = openBrowser
|