]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - stand/lua/color.lua
lualoader: Drop excessive parenthesizing
[FreeBSD/FreeBSD.git] / stand / lua / color.lua
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
29 local core = require("core")
30
31 local color = {}
32
33 -- Module exports
34 color.BLACK   = 0
35 color.RED     = 1
36 color.GREEN   = 2
37 color.YELLOW  = 3
38 color.BLUE    = 4
39 color.MAGENTA = 5
40 color.CYAN    = 6
41 color.WHITE   = 7
42
43 color.DEFAULT = 0
44 color.BRIGHT  = 1
45 color.DIM     = 2
46
47 function 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()
55 end
56
57 color.disabled = not color.isEnabled()
58
59 function color.escapef(c)
60         if color.disabled then
61                 return c
62         end
63         return "\027[3" .. c .. "m"
64 end
65
66 function color.escapeb(c)
67         if color.disabled then
68                 return c
69         end
70         return "\027[4" .. c .. "m"
71 end
72
73 function 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"
83 end
84
85 function color.default()
86         if color.disabled then
87                 return ""
88         end
89         return "\027[0;37;40m"
90 end
91
92 function color.highlight(str)
93         if color.disabled then
94                 return str
95         end
96         return "\027[1m" .. str .. "\027[0m"
97 end
98
99 return color