Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
In order plugins to be really useful they will need some access to the db
Marin Atanasov Nikolov committed 13 years ago
commit 307c124a046132112b24ce13a4d813a7672729ee
parent eba2bd4
3 files changed +14 -14
modified libpkg/pkg.h
@@ -916,9 +916,9 @@ const char *pkg_plugins_get(struct pkg_plugins *p, pkg_plugins_key key);
 * This is where plugins hook into the library using pkg_plugins_hook()
 * @todo: Document
 */
-
typedef int(*pkg_plugins_callback)(void *data);
+
typedef int(*pkg_plugins_callback)(void *data, struct pkgdb *db);
int pkg_plugins_hook(const char *pluginname, pkg_plugins_hook_t hook, pkg_plugins_callback callback);
-
int pkg_plugins_hook_run(pkg_plugins_hook_t hook, void *data);
+
int pkg_plugins_hook_run(pkg_plugins_hook_t hook, void *data, struct pkgdb *db);

/**
 * Get the value of a configuration key
modified libpkg/pkg_jobs.c
@@ -324,19 +324,19 @@ pkg_jobs_apply(struct pkg_jobs *j)

	switch (j->type) {
	case PKG_JOBS_INSTALL:
-
		pkg_plugins_hook_run(PKG_PLUGINS_HOOK_PRE_INSTALL, j);
+
		pkg_plugins_hook_run(PKG_PLUGINS_HOOK_PRE_INSTALL, j, j->db);
		rc = pkg_jobs_install(j);
-
		pkg_plugins_hook_run(PKG_PLUGINS_HOOK_POST_INSTALL, j);
+
		pkg_plugins_hook_run(PKG_PLUGINS_HOOK_POST_INSTALL, j, j->db);
		break;
	case PKG_JOBS_DEINSTALL:
-
		pkg_plugins_hook_run(PKG_PLUGINS_HOOK_PRE_DEINSTALL, j);
+
		pkg_plugins_hook_run(PKG_PLUGINS_HOOK_PRE_DEINSTALL, j, j->db);
		rc = pkg_jobs_deinstall(j);
-
		pkg_plugins_hook_run(PKG_PLUGINS_HOOK_POST_DEINSTALL, j);
+
		pkg_plugins_hook_run(PKG_PLUGINS_HOOK_POST_DEINSTALL, j, j->db);
		break;
	case PKG_JOBS_FETCH:
-
		pkg_plugins_hook_run(PKG_PLUGINS_HOOK_PRE_FETCH, j);
+
		pkg_plugins_hook_run(PKG_PLUGINS_HOOK_PRE_FETCH, j, j->db);
		rc = pkg_jobs_fetch(j);
-
		pkg_plugins_hook_run(PKG_PLUGINS_HOOK_POST_FETCH, j);
+
		pkg_plugins_hook_run(PKG_PLUGINS_HOOK_POST_FETCH, j, j->db);
		break;
	default:
		rc = EPKG_FATAL;
modified libpkg/plugins.c
@@ -78,7 +78,7 @@ static int pkg_plugins_load(struct pkg_plugins *p);
static int pkg_plugins_unload(struct pkg_plugins *p);
static int pkg_plugins_hook_free(struct pkg_plugins *p);
static int pkg_plugins_hook_register(struct pkg_plugins *p, pkg_plugins_hook_t hook, pkg_plugins_callback callback);
-
static int pkg_plugins_hook_exec(struct pkg_plugins *p, pkg_plugins_hook_t hook, void *data);
+
static int pkg_plugins_hook_exec(struct pkg_plugins *p, pkg_plugins_hook_t hook, void *data, struct pkgdb *db);
static int pkg_plugins_hook_list(struct pkg_plugins *p, struct plugins_hook **h);

static int
@@ -364,7 +364,7 @@ pkg_plugins_hook_register(struct pkg_plugins *p, pkg_plugins_hook_t hook, pkg_pl
}

static int
-
pkg_plugins_hook_exec(struct pkg_plugins *p, pkg_plugins_hook_t hook, void *data)
+
pkg_plugins_hook_exec(struct pkg_plugins *p, pkg_plugins_hook_t hook, void *data, struct pkgdb *db)
{
	struct plugins_hook *h = NULL;
	
@@ -374,7 +374,7 @@ pkg_plugins_hook_exec(struct pkg_plugins *p, pkg_plugins_hook_t hook, void *data
		if (h->hook == hook) {
			printf(">>> Triggering execution of plugin '%s'\n",
			       pkg_plugins_get(p, PKG_PLUGINS_NAME));
-
			h->callback(data);
+
			h->callback(data, db);
		}

	return (EPKG_OK);
@@ -425,13 +425,13 @@ pkg_plugins_hook(const char *pluginname, pkg_plugins_hook_t hook, pkg_plugins_ca
}

int
-
pkg_plugins_hook_run(pkg_plugins_hook_t hook, void *data)
+
pkg_plugins_hook_run(pkg_plugins_hook_t hook, void *data, struct pkgdb *db)
{
	struct pkg_plugins *p = NULL;

	while (pkg_plugins_list(&p) != EPKG_END)
		if (pkg_plugins_is_loaded(p))
-
			pkg_plugins_hook_exec(p, hook, data);
+
			pkg_plugins_hook_exec(p, hook, data, db);

	return (EPKG_OK);
}
@@ -488,7 +488,7 @@ pkg_plugins_display_loaded(void)
		if (pkg_plugins_is_loaded(p))
			printf("'%s' ", pkg_plugins_get(p, PKG_PLUGINS_NAME));

-
	printf(" ]\nSuccessfully loaded %d plugin(s)\n", have_plugins_loaded);
+
	printf("]\nSuccessfully loaded %d plugin(s)\n", have_plugins_loaded);
	
	return (EPKG_OK);
}