From nobody Tue Jan 24 22:09:45 2023 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4P1h3F3dZtz3bdRS; Tue, 24 Jan 2023 22:09:45 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4P1h3F2LPqz4Gwm; Tue, 24 Jan 2023 22:09:45 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1674598185; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=DvwWsB2InK1QbEFt3qN1dbSjeqfZmZDIM2fBuYjkGb0=; b=Bol0gwtTic1CHM9mmUJgdsgkinIufqQ1YCZKdp0wxnPUPPfLNVok3skJJ2e/sEUCSbLxva SvfWT4u/1p5t6TOt9byFyy4jo0vZ6QhBDUSDuRW7N14OQNJxOEtywpXsoJpCl5e8oJsJTZ U22ynJ46VQvR59mVLK3Lk/ld2l27ZbtlTqFqSXPk3vGR+6Q0nkUnVzkblcOXaHV614Ayv9 F/DPS+Ek/7hNycdmQfGNuu5l+41UAP1zsfZLtfRgfpI+SUrRLYE946IARc9UZnnh62lqzZ 1Mcqo8Bgrze+dUIgAJ66wQbiOkqtLtgOoxhR6nr4+ZATsOvJuIkmQR2KsRJthA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1674598185; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=DvwWsB2InK1QbEFt3qN1dbSjeqfZmZDIM2fBuYjkGb0=; b=Yb9qZBiY+P89r0gQxSi1nbc/lWDCDwqqXppDHn2kWg8n1KIWg88xn9yUUuw+qCOFK/Cqln wlzrTuf42HtJ1jmpu6FFuS9jhdp05b6Ib7HzISPvCx4eyiowFWINUeFZ9PwQfoAndvVdJr d2TO04AfF6JidsA9kgkTHm9Wqoj3m0Z1jyiInYXi12s/U4SVn39V3LpVrEbYQN0V60KLXk 0Xy/3B5nkAarihRoXIPjAdK5Y3g+Y3r4JMuKa2L4Gx+tJ6MyYiluwXZ0o5KKoXHGcJ/nzT LxgUSieGwWNK2ZLhAoZgdO+wI1PcS3aYvY7s9n3HidDCA02xx/s4pqB1el8umg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1674598185; a=rsa-sha256; cv=none; b=Z1k+FuPXrxK60SvLXxDjS9GOcf7xWIKSk16iehlnTJsC75BJGw3fjUoKv2ZUTQIhkZnQfD HWnoMftEiLNJJpZJZx7YrFRtP4sI1bN/AQL8fXws50Avsr4mvT34m2Sw+NIxXa+iwrhS4d ihR9GVxsAtLfZcZ+GnYaNICbafQLyyp8AI/BPnpuf004FHJAM+s/MfhJy4pEbYQIcmQpHW WZ859GWQi1OeOsWzGgljUT8iLMrDnAocwZyhLrW3+luaMyfNZRblvGWPUT8XUXcBo95avI AgttShE6VqGBlLo18S52S1LuvuSy5uhjG35/mnP9Dp9Smzk948ra8gRpbLweYg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4P1h3F1SCBzQNQ; Tue, 24 Jan 2023 22:09:45 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 30OM9jJh070719; Tue, 24 Jan 2023 22:09:45 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 30OM9j31070718; Tue, 24 Jan 2023 22:09:45 GMT (envelope-from git) Date: Tue, 24 Jan 2023 22:09:45 GMT Message-Id: <202301242209.30OM9j31070718@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Warner Losh Subject: git: 0f4dfa3fd45d - stable/13 - loader: create a generic vendor sub-menu place holder List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: imp X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 0f4dfa3fd45d3e3a01e52ccae2aac989d1a1696f Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=0f4dfa3fd45d3e3a01e52ccae2aac989d1a1696f commit 0f4dfa3fd45d3e3a01e52ccae2aac989d1a1696f Author: Warner Losh AuthorDate: 2021-03-31 00:35:29 +0000 Commit: Warner Losh CommitDate: 2023-01-24 21:49:16 +0000 loader: create a generic vendor sub-menu place holder Add a dummy vendor menu entry on the main welcome menu. Vendors can override this in their local.lua file to create whatever sub-menu they need for their products. Also fix the adding a 'welcome' entry as well based on a suggestion from Kyle. Silly option menu code also from Kyle. They seem to work for me, but any transcription error is likely mine. Reviewed by: kevans@ (the vendor stuff) (cherry picked from commit e7ccd5b4187d15cd91697f1f4e12cf40e3ce86c3) --- stand/lua/menu.lua | 5 ++++ stand/lua/menu.lua.8 | 83 +++++++++++++++++++++++++++++++++++++++++++++------- 2 files changed, 78 insertions(+), 10 deletions(-) diff --git a/stand/lua/menu.lua b/stand/lua/menu.lua index fe6f7da64283..0db52d7c3920 100644 --- a/stand/lua/menu.lua +++ b/stand/lua/menu.lua @@ -257,6 +257,7 @@ menu.welcome = { menu_entries.zpool_checkpoints, menu_entries.boot_envs, menu_entries.chainload, + menu_entries.vendor, } end, all_entries = { @@ -400,6 +401,10 @@ menu.welcome = { end, alias = {"l", "L"}, }, + vendor = { + entry_type = core.MENU_ENTRY, + visible = false, + }, }, } diff --git a/stand/lua/menu.lua.8 b/stand/lua/menu.lua.8 index 4358981d4755..82863791903d 100644 --- a/stand/lua/menu.lua.8 +++ b/stand/lua/menu.lua.8 @@ -26,7 +26,7 @@ .\" .\" $FreeBSD$ .\" -.Dd February 23, 2018 +.Dd March 31, 2021 .Dt MENU.LUA 8 .Os .Sh NAME @@ -204,19 +204,82 @@ To add another option to the welcome menu: local core = require("core") local menu = require("menu") +local my_entry = { + entry_type = core.MENU_ENTRY, + name = "Fancy Boot", + func = core.boot, +}, + +local stock_entries = menu.welcome.entries +function menu.welcome.entries() + local ents = stock_entries() + ents[#ents + 1] = my_entry + return ents +end +.Ed +.Pp +To create a vendor submenu or other vendor menu option, +override +.Ic menu.welcome.all_entires.vendor +like so: +.Pp +.Bd -literal -offset indent -compact +local core = require("core") +local menu = require("menu") + +-- Fill in with vendor specific entries +local vendor_options = { + entries = { + ... + }, +} + local welcome_entries = menu.welcome.all_entries -welcome_entries[#welcome_entries + 1] = { - entry_type = core.MENU_CAROUSEL_ENTRY, - carousel_id = "unique_boot_entry_name", - items = {"NO", "YES"}, - name = function(_, choice, _) - return "Option: " .. choice +welcome_entries.vendor = { + entry_type = core.MENU_SUBMENU, + name = color.highlight("V") .. "endor Options", + submenu = vendor_options, + alias = {"v", "V"}, +} +.Ed +In the above example, +.Ic vendor_options +is a local variable that defines the vendor submenu. +.Pp +To add an additional option, change the +.Ic menu.boot_options.entries +array. +The following illustrates this concept: +.Pp +.Bd -literal -offset indent -compact +-- This is a silly example that rotates local_option through the values +-- 0 to 4. local_option would still need to be used elsewhere. +local local_option = 0 + +-- The `entries` of a menu may either be a table or a function. In this +-- example we're augmenting a menu that just has a static table, but if we +-- wanted to be more robust then we would need to instead check the type +-- of `stock_options` here to determine our next move. +-- +-- If `entries` is a table, then the stock menu system won't be changing it +-- so we can just add our menu option as we do below. +-- +-- If `entries` is a function, then we would need to provide a new function to +-- replace `entries` that does a core.deepCopyTable() of the result and adds +-- the below item to it. The deep copy is necessary to avoid duplicating our +-- new menu item and allowing the menu to alter its behavior however it pleases. +local stock_options = menu.boot_options.entries +stock_options[#stock_options + 1] = { + entry_type = core.MENU_ENTRY, + name = function() + return color.highlight('L') .. + "ocal Option : " .. local_option end, - func = function(_, _, _) - loader.setenv("some_envvar", "some_value") + func = function() + local_option = (local_option + 1) % 5 end, + alias= {"l", "L"} } -.Ed .Sh SEE ALSO .Xr loader.conf 5 , .Xr core.lua 8 ,