tty: add color support for more terminals

This adds support for a couple more terminals.

PR-URL: https://github.com/nodejs/node/pull/19730
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
This commit is contained in:
Ruben Bridgewater 2018-04-01 11:37:13 +02:00
parent 1b715221b9
commit ceaeee0120
No known key found for this signature in database
GPG Key ID: F07496B3EB3C1762

View File

@ -31,6 +31,41 @@ const COLORS_16 = 4;
const COLORS_256 = 8;
const COLORS_16m = 24;
// Some entries were taken from `dircolors`
// (https://linux.die.net/man/1/dircolors). The corresponding terminals might
// support more than 16 colors, but this was not tested for.
//
// Copyright (C) 1996-2016 Free Software Foundation, Inc. Copying and
// distribution of this file, with or without modification, are permitted
// provided the copyright notice and this notice are preserved.
const TERM_ENVS = [
'Eterm',
'cons25',
'console',
'cygwin',
'dtterm',
'gnome',
'hurd',
'jfbterm',
'konsole',
'kterm',
'mlterm',
'putty',
'st',
'terminator'
];
const TERM_ENVS_REG_EXP = [
/ansi/,
/color/,
/linux/,
/^con[0-9]*x[0-9]/,
/^rxvt/,
/^screen/,
/^xterm/,
/^vt100/
];
// The `getColorDepth` API got inspired by multiple sources such as
// https://github.com/chalk/supports-color,
// https://github.com/isaacs/color-support.
@ -89,8 +124,19 @@ function getColorDepth(env = process.env) {
if (env.TERM) {
if (/^xterm-256/.test(env.TERM))
return COLORS_256;
if (/^screen|^xterm|^vt100|color|ansi|cygwin|linux/i.test(env.TERM))
return COLORS_16;
const termEnv = env.TERM.toLowerCase();
for (const term of TERM_ENVS) {
if (termEnv === term) {
return COLORS_16;
}
}
for (const term of TERM_ENVS_REG_EXP) {
if (term.test(termEnv)) {
return COLORS_16;
}
}
}
if (env.COLORTERM)