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