From 7150314eaefb50e8a91d3c60b044807a28dd9c41 Mon Sep 17 00:00:00 2001 From: Kyle Evans Date: Sat, 9 Jun 2018 14:26:30 +0000 Subject: [PATCH] lualoader: Add hook.lua(8) to tree Reviewed by: rpokala (w/ "All Rights Reserved" previously added) Differential Revision: https://reviews.freebsd.org/D14815 --- stand/lua/hook.lua.8 | 94 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 stand/lua/hook.lua.8 diff --git a/stand/lua/hook.lua.8 b/stand/lua/hook.lua.8 new file mode 100644 index 000000000000..1bc9ca96b509 --- /dev/null +++ b/stand/lua/hook.lua.8 @@ -0,0 +1,94 @@ +.\" +.\" SPDX-License-Identifier: BSD-2-Clause-FreeBSD +.\" +.\" Copyright (c) 2018 Kyle Evans +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" $FreeBSD$ +.\" +.Dd June 9, 2018 +.Dt HOOK.LUA 8 +.Os +.Sh NAME +.Nm hook.lua +.Nd FreeBSD hook module +.Sh DESCRIPTION +.Nm +contains functionality for defining hook types and attaching hooks. +Hooks are functions used to attach custom behaviors at pre-defined points in +loader execution. +These pre-defined points are what we refer to as +.Dq hook types . +.Pp +Before using the functionality provided by +.Nm , +it must be included with a statement such as the following: +.Pp +.Dl local hook = require("hook") +.Ss Exported functions +The following functions are exported from +.Nm : +.Bl -tag -width hook.registerType -offset indent +.It Fn hook.registerType hooktype +Adds +.Ev hooktype +as a recognized hook type. +This allows functions to be added to run when hooks of this type are invoked +using +.Fn hook.runAll hooktype . +.It Fn hook.register hooktype hookfunc +Register +.Ev hookfunc +to be run when hooks of type +.Ev hooktype +are invoked. +.It Fn hook.runAll hooktype +Invoke all hooks registered for type +.Ev hooktype . +Hooks are invoked in the order in which they are registered. +.El +.Ss Hook Naming Guidelines +Hook names should consist of the name of the module they are defined in, as well +as a verb describing when the hook is executed, separated by a period. +For example, +.Dq config.reloaded +is defined in the +.Xr config.lua 8 +module and run when the configuration is reloaded. +.Sh EXAMPLES +To register a hook to be run when configuration is reloaded: +.Pp +.Bd -literal -offset indent -compact +local hook = require("hook") + +local function configuration_was_reloaded() + print("Configuration was reloaded!") +end + +hook.register("config.reloaded", configuration_was_reloaded) +.Ed +.Sh AUTHORS +The +.Nm +file was originally written by +.An Kyle Evans Aq Mt kevans@FreeBSD.org .