mirror of
https://github.com/flatpak/flatpak.git
synced 2026-03-13 20:52:39 -04:00
This is a major change in the OCI support, as the format of the OCI image registries changed. Instead of now having a "ref" file for each image in the repo it has a single index json file, where the ref name is now a per-image annotation. This allows us to support OCI much better, as we can now use the actual flatpak ref as the OCI ref name, and we can find all the flatpak refs in a remote. So, with this you can just use: flatpak remote-add --oci remote-name URL and then you can use the regular flatpak operations on the remote.
102 lines
3.8 KiB
C
102 lines
3.8 KiB
C
/*
|
|
* Copyright © 2016 Red Hat, Inc
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
* License as published by the Free Software Foundation; either
|
|
* version 2.1 of the License, or (at your option) any later version.
|
|
*
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
|
*
|
|
* Authors:
|
|
* Alexander Larsson <alexl@redhat.com>
|
|
*/
|
|
|
|
#ifndef __FLATPAK_JSON_H__
|
|
#define __FLATPAK_JSON_H__
|
|
|
|
#include <json-glib/json-glib.h>
|
|
|
|
G_BEGIN_DECLS
|
|
|
|
#define FLATPAK_TYPE_JSON flatpak_json_get_type ()
|
|
|
|
typedef struct _FlatpakJsonProp FlatpakJsonProp;
|
|
|
|
typedef enum {
|
|
FLATPAK_JSON_PROP_TYPE_PARENT,
|
|
FLATPAK_JSON_PROP_TYPE_INT64,
|
|
FLATPAK_JSON_PROP_TYPE_BOOL,
|
|
FLATPAK_JSON_PROP_TYPE_STRING,
|
|
FLATPAK_JSON_PROP_TYPE_STRUCT,
|
|
FLATPAK_JSON_PROP_TYPE_STRUCTV,
|
|
FLATPAK_JSON_PROP_TYPE_STRV,
|
|
FLATPAK_JSON_PROP_TYPE_STRMAP,
|
|
FLATPAK_JSON_PROP_TYPE_BOOLMAP,
|
|
} FlatpakJsonPropType;
|
|
|
|
typedef enum {
|
|
FLATPAK_JSON_PROP_FLAGS_NONE = 0,
|
|
FLATPAK_JSON_PROP_FLAGS_OPTIONAL = 1<<0,
|
|
} FlatpakJsonPropFlags;
|
|
|
|
|
|
struct _FlatpakJsonProp {
|
|
const char *name;
|
|
gsize offset;
|
|
FlatpakJsonPropType type;
|
|
gpointer type_data;
|
|
gpointer type_data2;
|
|
FlatpakJsonPropFlags flags;
|
|
} ;
|
|
|
|
#define FLATPAK_JSON_STRING_PROP(_struct, _field, _name) \
|
|
{ _name, G_STRUCT_OFFSET (_struct, _field), FLATPAK_JSON_PROP_TYPE_STRING }
|
|
#define FLATPAK_JSON_INT64_PROP(_struct, _field, _name) \
|
|
{ _name, G_STRUCT_OFFSET (_struct, _field), FLATPAK_JSON_PROP_TYPE_INT64 }
|
|
#define FLATPAK_JSON_BOOL_PROP(_struct, _field, _name) \
|
|
{ _name, G_STRUCT_OFFSET (_struct, _field), FLATPAK_JSON_PROP_TYPE_BOOL }
|
|
#define FLATPAK_JSON_STRV_PROP(_struct, _field, _name) \
|
|
{ _name, G_STRUCT_OFFSET (_struct, _field), FLATPAK_JSON_PROP_TYPE_STRV }
|
|
#define FLATPAK_JSON_STRMAP_PROP(_struct, _field, _name) \
|
|
{ _name, G_STRUCT_OFFSET (_struct, _field), FLATPAK_JSON_PROP_TYPE_STRMAP }
|
|
#define FLATPAK_JSON_BOOLMAP_PROP(_struct, _field, _name) \
|
|
{ _name, G_STRUCT_OFFSET (_struct, _field), FLATPAK_JSON_PROP_TYPE_BOOLMAP }
|
|
#define FLATPAK_JSON_STRUCT_PROP(_struct, _field, _name, _props) \
|
|
{ _name, G_STRUCT_OFFSET (_struct, _field), FLATPAK_JSON_PROP_TYPE_STRUCT, (gpointer)_props}
|
|
#define FLATPAK_JSON_OPT_STRUCT_PROP(_struct, _field, _name, _props) \
|
|
{ _name, G_STRUCT_OFFSET (_struct, _field), FLATPAK_JSON_PROP_TYPE_STRUCT, (gpointer)_props, 0, FLATPAK_JSON_PROP_FLAGS_OPTIONAL}
|
|
#define FLATPAK_JSON_PARENT_PROP(_struct, _field, _props) \
|
|
{ "parent", G_STRUCT_OFFSET (_struct, _field), FLATPAK_JSON_PROP_TYPE_PARENT, (gpointer)_props}
|
|
#define FLATPAK_JSON_STRUCTV_PROP(_struct, _field, _name, _props) \
|
|
{ _name, G_STRUCT_OFFSET (_struct, _field), FLATPAK_JSON_PROP_TYPE_STRUCTV, (gpointer)_props, (gpointer) sizeof (**((_struct *) 0)->_field) }
|
|
#define FLATPAK_JSON_LAST_PROP { NULL }
|
|
|
|
G_DECLARE_DERIVABLE_TYPE (FlatpakJson, flatpak_json, FLATPAK, JSON, GObject)
|
|
|
|
struct _FlatpakJsonClass {
|
|
GObjectClass parent_class;
|
|
|
|
FlatpakJsonProp *props;
|
|
const char *mediatype;
|
|
};
|
|
|
|
FlatpakJson *flatpak_json_from_node (JsonNode *node,
|
|
GType type,
|
|
GError **error);
|
|
JsonNode *flatpak_json_to_node (FlatpakJson *self);
|
|
FlatpakJson *flatpak_json_from_bytes (GBytes *bytes,
|
|
GType type,
|
|
GError **error);
|
|
GBytes *flatpak_json_to_bytes (FlatpakJson *self);
|
|
|
|
G_END_DECLS
|
|
|
|
#endif /* __FLATPAK_JSON_H__ */
|