wpkg --add-hooks

Options Comments
--admindir Define the administration directory, where the database of the installed packages resides.
--quiet Request for warning messages to not be displayed.
--root Define the installation root path.
--verbose Display log information of level INFO.

The --add-hooks command lets you add one or more global hooks to a target. The command expect a list of filenames: the actual hooks.

The name of a hook must be a unique name followed by the name of the hook function:

<unique name>_<function>[.sh|.bat]

The name can be preceeded by a path if not in the current working directory.

<unique name> is often the name of the package dynamically attaching a hook to the environment, however, packages are expected to manage their hooks from within their package environment. Any name, as long as it can be made unique, will do though.

<function> is one of the following:

  • validate -- used for validation
  • preinst -- run before the package preinst script
  • postinst -- run after the package postinst script
  • prerm -- run before the package prerm script
  • postrm -- run after the package postrm script

These files are saved in the database installation directory (see --admindir) under the core special package in the hooks directory with the added prefix "core_". For instance, let's say you have a tool adding the script named: foo_postrm.sh to your installation system. It will be saved under the installation directory as (assuming the default for the installation directory):

/var/lib/wpkg/core/hooks/core_foo_postrm.sh

To remove a hook, use wpkg --remove-hooks with the name of the hook you want to remove without any path. In our example, the name would be foo_postrm.sh:

wpkg --remove-hooks foo_postrm.sh

Note that packages can also add such hooks along their control file, in that case they  automatically get installed by wpkg when unpacking that package and removed when a package files get deleted. This is the best way to manage hooks because trying to run wpkg from a script (i.e. preinst or postinst) fails since the database is still locked at that point. Note that hooks found in a package WPKG directory must use the following naming convention:

<package name>_<function>[.sh|.bat]

The installation of package hooks does not include the "core_" prefix.

To see the list of currently installed hooks, use the --list-hooks command.