]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
Allow colored output
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 29 Dec 2015 17:35:37 +0000 (17:35 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 29 Dec 2015 17:35:37 +0000 (17:35 +0000)
src/rspamadm/ansicolors.lua.in [new file with mode: 0644]
src/rspamadm/confighelp.lua

diff --git a/src/rspamadm/ansicolors.lua.in b/src/rspamadm/ansicolors.lua.in
new file mode 100644 (file)
index 0000000..1e9ca20
--- /dev/null
@@ -0,0 +1,56 @@
+local colormt = {}
+local ansicolors = {}
+
+function colormt:__tostring()
+  return self.value
+end
+
+function colormt:__concat(other)
+  return tostring(self) .. tostring(other)
+end
+
+function colormt:__call(s)
+  return self .. s .. _M.reset
+end
+
+colormt.__metatable = {}
+
+local function makecolor(value)
+  return setmetatable({ value = string.char(27) .. '[' .. tostring(value) .. 'm' }, colormt)
+end
+
+local colors = {
+  -- attributes
+  reset = 0,
+  clear = 0,
+  bright = 1,
+  dim = 2,
+  underscore = 4,
+  blink = 5,
+  reverse = 7,
+  hidden = 8,
+
+  -- foreground
+  black = 30,
+  red = 31,
+  green = 32,
+  yellow = 33,
+  blue = 34,
+  magenta = 35,
+  cyan = 36,
+  white = 37,
+
+  -- background
+  onblack = 40,
+  onred = 41,
+  ongreen = 42,
+  onyellow = 43,
+  onblue = 44,
+  onmagenta = 45,
+  oncyan = 46,
+  onwhite = 47,
+}
+
+for c, v in pairs(colors) do
+  ansicolors[c] = makecolor(v)
+end
index 34f323f289b815a7ded38ea63bca0ac6f34e607f..28c0e289774918083b6a45a36af3ffefa67560ad 100644 (file)
@@ -7,9 +7,19 @@ local known_attrs = {
 }
 
 --.USE "getopt"
+--.USE "ansicolors"
+
+
+local function maybe_print_color(key)
+  if opts['color'] then
+    return ansicolors.white .. key .. ansicolors.reset
+  else
+    return key
+  end
+end
 
 local function print_help(key, value, tabs)
-  print(string.format('%sOption: %s', tabs, key))
+  print(string.format('%sConfiguration element: %s', tabs, maybe_print_color(key)))
 
   if not opts['short'] then
     if value['data'] then
@@ -23,7 +33,6 @@ local function print_help(key, value, tabs)
       print(string.format('%s\tExample: %s', tabs, value['example']))
     end
   end
-  print('')
 
   for k, v in pairs(value) do
     if not known_attrs[k] then
@@ -37,6 +46,7 @@ return function(args, res)
   opts = getopt(args, '')
 
   for k,v in pairs(res) do
-    print_help(k, v, '');
+    print_help(k, v, '')
+    print('')
   end
 end