History log of /freebsd-current/stand/lua/cli.lua
Revision Date Author Comments
# 8b9178cd 29-Feb-2024 Warner Losh <imp@FreeBSD.org>

loader/lua: Remove pager shim

Just after 12.2 and before the stable/13 branch, kevans added lpager.c
to provide a pager interface for commands written in lua. It was merged
into 12.3. Now that 12.2 is long since EOL, we can remove the pager shim
here. Nobody needs that old loader + new lua scripts. Plus only one
command is affected.

Sponsored by: Netflix
Reviewed by: kevans
Differential Revision: https://reviews.freebsd.org/D44142


# 9636a145 16-Aug-2023 Warner Losh <imp@FreeBSD.org>

Remove $FreeBSD$: two-line lua tag

Remove /^--\n--\s*\$FreeBSD\$.*$\n/


# 4d846d26 10-May-2023 Warner Losh <imp@FreeBSD.org>

spdx: The BSD-2-Clause-FreeBSD identifier is obsolete, drop -FreeBSD

The SPDX folks have obsoleted the BSD-2-Clause-FreeBSD identifier. Catch
up to that fact and revert to their recommended match of BSD-2-Clause.

Discussed with: pfg
MFC After: 3 days
Sponsored by: Netflix


# 07c4b78d 28-Jul-2021 Warner Losh <imp@FreeBSD.org>

lua loader: Add disable-device to disable a device.

disable-device fooX will set hint.foo.X.disabled=1 as a way to easily
disable a device attaching during boot.

Reviewed by: tsoome
Sponsored by: Netflix
Differential Revision: https://reviews.freebsd.org/D31297


# 29842cb3 17-Dec-2020 Kyle Evans <kevans@FreeBSD.org>

lualoader: fix lua-lint run

luacheck rightfully complains that i is unused in the show-module-options
loop at the end (it was used for some debugging in the process).

We've added a new pager module that's compiled in, so declare that as an
acceptable global.


# 7ed84fa1 17-Dec-2020 Kyle Evans <kevans@FreeBSD.org>

lualoader: cli: provide a show-module-options loader command

This effectively dumps everything lualoader knows about to the console using
the libsa pager; that particular lua interface was added in r368591.

A pager stub implementation has been added that just dumps the output as-is
as a compat shim for older loader binaries that do not have lpager. This
stub should be moved into a more appropriate .lua file if we add anything
else that needs the pager.


# 4634bb1f 11-Dec-2020 Kyle Evans <kevans@FreeBSD.org>

lualoader: provide module-manipulation commands

Specifically, we have:
- enable-module
- disable-module
- toggle-module

These can be used to add/remove modules to be loaded or force modules to be
loaded in spite of modules_blacklist. In the typical case, a user is
expected to use them to recover an issue happening due to a module directive
they've added to their loader.conf or because they discover that they've
under-specified what to load.

MFC after: 1 week


# 94510c29 01-Oct-2020 Kyle Evans <kevans@FreeBSD.org>

lualoader: clear up some luacheck warnings

- One (1) unused argument
- One (1) trailing whitespace
- Two (2) "non-standard global" (curenv, rewind)

tools/boot/lua-lint.sh is once again happy.


# 3fe0ac6a 30-Apr-2020 Kyle Evans <kevans@FreeBSD.org>

lualoader: config: improve readConfFiles, rename to readConf

The previous interface was pretty bad, and required the caller to get some
implementation details correct that it really shouldn't need to (e.g.
loader_conf_files handling) and pass in an empty table for it to use.

The new and much improved interface, readConf, is much less of a hack;
hiding these implementation details and just doing the right thing.
config.lua will now use it to process /boot/defaults/loader.conf and the
subsequent loader_conf_files from there, and read-conf will also use it.

This improvement submitted by Olivier (cited below), loader_conf_files
handling from the original patch was changed to just clobber it before
processing and not bother restoring it after the fact following r360505
where it's now guaranteed to evade the loader environment.

