xref: /freebsd/stand/lua/color.lua (revision 088b4f5f323e73e5eb54b0e409b064ff5d46d221)
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 color = {};
30
31local core = require("core");
32
33color.BLACK   = 0;
34color.RED     = 1;
35color.GREEN   = 2;
36color.YELLOW  = 3;
37color.BLUE    = 4;
38color.MAGENTA = 5;
39color.CYAN    = 6;
40color.WHITE   = 7;
41
42color.DEFAULT = 0;
43color.BRIGHT  = 1;
44color.DIM     = 2;
45
46function color.isEnabled()
47	local c = loader.getenv("loader_color");
48	if c ~= nil then
49		if c:lower() == "no"  or c == "0" then
50			return false;
51		end
52	end
53	return not core.bootserial();
54end
55
56color.disabled = not color.isEnabled();
57
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