Browse Source

[Minor] Disable colors if not a tty

tags/1.7.0
Vsevolod Stakhov 6 years ago
parent
commit
9e1d92559f
2 changed files with 32 additions and 2 deletions
  1. 12
    2
      lualib/rspamadm/ansicolors.lua
  2. 20
    0
      src/lua/lua_util.c

+ 12
- 2
lualib/rspamadm/ansicolors.lua View File

@@ -1,6 +1,9 @@
local colormt = {}
local ansicolors = {}

local rspamd_util = require "rspamd_util"
local isatty = rspamd_util.isatty()

function colormt:__tostring()
return self.value
end
@@ -14,9 +17,16 @@ function colormt:__call(s)
end

colormt.__metatable = {}

local function makecolor(value)
return setmetatable({ value = string.char(27) .. '[' .. tostring(value) .. 'm' }, colormt)
if isatty then
return setmetatable({
value = string.char(27) .. '[' .. tostring(value) .. 'm'
}, colormt)
else
return setmetatable({
value = ''
}, colormt)
end
end

local colors = {

+ 20
- 0
src/lua/lua_util.c View File

@@ -411,6 +411,12 @@ LUA_FUNCTION_DEF (util, mkdir);
*/
LUA_FUNCTION_DEF (util, umask);

/***
* @function util.isatty()
* Returns if stdout is a tty
* @return {boolean} true in case of output being tty
*/
LUA_FUNCTION_DEF (util, isatty);

/***
* @function util.pack(fmt, ...)
@@ -559,6 +565,7 @@ static const struct luaL_reg utillib_f[] = {
LUA_INTERFACE_DEF (util, file_exists),
LUA_INTERFACE_DEF (util, mkdir),
LUA_INTERFACE_DEF (util, umask),
LUA_INTERFACE_DEF (util, isatty),
LUA_INTERFACE_DEF (util, get_hostname),
LUA_INTERFACE_DEF (util, pack),
LUA_INTERFACE_DEF (util, unpack),
@@ -2253,6 +2260,19 @@ lua_util_umask (lua_State *L)
return 1;
}

static gint
lua_util_isatty (lua_State *L)
{
if (isatty (STDOUT_FILENO)) {
lua_pushboolean (L, true);
}
else {
lua_pushboolean (L, false);
}

return 1;
}

/* Backport from Lua 5.3 */

/******************************************************************************

Loading…
Cancel
Save