PR: 244640
Submitted by: Olivier Certner (olivier freebsd free fr>


# cc038071 27-Apr-2020 Kyle Evans <kevans@FreeBSD.org>

lualoader: cli: clobber loader_conf_files before proceeding

This makes sure that config.readConfFiles doesn't see a stale
loader_conf_files from before, in case the newly loaded file doesn't set it.

MFC after: 3 days


# e40d2a04 27-Apr-2020 Kyle Evans <kevans@FreeBSD.org>

lualoader: cli: add read-conf

This is a straightforward match to the command used by many in forthloader;
it uses the newly-exported config.readConfFiles() to make sure that any
loader_conf_files gets done as appropriate.

PR: 244640
Submitted by: Olivier Certner <olivier freebsd free fr>
MFC after: 3 days


# af876563 13-Sep-2019 Kyle Evans <kevans@FreeBSD.org>

lualoader: Add reload-conf loader command

This command will trigger a reload of the configuration from disk. This is
useful if you've changed currdev from recovery media to local disk as much
as I have over the past ~2 hours and are tired of the extra keystrokes.

This is really just a glorified shortcut, but reload-conf is likely easier
to remember for other people and does save some keystrokes when reloading
the configuration. It is also resilient to the underlying config method
changing interface, but this is unlikely to happen.

MFC after: 1 week


# 83f7a74c 01-Nov-2018 Kyle Evans <kevans@FreeBSD.org>

lualoader: Implement boot-conf

MFC after: 3 days


# 4b3c64f7 09-May-2018 Kyle Evans <kevans@FreeBSD.org>

Remove "All Rights Reserved" on files that I hold sole copyright on

See r333391 for more detail; in summary: it holds no weight and may be
removed.


# f6e00525 07-Mar-2018 Kyle Evans <kevans@FreeBSD.org>

lualoader: Return status in cli_execute_unparsed properly

cli_execute was changed to return the status, cascade that to
cli_execute_unparsed.

This fixes a lot of false "Failed to execute" errors following r330620; no
failures actually occurred, but [module]_error would've then promptly
executed (and also "failed")


# ca3b8c9f 07-Mar-2018 Kyle Evans <kevans@FreeBSD.org>

lualoader: Fix name, cli.execute_unparsed -> cli_execute_unparsed


# 697f127d 07-Mar-2018 Kyle Evans <kevans@FreeBSD.org>

lualoader: Expose loader.parse and add cli_execute_unparsed

This will be used for scenarios where the command to execute is coming in
via the environment (from, for example, loader.conf(5)) and is thus not
necessarily trusted.

cli_execute_unparsed will immediately be used for handling
module_{before,after,error} as well as menu_timeout_command. We still want
to offer these variables the ability to execute Lua-intercepted loader
commands, but we don't want them to be able to execute arbitrary Lua.

Reviewed by: imp
Differential Revision: https://reviews.freebsd.org/D14580


# c6d9f133 03-Mar-2018 Kyle Evans <kevans@FreeBSD.org>

lualoader: Return meaningful value in cli_execute

loader.command(...) will return whatever the executed function returns, so
follow suit and return whatever loader.command() returned or whatever the
Lua function returns.


# 22ae8ae1 24-Feb-2018 Kyle Evans <kevans@FreeBSD.org>

lualoader: Explain deviation from naming guidelines

cli_execute is likely the only exception that we should make, due to it
being a global. We don't really need other globals, so this won't really end
up an epidemic.


# 322a2ddd 24-Feb-2018 Kyle Evans <kevans@FreeBSD.org>

lualoader: Clean up naming conventions a little bit

We mostly use camel case for function names, but some local functions got
mixed in using internal underscores. Doubles down on camel case.


# 9ed6f9ef 22-Feb-2018 Kyle Evans <kevans@FreeBSD.org>

lualoader: Use "local function x()" instead of "local x = function()"

The latter is good, but the former is more elegant and clear about what 'x'
is. Adopt it, preferably only using the latter kind of notation where needed
as values for tables.


# 72e39d71 22-Feb-2018 Kyle Evans <kevans@FreeBSD.org>

Add SPDX tags to lua files


# e2df27e3 21-Feb-2018 Kyle Evans <kevans@FreeBSD.org>

lualoader: Address some 'luacheck' concerns

luacheck pointed out an assortment of issues, ranging from non-standard
globals being created as well as unused parameters, variables, and redundant
assignments.

Using '_' as a placeholder for values unused (whether it be parameters
unused or return values unused, assuming multiple return values) feels clean
and gets the point across, so I've adopted it. It also helps flag candidates
for cleanup later in some of the lambdas I've created, giving me an easy way
to re-evaluate later if we're still not using some of these features.


# 2e4dad82 21-Feb-2018 Kyle Evans <kevans@FreeBSD.org>

lualoader: Attach cli command functions to cli module

Instead of the global namespace, let's attach these to the cli module. Other
users, including the "local" module, can attach functions to the cli module
at will to add other cli commands and things will still Just Work.

This distills down the candidates for functions that may be invoked via the
cli to a minimal set (boot, autoboot, arguments), rather than any function
that happens to live in the global lua namespace.


# eca5ca66 21-Feb-2018 Kyle Evans <kevans@FreeBSD.org>

lualoader: Pull argument extraction for cli functions into cli.arguments

This will be the translation layer for varargs -> cmd_name, argv for cli
commands. We reserve the right to break exactly what the varargs inclulde,
but this gives us a stable way to pull the arguments out of varargs.


# 3e6c7d54 21-Feb-2018 Kyle Evans <kevans@FreeBSD.org>

lualoader: Unbreak 'boot [kernel]' by including config


# e37f4622 21-Feb-2018 Kyle Evans <kevans@FreeBSD.org>

lualoader: Split cli bits out into a cli module

This module will, in the not-so-distant future, grow functionality for
reducing boilerplate in functions that implement cli commands. It will
likely also house most in-tree cli commands.