menu.lua: Give names to menu entries

Make menu customizations easier by naming the entries and using the
names to build the table entries.

Reviewed by:	kevans
Approved by:	mav (mentor)
MFC after:	1 week
Sponsored by:	iXsystems, Inc.
Differential Revision:	https://reviews.freebsd.org/D24527
This commit is contained in:
Ryan Moeller 2020-04-22 17:04:31 +00:00
parent 841d3cc068
commit d2187b39cf

View File

@ -212,30 +212,50 @@ menu.boot_options = {
menu.welcome = {
entries = function()
local menu_entries = menu.welcome.all_entries
-- Swap the first two menu items on single user boot
local multi_user = menu_entries.multi_user
local single_user = menu_entries.single_user
local boot_entry_1, boot_entry_2
if core.isSingleUserBoot() then
-- We'll cache the swapped menu, for performance
if menu.welcome.swapped_menu ~= nil then
return menu.welcome.swapped_menu
-- Swap the first two menu items on single user boot.
-- We'll cache the alternate entries for performance.
local alts = menu_entries.alts
if alts == nil then
single_user = core.deepCopyTable(single_user)
multi_user = core.deepCopyTable(multi_user)
single_user.name = single_user.alternate_name
multi_user.name = multi_user.alternate_name
menu_entries.alts = {
single_user = single_user,
multi_user = multi_user,
}
else
single_user = alts.single_user
multi_user = alts.multi_user
end
-- Shallow copy the table
menu_entries = core.deepCopyTable(menu_entries)
-- Swap the first two menu entries
menu_entries[1], menu_entries[2] =
menu_entries[2], menu_entries[1]
-- Then set their names to their alternate names
menu_entries[1].name, menu_entries[2].name =
menu_entries[1].alternate_name,
menu_entries[2].alternate_name
menu.welcome.swapped_menu = menu_entries
boot_entry_1, boot_entry_2 = single_user, multi_user
else
boot_entry_1, boot_entry_2 = multi_user, single_user
end
return menu_entries
return {
boot_entry_1,
boot_entry_2,
menu_entries.prompt,
menu_entries.reboot,
{
entry_type = core.MENU_SEPARATOR,
},
{
entry_type = core.MENU_SEPARATOR,
name = "Options:",
},
menu_entries.kernel_options,
menu_entries.boot_options,
menu_entries.boot_envs,
menu_entries.chainload,
}
end,
all_entries = {
-- boot multi user
{
multi_user = {
entry_type = core.MENU_ENTRY,
name = color.highlight("B") .. "oot Multi user " ..
color.highlight("[Enter]"),
@ -248,8 +268,7 @@ menu.welcome = {
end,
alias = {"b", "B"},
},
-- boot single user
{
single_user = {
entry_type = core.MENU_ENTRY,
name = "Boot " .. color.highlight("S") .. "ingle user",
-- Not a standard menu entry function!
@ -261,8 +280,7 @@ menu.welcome = {
end,
alias = {"s", "S"},
},
-- escape to interpreter
{
prompt = {
entry_type = core.MENU_RETURN,
name = color.highlight("Esc") .. "ape to loader prompt",
func = function()
@ -270,8 +288,7 @@ menu.welcome = {
end,
alias = {core.KEYSTR_ESCAPE},
},
-- reboot
{
reboot = {
entry_type = core.MENU_ENTRY,
name = color.highlight("R") .. "eboot",
func = function()
@ -279,15 +296,7 @@ menu.welcome = {
end,
alias = {"r", "R"},
},
{
entry_type = core.MENU_SEPARATOR,
},
{
entry_type = core.MENU_SEPARATOR,
name = "Options:",
},
-- kernel options
{
kernel_options = {
entry_type = core.MENU_CAROUSEL_ENTRY,
carousel_id = "kernel",
items = core.kernelList,
@ -319,15 +328,13 @@ menu.welcome = {
end,
alias = {"k", "K"},
},
-- boot options
{
boot_options = {
entry_type = core.MENU_SUBMENU,
name = "Boot " .. color.highlight("O") .. "ptions",
submenu = menu.boot_options,
alias = {"o", "O"},
},
-- boot environments
{
boot_envs = {
entry_type = core.MENU_SUBMENU,
visible = function()
return core.isZFSBoot() and
@ -337,8 +344,7 @@ menu.welcome = {
submenu = menu.boot_environments,
alias = {"e", "E"},
},
-- chainload
{
chainload = {
entry_type = core.MENU_ENTRY,
name = function()
return 'Chain' .. color.highlight("L") ..