xbps-install: show "pkgname (curver -> newver)" in updates; requested by @chneukirchen.
This commit is contained in:
parent
4689b07b85
commit
f9d162e639
@ -37,6 +37,7 @@
|
|||||||
#include "defs.h"
|
#include "defs.h"
|
||||||
|
|
||||||
struct transaction {
|
struct transaction {
|
||||||
|
struct xbps_handle *xhp;
|
||||||
xbps_dictionary_t d;
|
xbps_dictionary_t d;
|
||||||
xbps_object_iterator_t iter;
|
xbps_object_iterator_t iter;
|
||||||
uint32_t inst_pkgcnt;
|
uint32_t inst_pkgcnt;
|
||||||
@ -79,22 +80,45 @@ show_actions(xbps_object_iterator_t iter)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
show_package_list(xbps_object_iterator_t iter, const char *match, int cols)
|
show_package_list(struct transaction *trans, const char *match, int cols)
|
||||||
{
|
{
|
||||||
xbps_object_t obj;
|
xbps_object_t obj;
|
||||||
|
|
||||||
while ((obj = xbps_object_iterator_next(iter)) != NULL) {
|
while ((obj = xbps_object_iterator_next(trans->iter)) != NULL) {
|
||||||
const char *pkgver, *tract;
|
const char *pkgver, *tract;
|
||||||
|
char *buf = NULL;
|
||||||
bool dload = false;
|
bool dload = false;
|
||||||
|
|
||||||
xbps_dictionary_get_cstring_nocopy(obj, "pkgver", &pkgver);
|
xbps_dictionary_get_cstring_nocopy(obj, "pkgver", &pkgver);
|
||||||
xbps_dictionary_get_cstring_nocopy(obj, "transaction", &tract);
|
xbps_dictionary_get_cstring_nocopy(obj, "transaction", &tract);
|
||||||
xbps_dictionary_get_bool(obj, "download", &dload);
|
xbps_dictionary_get_bool(obj, "download", &dload);
|
||||||
|
|
||||||
if ((match && (strcmp(match, tract) == 0)) || (!match && dload))
|
if (match && strcmp(tract, "update") == 0) {
|
||||||
print_package_line(pkgver, cols, false);
|
xbps_dictionary_t ipkgd;
|
||||||
|
const char *ipkgver, *iversion, *version;
|
||||||
|
char *pkgname;
|
||||||
|
|
||||||
|
/* get installed pkgver */
|
||||||
|
pkgname = xbps_pkg_name(pkgver);
|
||||||
|
assert(pkgname);
|
||||||
|
ipkgd = xbps_pkgdb_get_pkg(trans->xhp, pkgname);
|
||||||
|
assert(ipkgd);
|
||||||
|
xbps_dictionary_get_cstring_nocopy(ipkgd, "pkgver", &ipkgver);
|
||||||
|
version = xbps_pkg_version(pkgver);
|
||||||
|
iversion = xbps_pkg_version(ipkgver);
|
||||||
|
buf = xbps_xasprintf("%s (%s -> %s)", pkgname, iversion, version);
|
||||||
|
free(pkgname);
|
||||||
|
}
|
||||||
|
if ((match && (strcmp(match, tract) == 0)) || (!match && dload)) {
|
||||||
|
if (buf) {
|
||||||
|
print_package_line(buf, cols, false);
|
||||||
|
free(buf);
|
||||||
|
} else {
|
||||||
|
print_package_line(pkgver, cols, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
xbps_object_iterator_reset(iter);
|
xbps_object_iterator_reset(trans->iter);
|
||||||
print_package_line(NULL, cols, true);
|
print_package_line(NULL, cols, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -113,7 +137,7 @@ show_transaction_sizes(struct transaction *trans, int cols)
|
|||||||
if (trans->dl_pkgcnt) {
|
if (trans->dl_pkgcnt) {
|
||||||
printf("%u package%s will be downloaded:\n",
|
printf("%u package%s will be downloaded:\n",
|
||||||
trans->dl_pkgcnt, trans->dl_pkgcnt == 1 ? "" : "s");
|
trans->dl_pkgcnt, trans->dl_pkgcnt == 1 ? "" : "s");
|
||||||
show_package_list(trans->iter, NULL, cols);
|
show_package_list(trans, NULL, cols);
|
||||||
printf("\n");
|
printf("\n");
|
||||||
}
|
}
|
||||||
xbps_dictionary_get_uint32(trans->d, "total-install-pkgs",
|
xbps_dictionary_get_uint32(trans->d, "total-install-pkgs",
|
||||||
@ -121,7 +145,7 @@ show_transaction_sizes(struct transaction *trans, int cols)
|
|||||||
if (trans->inst_pkgcnt) {
|
if (trans->inst_pkgcnt) {
|
||||||
printf("%u package%s will be installed:\n",
|
printf("%u package%s will be installed:\n",
|
||||||
trans->inst_pkgcnt, trans->inst_pkgcnt == 1 ? "" : "s");
|
trans->inst_pkgcnt, trans->inst_pkgcnt == 1 ? "" : "s");
|
||||||
show_package_list(trans->iter, "install", cols);
|
show_package_list(trans, "install", cols);
|
||||||
printf("\n");
|
printf("\n");
|
||||||
}
|
}
|
||||||
xbps_dictionary_get_uint32(trans->d, "total-update-pkgs",
|
xbps_dictionary_get_uint32(trans->d, "total-update-pkgs",
|
||||||
@ -129,7 +153,7 @@ show_transaction_sizes(struct transaction *trans, int cols)
|
|||||||
if (trans->up_pkgcnt) {
|
if (trans->up_pkgcnt) {
|
||||||
printf("%u package%s will be updated:\n",
|
printf("%u package%s will be updated:\n",
|
||||||
trans->up_pkgcnt, trans->up_pkgcnt == 1 ? "" : "s");
|
trans->up_pkgcnt, trans->up_pkgcnt == 1 ? "" : "s");
|
||||||
show_package_list(trans->iter, "update", cols);
|
show_package_list(trans, "update", cols);
|
||||||
printf("\n");
|
printf("\n");
|
||||||
}
|
}
|
||||||
xbps_dictionary_get_uint32(trans->d, "total-configure-pkgs",
|
xbps_dictionary_get_uint32(trans->d, "total-configure-pkgs",
|
||||||
@ -137,7 +161,7 @@ show_transaction_sizes(struct transaction *trans, int cols)
|
|||||||
if (trans->cf_pkgcnt) {
|
if (trans->cf_pkgcnt) {
|
||||||
printf("%u package%s will be configured:\n",
|
printf("%u package%s will be configured:\n",
|
||||||
trans->cf_pkgcnt, trans->cf_pkgcnt == 1 ? "" : "s");
|
trans->cf_pkgcnt, trans->cf_pkgcnt == 1 ? "" : "s");
|
||||||
show_package_list(trans->iter, "configure", cols);
|
show_package_list(trans, "configure", cols);
|
||||||
printf("\n");
|
printf("\n");
|
||||||
}
|
}
|
||||||
xbps_dictionary_get_uint32(trans->d, "total-remove-pkgs",
|
xbps_dictionary_get_uint32(trans->d, "total-remove-pkgs",
|
||||||
@ -145,7 +169,7 @@ show_transaction_sizes(struct transaction *trans, int cols)
|
|||||||
if (trans->rm_pkgcnt) {
|
if (trans->rm_pkgcnt) {
|
||||||
printf("%u package%s will be removed:\n",
|
printf("%u package%s will be removed:\n",
|
||||||
trans->rm_pkgcnt, trans->rm_pkgcnt == 1 ? "" : "s");
|
trans->rm_pkgcnt, trans->rm_pkgcnt == 1 ? "" : "s");
|
||||||
show_package_list(trans->iter, "remove", cols);
|
show_package_list(trans, "remove", cols);
|
||||||
printf("\n");
|
printf("\n");
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
@ -308,6 +332,7 @@ exec_transaction(struct xbps_handle *xhp, int maxcols, bool yes, bool drun)
|
|||||||
xbps_dbg_printf_append(xhp, "%s",
|
xbps_dbg_printf_append(xhp, "%s",
|
||||||
xbps_dictionary_externalize(xhp->transd));
|
xbps_dictionary_externalize(xhp->transd));
|
||||||
|
|
||||||
|
trans->xhp = xhp;
|
||||||
trans->d = xhp->transd;
|
trans->d = xhp->transd;
|
||||||
trans->iter = xbps_array_iter_from_dict(xhp->transd, "packages");
|
trans->iter = xbps_array_iter_from_dict(xhp->transd, "packages");
|
||||||
assert(trans->iter);
|
assert(trans->iter);
|
||||||
|
Loading…
Reference in New Issue
Block a user