Skip to content

Commit

Permalink
validator: Improve error message if no valid categories were found
Browse files Browse the repository at this point in the history
CC: #577
  • Loading branch information
ximion committed Jan 4, 2024
1 parent bed40d5 commit 0653448
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 5 deletions.
2 changes: 1 addition & 1 deletion src/as-utils-private.h
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ void as_ref_string_assign_transfer (GRefString **rstr_ptr, GRefString *new_rstr)
AS_INTERNAL_VISIBLE
gboolean as_utils_extract_tarball (const gchar *filename, const gchar *target_dir, GError **error);

gboolean as_utils_is_ignored_category_name (const gchar *category_name);
gboolean as_utils_category_name_is_bad (const gchar *category_name);

gboolean as_utils_is_platform_triplet_arch (const gchar *arch);
gboolean as_utils_is_platform_triplet_oskernel (const gchar *os);
Expand Down
4 changes: 2 additions & 2 deletions src/as-utils.c
Original file line number Diff line number Diff line change
Expand Up @@ -1358,9 +1358,9 @@ as_utils_category_name_is_bad (const gchar *category_name)
return TRUE;

/* we want to ignore custom categories */
if (g_str_has_prefix (cat, "X-"))
if (g_str_has_prefix (category_name, "X-"))
return TRUE;
if (g_str_has_prefix (cat, "x-"))
if (g_str_has_prefix (category_name, "x-"))
return TRUE;

return FALSE;
Expand Down
6 changes: 6 additions & 0 deletions src/as-validator-issue-tag.h
Original file line number Diff line number Diff line change
Expand Up @@ -743,6 +743,12 @@ AsValidatorIssueTag as_validator_issue_tag_list[] = {
N_("The category name is not valid. Refer to the XDG Menu Specification for a list of valid category names."),
},

{ "all-categories-ignored",
AS_ISSUE_SEVERITY_WARNING,
N_("All categories for this component have been ignored, either because they were invalid or because they are of low quality "
"(e.g. custom 'X-' prefixed or toolkit ones like 'GTK' or 'Qt'). Please fix your category names, or add more categories."),
},

{ "app-categories-missing",
AS_ISSUE_SEVERITY_ERROR,
N_("This component is in no valid categories, even though it should be. Please check its metainfo file and desktop-entry file."),
Expand Down
16 changes: 14 additions & 2 deletions src/as-validator.c
Original file line number Diff line number Diff line change
Expand Up @@ -3398,11 +3398,11 @@ as_validator_validate_component_node (AsValidator *validator, AsContext *ctx, xm

/* validate categories */
if (as_component_get_categories (cpt)->len > 0) {
guint j;
GPtrArray *cat_array;
gboolean have_valid_category = FALSE;

cat_array = as_component_get_categories (cpt);
for (j = 0; j < cat_array->len; j++) {
for (guint j = 0; j < cat_array->len; j++) {
const gchar *category_name = (const gchar *) g_ptr_array_index (cat_array,
j);

Expand All @@ -3411,7 +3411,19 @@ as_validator_validate_component_node (AsValidator *validator, AsContext *ctx, xm
NULL,
"category-invalid",
category_name);
continue;
}

/* check if the category would be ignored during catalog composition */
if (as_utils_category_name_is_bad (category_name))
continue;

have_valid_category = TRUE;
}

if (!have_valid_category) {
/* the user clearly intended there to be categories, yet we ended up with no valid ones */
as_validator_add_issue (validator, NULL, "all-categories-ignored", NULL);
}
}

Expand Down

0 comments on commit 0653448

Please sign in to comment.