xref: /freebsd/stand/lua/color.lua (revision aedd6be5c7c3096828fafa6c1528f3966b9e3aa5)
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