xref: /freebsd/stand/lua/color.lua (revision b5746545)
1--
2-- Copyright (c) 2015 Pedro Souza <pedrosouza@freebsd.org>
3-- All rights reserved.
4--
5-- Redistribution and use in source and binary forms, with or without
6-- modification, are permitted provided that the following conditions
7-- are met:
8-- 1. Redistributions of source code must retain the above copyright
9--    notice, this list of conditions and the following disclaimer.
10-- 2. Redistributions in binary form must reproduce the above copyright
11--    notice, this list of conditions and the following disclaimer in the
12--    documentation and/or other materials provided with the distribution.
13--
14-- THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15-- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16-- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17-- ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18-- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19-- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20-- OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21-- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22-- LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23-- OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24-- SUCH DAMAGE.
25--
26-- $FreeBSD$
27--
28
29local core = require("core");
30
31local color = {};
32
33-- Module exports
34color.BLACK   = 0;
35color.RED     = 1;
36color.GREEN   = 2;
37color.YELLOW  = 3;
38color.BLUE    = 4;
39color.MAGENTA = 5;
40color.CYAN    = 6;
41color.WHITE   = 7;
42
43color.DEFAULT = 0;
44color.BRIGHT  = 1;
45color.DIM     = 2;
46
47function color.isEnabled()
48	local c = loader.getenv("loader_color");
49	if (c ~= nil) then
50		if (c:lower() == "no") or (c == "0") then
51			return false;
52		end
53	end
54	return (not core.isSerialBoot());
55end
56
57color.disabled = (not color.isEnabled());
58
59function color.escapef(c)
60	if (color.disabled) then
61		return c;
62	end
63	return "\027[3" .. c .. "m";
64end
65
66function color.escapeb(c)
67	if (color.disabled) then
68		return c;
69	end
70	return "\027[4" .. c .. "m";
71end
72
73function color.escape(fg, bg, att)
74	if (color.disabled) then
75		return "";
76	end
77	if (not att) then
78		att = ""
79	else
80		att = att .. ";";
81	end
82	return "\027[" .. att .. "3" .. fg .. ";4" .. bg .. "m";
83end
84
85function color.default()
86	if (color.disabled) then
87		return "";
88	end
89	return "\027[0;37;40m";
90end
91
92function color.highlight(str)
93	if (color.disabled) then
94		return str;
95	end
96	return "\027[1m" .. str .. "\027[0m";
97end
98
99return color;
100