diff --git a/src/shared/varlink-io.systemd.SysUpdate.c b/src/shared/varlink-io.systemd.SysUpdate.c index d2a4b61a5d..0fca89adf0 100644 --- a/src/shared/varlink-io.systemd.SysUpdate.c +++ b/src/shared/varlink-io.systemd.SysUpdate.c @@ -36,8 +36,8 @@ static SD_VARLINK_DEFINE_STRUCT_TYPE( SD_VARLINK_DEFINE_FIELD(id, SD_VARLINK_STRING, 0), SD_VARLINK_FIELD_COMMENT("A short human readable description of the feature."), SD_VARLINK_DEFINE_FIELD(description, SD_VARLINK_STRING, SD_VARLINK_NULLABLE), - SD_VARLINK_FIELD_COMMENT("A URL to documentation for the feature."), - SD_VARLINK_DEFINE_FIELD(documentation, SD_VARLINK_STRING, SD_VARLINK_NULLABLE), + SD_VARLINK_FIELD_COMMENT("URLs to documentation for the feature."), + SD_VARLINK_DEFINE_FIELD(documentation, SD_VARLINK_STRING, SD_VARLINK_NULLABLE|SD_VARLINK_ARRAY), SD_VARLINK_FIELD_COMMENT("A URL to an AppStream catalog XML file describing the feature."), SD_VARLINK_DEFINE_FIELD(appstream, SD_VARLINK_STRING, SD_VARLINK_NULLABLE), SD_VARLINK_FIELD_COMMENT("Whether the feature is enabled."), diff --git a/src/sysupdate/sysupdate.c b/src/sysupdate/sysupdate.c index 6270dc707c..ee74c2c31f 100644 --- a/src/sysupdate/sysupdate.c +++ b/src/sysupdate/sysupdate.c @@ -2414,6 +2414,7 @@ static int verb_enable_feature(int argc, char *argv[], uintptr_t _data, void *us static int feature_to_json(Context *context, const Feature *f, sd_json_variant **ret) { _cleanup_(sd_json_variant_unrefp) sd_json_variant *v = NULL; _cleanup_strv_free_ char **transfers = NULL; + const char *documentation_strv[2] = { NULL, }; int r; assert(context); @@ -2424,11 +2425,15 @@ static int feature_to_json(Context *context, const Feature *f, sd_json_variant * if (r < 0) return r; + /* FIXME: Long term we’d like to support an array of documentation, but currently the D-Bus interface + * doesn’t support that and neither do the internals of sysupdate. So just expose 0 or 1 URLs for now. */ + documentation_strv[0] = f->documentation; + r = sd_json_variant_merge_objectbo( &v, SD_JSON_BUILD_PAIR_STRING("id", f->id), JSON_BUILD_PAIR_STRING_NON_EMPTY("description", f->description), - JSON_BUILD_PAIR_STRING_NON_EMPTY("documentation", f->documentation), + JSON_BUILD_PAIR_STRV_NON_EMPTY("documentation", (char **) documentation_strv), JSON_BUILD_PAIR_STRING_NON_EMPTY("appstream", f->appstream), SD_JSON_BUILD_PAIR_BOOLEAN("isEnabled", f->enabled), JSON_BUILD_PAIR_STRV_NON_EMPTY("transfers", transfers));