Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Add incremental update event.
Vsevolod Stakhov committed 13 years ago
commit e2975eed541d631584c429741ef9feefdcb2df36
parent d1fb528
5 files changed +37 -1
modified libpkg/pkg.h.in
@@ -1159,6 +1159,7 @@ typedef enum {
	PKG_EVENT_INTEGRITYCHECK_CONFLICT,
	PKG_EVENT_NEWPKGVERSION,
	PKG_EVENT_NOTICE,
+
	PKG_EVENT_INCREMENTAL_UPDATE,
	/* errors */
	PKG_EVENT_ERROR,
	PKG_EVENT_ERRNO,
@@ -1176,7 +1177,7 @@ typedef enum {
	PKG_EVENT_PLUGIN_ERRNO,
	PKG_EVENT_PLUGIN_ERROR,
	PKG_EVENT_PLUGIN_INFO,
-
	PKG_EVENT_NOT_FOUND,
+
	PKG_EVENT_NOT_FOUND
} pkg_event_t;

struct pkg_event {
@@ -1263,6 +1264,11 @@ struct pkg_event {
			const char *pkg_path;
			struct pkg_event_conflict *conflicts;
		} e_integrity_conflict;
+
		struct {
+
			int updated;
+
			int removed;
+
			int added;
+
		} e_incremental_update;
	};
};

modified libpkg/pkg_event.c
@@ -347,6 +347,16 @@ pipeevent(struct pkg_event *ev)
		    pkg_plugin_get(ev->e_plugin_info.plugin, PKG_PLUGIN_NAME),
		    sbuf_json_escape(buf, ev->e_plugin_info.msg));
		break;
+
	case PKG_EVENT_INCREMENTAL_UPDATE:
+
		sbuf_printf(msg, "{ \"type\": \"INFO_INCREMENTAL_UPDATE\", "
+
		    "\"data\": {"
+
			"\"updated\": %d, "
+
			"\"removed\": %d, "
+
			"\"added\": %d"
+
			"}}", ev->e_incremental_update.updated,
+
			ev->e_incremental_update.removed,
+
			ev->e_incremental_update.added);
+
		break;
	default:
		break;
	}
@@ -726,3 +736,15 @@ pkg_emit_package_not_found(const char *p)
	pkg_emit_event(&ev);
}

+
void
+
pkg_emit_incremental_update(int updated, int removed, int added)
+
{
+
	struct pkg_event ev;
+

+
	ev.type = PKG_EVENT_INCREMENTAL_UPDATE;
+
	ev.e_incremental_update.updated = updated;
+
	ev.e_incremental_update.removed = removed;
+
	ev.e_incremental_update.added = added;
+

+
	pkg_emit_event(&ev);
+
}
modified libpkg/private/event.h
@@ -52,6 +52,7 @@ void pkg_emit_file_mismatch(struct pkg *pkg, struct pkg_file *f, const char *new
void pkg_emit_newpkgversion(void);
void pkg_emit_developer_mode(const char *fmt, ...);
void pkg_emit_package_not_found(const char *);
+
void pkg_emit_incremental_update(int updated, int removed, int added);


#endif
modified libpkg/update.c
@@ -566,6 +566,7 @@ pkg_update_incremental(const char *name, const char *packagesite, time_t *mtime)
		free(item);
	}
	added -= updated;
+
	pkg_emit_incremental_update(updated, removed, added);

cleanup:
	if (it != NULL)
modified pkg/event.c
@@ -261,6 +261,12 @@ event_callback(void *data, struct pkg_event *ev)
			break;
		printf("%s: %s\n", pkg_plugin_get(ev->e_plugin_info.plugin, PKG_PLUGIN_NAME), ev->e_plugin_info.msg);
		break;
+
	case PKG_EVENT_INCREMENTAL_UPDATE:
+
		if (!quiet)
+
			printf("Incremental update completed: %d packages updated, %d removed and %d added.\n",
+
					ev->e_incremental_update.updated, ev->e_incremental_update.removed,
+
					ev->e_incremental_update.added);
+
		break;
	default:
		break;
	}