Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Execute commands provided by plugins if any
Marin Atanasov Nikolov committed 13 years ago
commit 0d2a419fbbca043008ec3d4e6979e5051b744802
parent dbb8aad
2 files changed +11 -1
modified libpkg/plugins.c
@@ -473,6 +473,7 @@ pkg_plugins_cmd_run(const char *cmd, int argc, char **argv)

	while (pkg_plugins_list(&p) != EPKG_END)
		if ((pkg_plugins_is_loaded(p)) &&
+
		    (pkg_plugins_provides_cmd(p)) &&
		    (strcmp(cmd, pkg_plugins_get(p, PKG_PLUGINS_NAME)) == 0)) {
			cmd_found = true;
			p->exec_cmd(argc, argv);
modified pkg/main.c
@@ -108,6 +108,9 @@ usage(void)
	for (unsigned int i = 0; i < cmd_len; i++)
		fprintf(stderr, "\t%-15s%s\n", cmd[i].name, cmd[i].desc);

+
	if (pkg_init(NULL) != EPKG_OK)
+
		errx(EX_SOFTWARE, "Cannot parse configuration file!");
+
	
	pkg_config_bool(PKG_CONFIG_ENABLE_PLUGINS, &plugins_enabled);

	if (plugins_enabled) {
@@ -332,9 +335,15 @@ main(int argc, char **argv)
	}

	if (command == NULL) {
+
		/* Check if a plugin provides the requested command */
+
		if (plugins_enabled)
+
			ret = pkg_plugins_cmd_run(argv[0], argc, argv);
+
		
		pkg_shutdown();
		pkg_plugins_shutdown();
-
		usage();
+
		if (ret != EPKG_OK)
+
			usage();
+
		
		return (ret); /* Not reached but makes scanbuild happy */
	}