[pacman-dev] [PATCH] alpm-hooks: add Description field

Allan McRae allan at archlinux.org
Mon Dec 14 10:26:05 UTC 2015


The "Description" field allows a hook to provide a some text for frontends
to use in describing what the hook is doing.  For example:

Description = updating info page directory

Signed-off-by: Allan McRae <allan at archlinux.org>
---

I'm not sure if "Description" is the best label, but could not think of
anything better.

 doc/alpm-hooks.5.txt | 5 +++++
 lib/libalpm/hook.c   | 8 +++++++-
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/doc/alpm-hooks.5.txt b/doc/alpm-hooks.5.txt
index 3729387..f33ff8c 100644
--- a/doc/alpm-hooks.5.txt
+++ b/doc/alpm-hooks.5.txt
@@ -19,6 +19,7 @@ Type = File|Package (Required)
 Target = <Path|PkgName> (Required, Repeatable)
 
 [Action] (Required)
+Description = ... (Optional)
 When = PreTransaction|PostTransaction (Required)
 Exec = <Command> (Required)
 Depends = <PkgName> (Optional)
@@ -63,6 +64,10 @@ defined the hook will run if the transaction matches *any* of the triggers.
 ACTIONS
 -------
 
+* Description =* ...::
+	An optional description that describes the action being taken by the
+	hook for use in front-end output.
+
 *Exec =* <command>::
 	Command to run.  Command arguments are split on whitespace.  Values
 	containing whitespace should be enclosed in quotes.  Required.
diff --git a/lib/libalpm/hook.c b/lib/libalpm/hook.c
index acd571d..7d0f4f2 100644
--- a/lib/libalpm/hook.c
+++ b/lib/libalpm/hook.c
@@ -48,6 +48,7 @@ struct _alpm_trigger_t {
 
 struct _alpm_hook_t {
 	char *name;
+	char *desc;
 	alpm_list_t *triggers;
 	alpm_list_t *depends;
 	char **cmd;
@@ -84,6 +85,7 @@ static void _alpm_hook_free(struct _alpm_hook_t *hook)
 {
 	if(hook) {
 		free(hook->name);
+		free(hook->desc);
 		_alpm_wordsplit_free(hook->cmd);
 		alpm_list_free_inner(hook->triggers, (alpm_list_fn_free) _alpm_trigger_free);
 		alpm_list_free(hook->triggers);
@@ -316,6 +318,10 @@ static int _alpm_hook_parse_cb(const char *file, int line,
 			} else {
 				error(_("hook %s line %d: invalid value %s\n"), file, line, value);
 			}
+		} else if(strcmp(key, "Description") == 0) {
+			char *val;
+			STRDUP(val, value, return 1);
+			hook->desc = val;
 		} else if(strcmp(key, "Depends") == 0) {
 			char *val;
 			STRDUP(val, value, return 1);
@@ -734,7 +740,7 @@ int _alpm_hook_run(alpm_handle_t *handle, alpm_hook_when_t when)
 		_alpm_log(handle, ALPM_LOG_DEBUG, "running hook %s\n", hook->name);
 
 		hook_event.type = ALPM_EVENT_HOOK_RUN_START;
-		hook_event.desc = hook->name;
+		hook_event.desc = hook->desc ? hook->desc : hook->name;
 		EVENT(handle, &hook_event);
 
 		if(_alpm_hook_run_hook(handle, hook) != 0 && hook->abort_on_fail) {
-- 
2.6.4


More information about the pacman-dev mailing list