1
0
Fork 0
gnome-software/plugins/flatpak/gs-flatpak-app.c
Daniel Baumann 68ee05b3fd
Adding upstream version 48.2.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
2025-06-22 21:00:23 +02:00

190 lines
4.4 KiB
C

/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
* vi:set noexpandtab tabstop=8 shiftwidth=8:
*
* Copyright (C) 2017-2018 Richard Hughes <richard@hughsie.com>
*
* SPDX-License-Identifier: GPL-2.0-or-later
*/
#include "config.h"
#include <string.h>
#include "gs-flatpak-app.h"
const gchar *
gs_flatpak_app_get_ref_name (GsApp *app)
{
return gs_app_get_metadata_item (app, "flatpak::RefName");
}
const gchar *
gs_flatpak_app_get_ref_arch (GsApp *app)
{
return gs_app_get_metadata_item (app, "flatpak::RefArch");
}
const gchar *
gs_flatpak_app_get_commit (GsApp *app)
{
return gs_app_get_metadata_item (app, "flatpak::Commit");
}
GsFlatpakAppFileKind
gs_flatpak_app_get_file_kind (GsApp *app)
{
GVariant *tmp = gs_app_get_metadata_variant (app, "flatpak::FileKind");
if (tmp == NULL)
return GS_FLATPAK_APP_FILE_KIND_UNKNOWN;
return g_variant_get_uint32 (tmp);
}
const gchar *
gs_flatpak_app_get_runtime_url (GsApp *app)
{
return gs_app_get_metadata_item (app, "flatpak::RuntimeUrl");
}
FlatpakRefKind
gs_flatpak_app_get_ref_kind (GsApp *app)
{
GVariant *tmp = gs_app_get_metadata_variant (app, "flatpak::RefKind");
if (tmp == NULL)
return FLATPAK_REF_KIND_APP;
return g_variant_get_uint32 (tmp);
}
const gchar *
gs_flatpak_app_get_ref_kind_as_str (GsApp *app)
{
FlatpakRefKind ref_kind = gs_flatpak_app_get_ref_kind (app);
if (ref_kind == FLATPAK_REF_KIND_APP)
return "app";
if (ref_kind == FLATPAK_REF_KIND_RUNTIME)
return "runtime";
return NULL;
}
const gchar *
gs_flatpak_app_get_object_id (GsApp *app)
{
return gs_app_get_metadata_item (app, "flatpak::ObjectID");
}
const gchar *
gs_flatpak_app_get_repo_gpgkey (GsApp *app)
{
return gs_app_get_metadata_item (app, "flatpak::RepoGpgKey");
}
const gchar *
gs_flatpak_app_get_repo_url (GsApp *app)
{
return gs_app_get_metadata_item (app, "flatpak::RepoUrl");
}
gchar *
gs_flatpak_app_get_ref_display (GsApp *app)
{
const gchar *ref_kind_as_str = gs_flatpak_app_get_ref_kind_as_str (app);
const gchar *ref_name = gs_flatpak_app_get_ref_name (app);
const gchar *ref_arch = gs_flatpak_app_get_ref_arch (app);
const gchar *ref_branch = gs_app_get_branch (app);
g_return_val_if_fail (ref_kind_as_str != NULL, NULL);
g_return_val_if_fail (ref_name != NULL, NULL);
g_return_val_if_fail (ref_arch != NULL, NULL);
g_return_val_if_fail (ref_branch != NULL, NULL);
return g_strdup_printf ("%s/%s/%s/%s",
ref_kind_as_str,
ref_name,
ref_arch,
ref_branch);
}
void
gs_flatpak_app_set_ref_name (GsApp *app, const gchar *val)
{
gs_app_set_metadata (app, "flatpak::RefName", val);
}
void
gs_flatpak_app_set_ref_arch (GsApp *app, const gchar *val)
{
gs_app_set_metadata (app, "flatpak::RefArch", val);
}
void
gs_flatpak_app_set_commit (GsApp *app, const gchar *val)
{
gs_app_set_metadata (app, "flatpak::Commit", val);
}
void
gs_flatpak_app_set_file_kind (GsApp *app, GsFlatpakAppFileKind file_kind)
{
g_autoptr(GVariant) tmp = g_variant_new_uint32 (file_kind);
gs_app_set_metadata_variant (app, "flatpak::FileKind", tmp);
}
void
gs_flatpak_app_set_runtime_url (GsApp *app, const gchar *val)
{
gs_app_set_metadata (app, "flatpak::RuntimeUrl", val);
}
void
gs_flatpak_app_set_ref_kind (GsApp *app, FlatpakRefKind ref_kind)
{
g_autoptr(GVariant) tmp = g_variant_new_uint32 (ref_kind);
gs_app_set_metadata_variant (app, "flatpak::RefKind", tmp);
}
void
gs_flatpak_app_set_object_id (GsApp *app, const gchar *val)
{
gs_app_set_metadata (app, "flatpak::ObjectID", val);
}
void
gs_flatpak_app_set_repo_gpgkey (GsApp *app, const gchar *val)
{
gs_app_set_metadata (app, "flatpak::RepoGpgKey", val);
}
void
gs_flatpak_app_set_repo_url (GsApp *app, const gchar *val)
{
gs_app_set_metadata (app, "flatpak::RepoUrl", val);
}
GsApp *
gs_flatpak_app_new (const gchar *id)
{
return GS_APP (g_object_new (GS_TYPE_APP, "id", id, NULL));
}
void
gs_flatpak_app_set_main_app_ref_name (GsApp *app, const gchar *main_app_ref)
{
gs_app_set_metadata (app, "flatpak::mainApp", main_app_ref);
}
const gchar *
gs_flatpak_app_get_main_app_ref_name (GsApp *app)
{
return gs_app_get_metadata_item (app, "flatpak::mainApp");
}
void
gs_flatpak_app_set_repo_filter (GsApp *app, const gchar *filter)
{
gs_app_set_metadata (app, "flatpak::RepoFilter", filter);
}
const gchar *
gs_flatpak_app_get_repo_filter (GsApp *app)
{
return gs_app_get_metadata_item (app, "flatpak::RepoFilter");
}