/* * Copyright © 2014 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 . * * Authors: * Alexander Larsson */ #ifndef __FLATPAK_DIR_H__ #define __FLATPAK_DIR_H__ #include #include "libglnx/libglnx.h" #include #include /* Version history: * The version field was added in flatpak 1.2, anything before is 0. * * Version 1 added appdata-name/summary/version/license */ #define FLATPAK_DEPLOY_VERSION_CURRENT 1 #define FLATPAK_DEPLOY_VERSION_ANY 0 #define FLATPAK_TYPE_DIR flatpak_dir_get_type () #define FLATPAK_DIR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FLATPAK_TYPE_DIR, FlatpakDir)) #define FLATPAK_IS_DIR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FLATPAK_TYPE_DIR)) #define FLATPAK_TYPE_DEPLOY flatpak_deploy_get_type () #define FLATPAK_DEPLOY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FLATPAK_TYPE_DEPLOY, FlatpakDeploy)) #define FLATPAK_IS_DEPLOY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FLATPAK_TYPE_DEPLOY)) GType flatpak_dir_get_type (void); GType flatpak_deploy_get_type (void); #define FLATPAK_REF_GROUP "Flatpak Ref" #define FLATPAK_REF_VERSION_KEY "Version" #define FLATPAK_REF_URL_KEY "Url" #define FLATPAK_REF_RUNTIME_REPO_KEY "RuntimeRepo" #define FLATPAK_REF_SUGGEST_REMOTE_NAME_KEY "SuggestRemoteName" #define FLATPAK_REF_TITLE_KEY "Title" #define FLATPAK_REF_GPGKEY_KEY "GPGKey" #define FLATPAK_REF_IS_RUNTIME_KEY "IsRuntime" #define FLATPAK_REF_NAME_KEY "Name" #define FLATPAK_REF_BRANCH_KEY "Branch" #define FLATPAK_REF_COLLECTION_ID_KEY "CollectionID" #define FLATPAK_REF_DEPLOY_COLLECTION_ID_KEY "DeployCollectionID" #define FLATPAK_REPO_GROUP "Flatpak Repo" #define FLATPAK_REPO_VERSION_KEY "Version" #define FLATPAK_REPO_URL_KEY "Url" #define FLATPAK_REPO_TITLE_KEY "Title" #define FLATPAK_REPO_DEFAULT_BRANCH_KEY "DefaultBranch" #define FLATPAK_REPO_GPGKEY_KEY "GPGKey" #define FLATPAK_REPO_NODEPS_KEY "NoDeps" #define FLATPAK_REPO_COMMENT_KEY "Comment" #define FLATPAK_REPO_DESCRIPTION_KEY "Description" #define FLATPAK_REPO_HOMEPAGE_KEY "Homepage" #define FLATPAK_REPO_ICON_KEY "Icon" #define FLATPAK_REPO_COLLECTION_ID_KEY "CollectionID" #define FLATPAK_REPO_DEPLOY_COLLECTION_ID_KEY "DeployCollectionID" #define FLATPAK_DEFAULT_UPDATE_FREQUENCY 100 #define FLATPAK_CLI_UPDATE_FREQUENCY 300 typedef struct { char *collection_id; /* (nullable) */ char *ref; char *commit; char **subpaths; gboolean download; gboolean delete; gboolean auto_prune; } FlatpakRelated; void flatpak_related_free (FlatpakRelated *related); /* The remote state represent the state of the remote at a particular time, including the summary file and the metadata (which may be from the summary or from a branch. We create this once per highlevel operation to avoid looking up the summary multiple times, but also to avoid races if it happened to change in the middle of the operation */ typedef struct { char *remote_name; char *collection_id; GVariant *summary; GBytes *summary_sig_bytes; GError *summary_fetch_error; GVariant *metadata; GError *metadata_fetch_error; int refcount; } FlatpakRemoteState; FlatpakRemoteState *flatpak_remote_state_ref (FlatpakRemoteState *remote_state); void flatpak_remote_state_unref (FlatpakRemoteState *remote_state); gboolean flatpak_remote_state_ensure_summary (FlatpakRemoteState *self, GError **error); gboolean flatpak_remote_state_ensure_metadata (FlatpakRemoteState *self, GError **error); gboolean flatpak_remote_state_lookup_ref (FlatpakRemoteState *self, const char *ref, char **out_checksum, GVariant **out_variant, GError **error); char **flatpak_remote_state_match_subrefs (FlatpakRemoteState *self, const char *ref); gboolean flatpak_remote_state_lookup_repo_metadata (FlatpakRemoteState *self, const char *key, const char *format_string, ...); gboolean flatpak_remote_state_lookup_cache (FlatpakRemoteState *self, const char *ref, guint64 *download_size, guint64 *installed_size, const char **metadata, GError **error); GVariant *flatpak_remote_state_lookup_sparse_cache (FlatpakRemoteState *self, const char *ref, GError **error); G_DEFINE_AUTOPTR_CLEANUP_FUNC (FlatpakDir, g_object_unref) G_DEFINE_AUTOPTR_CLEANUP_FUNC (FlatpakDeploy, g_object_unref) G_DEFINE_AUTOPTR_CLEANUP_FUNC (FlatpakRelated, flatpak_related_free) G_DEFINE_AUTOPTR_CLEANUP_FUNC (FlatpakRemoteState, flatpak_remote_state_unref) typedef struct { char *collection_id; char *ref_name; } FlatpakCollectionRef; FlatpakCollectionRef * flatpak_collection_ref_new (const char *collection_id, const char *ref_name); void flatpak_collection_ref_free (FlatpakCollectionRef *ref); guint flatpak_collection_ref_hash (gconstpointer ref); gboolean flatpak_collection_ref_equal (gconstpointer ref1, gconstpointer ref2); G_DEFINE_AUTOPTR_CLEANUP_FUNC (FlatpakCollectionRef, flatpak_collection_ref_free) typedef enum { FLATPAK_HELPER_DEPLOY_FLAGS_NONE = 0, FLATPAK_HELPER_DEPLOY_FLAGS_UPDATE = 1 << 0, FLATPAK_HELPER_DEPLOY_FLAGS_NO_DEPLOY = 1 << 1, FLATPAK_HELPER_DEPLOY_FLAGS_LOCAL_PULL = 1 << 2, FLATPAK_HELPER_DEPLOY_FLAGS_REINSTALL = 1 << 3, FLATPAK_HELPER_DEPLOY_FLAGS_NO_INTERACTION = 1 << 4, FLATPAK_HELPER_DEPLOY_FLAGS_APP_HINT = 1 << 5, FLATPAK_HELPER_DEPLOY_FLAGS_INSTALL_HINT = 1 << 6, } FlatpakHelperDeployFlags; #define FLATPAK_HELPER_DEPLOY_FLAGS_ALL (FLATPAK_HELPER_DEPLOY_FLAGS_UPDATE | \ FLATPAK_HELPER_DEPLOY_FLAGS_NO_DEPLOY | \ FLATPAK_HELPER_DEPLOY_FLAGS_LOCAL_PULL | \ FLATPAK_HELPER_DEPLOY_FLAGS_REINSTALL | \ FLATPAK_HELPER_DEPLOY_FLAGS_NO_INTERACTION | \ FLATPAK_HELPER_DEPLOY_FLAGS_APP_HINT | \ FLATPAK_HELPER_DEPLOY_FLAGS_INSTALL_HINT) typedef enum { FLATPAK_HELPER_UNINSTALL_FLAGS_NONE = 0, FLATPAK_HELPER_UNINSTALL_FLAGS_KEEP_REF = 1 << 0, FLATPAK_HELPER_UNINSTALL_FLAGS_FORCE_REMOVE = 1 << 1, FLATPAK_HELPER_UNINSTALL_FLAGS_NO_INTERACTION = 1 << 2, } FlatpakHelperUninstallFlags; #define FLATPAK_HELPER_UNINSTALL_FLAGS_ALL (FLATPAK_HELPER_UNINSTALL_FLAGS_KEEP_REF | \ FLATPAK_HELPER_UNINSTALL_FLAGS_FORCE_REMOVE | \ FLATPAK_HELPER_UNINSTALL_FLAGS_NO_INTERACTION) typedef enum { FLATPAK_HELPER_CONFIGURE_REMOTE_FLAGS_NONE = 0, FLATPAK_HELPER_CONFIGURE_REMOTE_FLAGS_FORCE_REMOVE = 1 << 0, FLATPAK_HELPER_CONFIGURE_REMOTE_FLAGS_NO_INTERACTION = 1 << 1, } FlatpakHelperConfigureRemoteFlags; #define FLATPAK_HELPER_CONFIGURE_REMOTE_FLAGS_ALL (FLATPAK_HELPER_CONFIGURE_REMOTE_FLAGS_FORCE_REMOVE | \ FLATPAK_HELPER_CONFIGURE_REMOTE_FLAGS_NO_INTERACTION) typedef enum { FLATPAK_HELPER_CONFIGURE_FLAGS_NONE = 0, FLATPAK_HELPER_CONFIGURE_FLAGS_UNSET = 1 << 0, FLATPAK_HELPER_CONFIGURE_FLAGS_NO_INTERACTION = 1 << 1, } FlatpakHelperConfigureFlags; #define FLATPAK_HELPER_CONFIGURE_FLAGS_ALL (FLATPAK_HELPER_CONFIGURE_FLAGS_UNSET | \ FLATPAK_HELPER_CONFIGURE_FLAGS_NO_INTERACTION) typedef enum { FLATPAK_HELPER_UPDATE_REMOTE_FLAGS_NONE = 0, FLATPAK_HELPER_UPDATE_REMOTE_FLAGS_NO_INTERACTION = 1 << 0, } FlatpakHelperUpdateRemoteFlags; #define FLATPAK_HELPER_UPDATE_REMOTE_FLAGS_ALL (FLATPAK_HELPER_UPDATE_REMOTE_FLAGS_NO_INTERACTION) typedef enum { FLATPAK_HELPER_GET_REVOKEFS_FD_FLAGS_NONE = 0, FLATPAK_HELPER_GET_REVOKEFS_FD_FLAGS_NO_INTERACTION = 1 << 0, } FlatpakHelperGetRevokefsFdFlags; #define FLATPAK_HELPER_GET_REVOKEFS_FD_FLAGS_ALL (FLATPAK_HELPER_GET_REVOKEFS_FD_FLAGS_NO_INTERACTION) typedef enum { FLATPAK_HELPER_INSTALL_BUNDLE_FLAGS_NONE = 0, FLATPAK_HELPER_INSTALL_BUNDLE_FLAGS_NO_INTERACTION = 1 << 0, } FlatpakHelperInstalBundleFlags; #define FLATPAK_HELPER_INSTALL_BUNDLE_FLAGS_ALL (FLATPAK_HELPER_INSTALL_BUNDLE_FLAGS_NO_INTERACTION) typedef enum { FLATPAK_HELPER_DEPLOY_APPSTREAM_FLAGS_NONE = 0, FLATPAK_HELPER_DEPLOY_APPSTREAM_FLAGS_NO_INTERACTION = 1 << 0, } FlatpakHelperDeployAppstreamFlags; #define FLATPAK_HELPER_DEPLOY_APPSTREAM_FLAGS_ALL (FLATPAK_HELPER_DEPLOY_APPSTREAM_FLAGS_NO_INTERACTION) typedef enum { FLATPAK_HELPER_REMOVE_LOCAL_REF_FLAGS_NONE = 0, FLATPAK_HELPER_REMOVE_LOCAL_REF_FLAGS_NO_INTERACTION = 1 << 0, } FlatpakHelperRemoveLocalRefFlags; #define FLATPAK_HELPER_REMOVE_LOCAL_REF_FLAGS_ALL (FLATPAK_HELPER_REMOVE_LOCAL_REF_FLAGS_NO_INTERACTION) typedef enum { FLATPAK_HELPER_PRUNE_LOCAL_REPO_FLAGS_NONE = 0, FLATPAK_HELPER_PRUNE_LOCAL_REPO_FLAGS_NO_INTERACTION = 1 << 0, } FlatpakHelperPruneLocalRepoFlags; #define FLATPAK_HELPER_PRUNE_LOCAL_REPO_FLAGS_ALL (FLATPAK_HELPER_PRUNE_LOCAL_REPO_FLAGS_NO_INTERACTION) typedef enum { FLATPAK_HELPER_RUN_TRIGGERS_FLAGS_NONE = 0, FLATPAK_HELPER_RUN_TRIGGERS_FLAGS_NO_INTERACTION = 1 << 0, } FlatpakHelperRunTriggersFlags; #define FLATPAK_HELPER_RUN_TRIGGERS_FLAGS_ALL (FLATPAK_HELPER_RUN_TRIGGERS_FLAGS_NO_INTERACTION) typedef enum { FLATPAK_HELPER_CANCEL_PULL_FLAGS_NONE = 0, FLATPAK_HELPER_CANCEL_PULL_FLAGS_PRESERVE_PULL = 1 << 0, FLATPAK_HELPER_CANCEL_PULL_FLAGS_NO_INTERACTION = 1 << 1, } FlatpakHelperCancelPullFlags; #define FLATPAK_HELPER_CANCEL_PULL_FLAGS_ALL (FLATPAK_HELPER_CANCEL_PULL_FLAGS_PRESERVE_PULL |\ FLATPAK_HELPER_CANCEL_PULL_FLAGS_NO_INTERACTION) typedef enum { FLATPAK_HELPER_ENSURE_REPO_FLAGS_NONE = 0, FLATPAK_HELPER_ENSURE_REPO_FLAGS_NO_INTERACTION = 1 << 0, } FlatpakHelperEnsureRepoFlags; #define FLATPAK_HELPER_ENSURE_REPO_FLAGS_ALL (FLATPAK_HELPER_ENSURE_REPO_FLAGS_NO_INTERACTION) typedef enum { FLATPAK_HELPER_UPDATE_SUMMARY_FLAGS_NONE = 0, FLATPAK_HELPER_UPDATE_SUMMARY_FLAGS_NO_INTERACTION = 1 << 0, } FlatpakHelperUpdateSummaryFlags; #define FLATPAK_HELPER_UPDATE_SUMMARY_FLAGS_ALL (FLATPAK_HELPER_UPDATE_SUMMARY_FLAGS_NO_INTERACTION) typedef enum { FLATPAK_HELPER_GENERATE_OCI_SUMMARY_FLAGS_NONE = 0, FLATPAK_HELPER_GENERATE_OCI_SUMMARY_FLAGS_NO_INTERACTION = 1 << 0, } FlatpakHelperGenerateOciSummaryFlags; #define FLATPAK_HELPER_GENERATE_OCI_SUMMARY_FLAGS_ALL (FLATPAK_HELPER_GENERATE_OCI_SUMMARY_FLAGS_NO_INTERACTION) typedef enum { FLATPAK_PULL_FLAGS_NONE = 0, FLATPAK_PULL_FLAGS_DOWNLOAD_EXTRA_DATA = 1 << 0, FLATPAK_PULL_FLAGS_SIDELOAD_EXTRA_DATA = 1 << 1, FLATPAK_PULL_FLAGS_ALLOW_DOWNGRADE = 1 << 2, FLATPAK_PULL_FLAGS_NO_STATIC_DELTAS = 1 << 3, } FlatpakPullFlags; typedef enum { FLATPAK_DIR_STORAGE_TYPE_DEFAULT = 0, FLATPAK_DIR_STORAGE_TYPE_HARD_DISK, FLATPAK_DIR_STORAGE_TYPE_SDCARD, FLATPAK_DIR_STORAGE_TYPE_MMC, FLATPAK_DIR_STORAGE_TYPE_NETWORK, } FlatpakDirStorageType; typedef enum { FIND_MATCHING_REFS_FLAGS_NONE = 0, FIND_MATCHING_REFS_FLAGS_KEEP_REMOTE = (1 << 0), FIND_MATCHING_REFS_FLAGS_FUZZY = (1 << 1), } FindMatchingRefsFlags; GQuark flatpak_dir_error_quark (void); /** * FLATPAK_DEPLOY_DATA_GVARIANT_FORMAT: * * s - origin * s - commit * as - subpaths * t - installed size * a{sv} - Metadata */ #define FLATPAK_DEPLOY_DATA_GVARIANT_STRING "(ssasta{sv})" #define FLATPAK_DEPLOY_DATA_GVARIANT_FORMAT G_VARIANT_TYPE (FLATPAK_DEPLOY_DATA_GVARIANT_STRING) GPtrArray * flatpak_get_system_base_dir_locations (GCancellable *cancellable, GError **error); GFile * flatpak_get_system_default_base_dir_location (void); GFile * flatpak_get_user_base_dir_location (void); GKeyFile * flatpak_load_override_keyfile (const char *app_id, gboolean user, GError **error); FlatpakContext *flatpak_load_override_file (const char *app_id, gboolean user, GError **error); gboolean flatpak_save_override_keyfile (GKeyFile *metakey, const char *app_id, gboolean user, GError **error); gboolean flatpak_remove_override_keyfile (const char *app_id, gboolean user, GError **error); int flatpak_deploy_data_get_version (GVariant *deploy_data); const char * flatpak_deploy_data_get_origin (GVariant *deploy_data); const char * flatpak_deploy_data_get_commit (GVariant *deploy_data); const char ** flatpak_deploy_data_get_subpaths (GVariant *deploy_data); guint64 flatpak_deploy_data_get_installed_size (GVariant *deploy_data); const char * flatpak_deploy_data_get_alt_id (GVariant *deploy_data); const char * flatpak_deploy_data_get_eol (GVariant *deploy_data); const char * flatpak_deploy_data_get_eol_rebase (GVariant *deploy_data); const char * flatpak_deploy_data_get_runtime (GVariant *deploy_data); const char * flatpak_deploy_data_get_appdata_name (GVariant *deploy_data); const char * flatpak_deploy_data_get_appdata_summary (GVariant *deploy_data); const char * flatpak_deploy_data_get_appdata_version (GVariant *deploy_data); const char * flatpak_deploy_data_get_appdata_license (GVariant *deploy_data); GFile * flatpak_deploy_get_dir (FlatpakDeploy *deploy); GVariant * flatpak_load_deploy_data (GFile *deploy_dir, const char *ref, int required_version, GCancellable *cancellable, GError **error); GVariant * flatpak_deploy_get_deploy_data (FlatpakDeploy *deploy, int required_version, GCancellable *cancellable, GError **error); GFile * flatpak_deploy_get_files (FlatpakDeploy *deploy); FlatpakContext *flatpak_deploy_get_overrides (FlatpakDeploy *deploy); GKeyFile * flatpak_deploy_get_metadata (FlatpakDeploy *deploy); FlatpakDir * flatpak_dir_new (GFile *basedir, gboolean user); FlatpakDir * flatpak_dir_clone (FlatpakDir *self); FlatpakDir *flatpak_dir_get_user (void); FlatpakDir *flatpak_dir_get_system_default (void); GPtrArray *flatpak_dir_get_system_list (GCancellable *cancellable, GError **error); FlatpakDir *flatpak_dir_get_system_by_id (const char *id, GCancellable *cancellable, GError **error); gboolean flatpak_dir_is_user (FlatpakDir *self); void flatpak_dir_set_no_system_helper (FlatpakDir *self, gboolean no_system_helper); void flatpak_dir_set_no_interaction (FlatpakDir *self, gboolean no_interaction); gboolean flatpak_dir_get_no_interaction (FlatpakDir *self); GFile * flatpak_dir_get_path (FlatpakDir *self); GFile * flatpak_dir_get_changed_path (FlatpakDir *self); const char *flatpak_dir_get_id (FlatpakDir *self); char *flatpak_dir_get_display_name (FlatpakDir *self); char * flatpak_dir_get_name (FlatpakDir *self); const char *flatpak_dir_get_name_cached (FlatpakDir *self); gint flatpak_dir_get_priority (FlatpakDir *self); FlatpakDirStorageType flatpak_dir_get_storage_type (FlatpakDir *self); GFile * flatpak_dir_get_deploy_dir (FlatpakDir *self, const char *ref); char * flatpak_dir_get_deploy_subdir (FlatpakDir *self, const char *checksum, const char * const * subpaths); GFile * flatpak_dir_get_unmaintained_extension_dir (FlatpakDir *self, const char *name, const char *arch, const char *branch); GVariant * flatpak_dir_get_deploy_data (FlatpakDir *dir, const char *ref, int required_version, GCancellable *cancellable, GError **error); char * flatpak_dir_get_origin (FlatpakDir *self, const char *ref, GCancellable *cancellable, GError **error); GFile * flatpak_dir_get_exports_dir (FlatpakDir *self); GFile * flatpak_dir_get_removed_dir (FlatpakDir *self); GFile * flatpak_dir_get_if_deployed (FlatpakDir *self, const char *ref, const char *checksum, GCancellable *cancellable); GFile * flatpak_dir_get_unmaintained_extension_dir_if_exists (FlatpakDir *self, const char *name, const char *arch, const char *branch, GCancellable *cancellable); char ** flatpak_dir_search_for_local_dependency (FlatpakDir *self, const char *runtime_ref, GCancellable *cancellable, GError **error); char ** flatpak_dir_search_for_dependency (FlatpakDir *self, const char *runtime_ref, GCancellable *cancellable, GError **error); char * flatpak_dir_find_remote_ref (FlatpakDir *self, const char *remote, const char *name, const char *opt_branch, const char *opt_default_branch, const char *opt_arch, FlatpakKinds kinds, FlatpakKinds *out_kind, GCancellable *cancellable, GError **error); char ** flatpak_dir_find_remote_refs (FlatpakDir *self, const char *remote, const char *name, const char *opt_branch, const char *opt_default_branch, const char *opt_arch, const char *opt_default_arch, FlatpakKinds kinds, FindMatchingRefsFlags flags, GCancellable *cancellable, GError **error); char ** flatpak_dir_find_local_refs (FlatpakDir *self, const char *remote, const char *name, const char *opt_branch, const char *opt_default_branch, const char *opt_arch, const char *opt_default_arch, FlatpakKinds kinds, FindMatchingRefsFlags flags, GCancellable *cancellable, GError **error); char * flatpak_dir_find_installed_ref (FlatpakDir *self, const char *opt_name, const char *opt_branch, const char *opt_arch, FlatpakKinds kinds, FlatpakKinds *out_kind, GError **error); char ** flatpak_dir_find_installed_refs (FlatpakDir *self, const char *opt_name, const char *opt_branch, const char *opt_arch, FlatpakKinds kinds, FindMatchingRefsFlags flags, GError **error); FlatpakDeploy *flatpak_dir_load_deployed (FlatpakDir *self, const char *ref, const char *checksum, GCancellable *cancellable, GError **error); char * flatpak_dir_load_override (FlatpakDir *dir, const char *app_id, gsize *length, GError **error); OstreeRepo *flatpak_dir_get_repo (FlatpakDir *self); gboolean flatpak_dir_ensure_path (FlatpakDir *self, GCancellable *cancellable, GError **error); gboolean flatpak_dir_use_child_repo (FlatpakDir *self); gboolean flatpak_dir_ensure_system_child_repo (FlatpakDir *self, GError **error); gboolean flatpak_dir_recreate_repo (FlatpakDir *self, GCancellable *cancellable, GError **error); gboolean flatpak_dir_ensure_repo (FlatpakDir *self, GCancellable *cancellable, GError **error); gboolean flatpak_dir_maybe_ensure_repo (FlatpakDir *self, GCancellable *cancellable, GError **error); char * flatpak_dir_get_config (FlatpakDir *self, const char *key, GError **error); gboolean flatpak_dir_set_config (FlatpakDir *self, const char *key, const char *value, GError **error); gboolean flatpak_dir_mark_changed (FlatpakDir *self, GError **error); gboolean flatpak_dir_remove_appstream (FlatpakDir *self, const char *remote, GCancellable *cancellable, GError **error); gboolean flatpak_dir_deploy_appstream (FlatpakDir *self, const char *remote, const char *arch, gboolean *out_changed, GCancellable *cancellable, GError **error); gboolean flatpak_dir_update_appstream (FlatpakDir *self, const char *remote, const char *arch, gboolean *out_changed, OstreeAsyncProgress *progress, GCancellable *cancellable, GError **error); gboolean flatpak_dir_pull (FlatpakDir *self, FlatpakRemoteState *state, const char *ref, const char *opt_rev, const OstreeRepoFinderResult * const *results, const char **subpaths, OstreeRepo *repo, FlatpakPullFlags flatpak_flags, OstreeRepoPullFlags flags, OstreeAsyncProgress *progress, GCancellable *cancellable, GError **error); gboolean flatpak_dir_pull_untrusted_local (FlatpakDir *self, const char *src_path, const char *remote_name, const char *ref, const char **subpaths, OstreeAsyncProgress *progress, GCancellable *cancellable, GError **error); gboolean flatpak_dir_list_refs_for_name (FlatpakDir *self, const char *kind, const char *name, char ***refs, GCancellable *cancellable, GError **error); gboolean flatpak_dir_list_refs (FlatpakDir *self, const char *kind, char ***refs, GCancellable *cancellable, GError **error); GVariant * flatpak_dir_read_latest_commit (FlatpakDir *self, const char *remote, const char *ref, char **out_checksum, GCancellable *cancellable, GError **error); char * flatpak_dir_read_latest (FlatpakDir *self, const char *remote, const char *ref, char **out_alt_id, GCancellable *cancellable, GError **error); char * flatpak_dir_read_active (FlatpakDir *self, const char *ref, GCancellable *cancellable); gboolean flatpak_dir_set_active (FlatpakDir *self, const char *ref, const char *checksum, GCancellable *cancellable, GError **error); char * flatpak_dir_current_ref (FlatpakDir *self, const char *name, GCancellable *cancellable); gboolean flatpak_dir_drop_current_ref (FlatpakDir *self, const char *name, GCancellable *cancellable, GError **error); gboolean flatpak_dir_make_current_ref (FlatpakDir *self, const char *ref, GCancellable *cancellable, GError **error); gboolean flatpak_dir_list_deployed (FlatpakDir *self, const char *ref, char ***deployed_checksums, GCancellable *cancellable, GError **error); gboolean flatpak_dir_lock (FlatpakDir *self, GLnxLockFile *lockfile, GCancellable *cancellable, GError **error); gboolean flatpak_dir_repo_lock (FlatpakDir *self, GLnxLockFile *lockfile, gboolean exclusive, GCancellable *cancellable, GError **error); gboolean flatpak_dir_deploy (FlatpakDir *self, const char *origin, const char *ref, const char *checksum_or_latest, const char * const * subpaths, GVariant *old_deploy_data, GCancellable *cancellable, GError **error); gboolean flatpak_dir_deploy_update (FlatpakDir *self, const char *ref, const char *checksum, const char **opt_subpaths, GCancellable *cancellable, GError **error); gboolean flatpak_dir_deploy_install (FlatpakDir *self, const char *ref, const char *origin, const char **subpaths, gboolean reinstall, GCancellable *cancellable, GError **error); gboolean flatpak_dir_install (FlatpakDir *self, gboolean no_pull, gboolean no_deploy, gboolean no_static_deltas, gboolean reinstall, gboolean app_hint, FlatpakRemoteState *state, const char *ref, const char *opt_commit, const char **subpaths, OstreeAsyncProgress *progress, GCancellable *cancellable, GError **error); char *flatpak_dir_ensure_bundle_remote (FlatpakDir *self, GFile *file, GBytes *extra_gpg_data, char **out_ref, char **out_commit, char **out_metadata, gboolean *out_created_remote, GCancellable *cancellable, GError **error); gboolean flatpak_dir_install_bundle (FlatpakDir *self, GFile *file, const char *remote, char **out_ref, GCancellable *cancellable, GError **error); gboolean flatpak_dir_needs_update_for_commit_and_subpaths (FlatpakDir *self, const char *remote, const char *ref, const char *target_commit, const char **opt_subpaths); char * flatpak_dir_check_for_update (FlatpakDir *self, FlatpakRemoteState *state, const char *ref, const char *checksum_or_latest, const char **opt_subpaths, gboolean no_pull, OstreeRepoFinderResult ***out_results, GCancellable *cancellable, GError **error); gboolean flatpak_dir_update (FlatpakDir *self, gboolean no_pull, gboolean no_deploy, gboolean no_static_deltas, gboolean allow_downgrade, gboolean app_hint, gboolean install_hint, FlatpakRemoteState *state, const char *ref, const char *checksum_or_latest, const OstreeRepoFinderResult * const *results, const char **opt_subpaths, OstreeAsyncProgress *progress, GCancellable *cancellable, GError **error); gboolean flatpak_dir_uninstall (FlatpakDir *self, const char *ref, FlatpakHelperUninstallFlags flags, GCancellable *cancellable, GError **error); gboolean flatpak_dir_undeploy (FlatpakDir *self, const char *ref, const char *checksum, gboolean is_update, gboolean force_remove, GCancellable *cancellable, GError **error); gboolean flatpak_dir_undeploy_all (FlatpakDir *self, const char *ref, gboolean force_remove, gboolean *was_deployed_out, GCancellable *cancellable, GError **error); gboolean flatpak_dir_remove_ref (FlatpakDir *self, const char *remote_name, const char *ref, GCancellable *cancellable, GError **error); gboolean flatpak_dir_update_exports (FlatpakDir *self, const char *app, GCancellable *cancellable, GError **error); gboolean flatpak_dir_prune (FlatpakDir *self, GCancellable *cancellable, GError **error); gboolean flatpak_dir_run_triggers (FlatpakDir *self, GCancellable *cancellable, GError **error); gboolean flatpak_dir_update_summary (FlatpakDir *self, GCancellable *cancellable, GError **error); gboolean flatpak_dir_cleanup_removed (FlatpakDir *self, GCancellable *cancellable, GError **error); gboolean flatpak_dir_cleanup_undeployed_refs (FlatpakDir *self, GCancellable *cancellable, GError **error); gboolean flatpak_dir_collect_deployed_refs (FlatpakDir *self, const char *type, const char *name_prefix, const char *branch, const char *arch, GHashTable *hash, GCancellable *cancellable, GError **error); gboolean flatpak_dir_collect_unmaintained_refs (FlatpakDir *self, const char *name_prefix, const char *arch, const char *branch, GHashTable *hash, GCancellable *cancellable, GError **error); gboolean flatpak_dir_remote_has_deploys (FlatpakDir *self, const char *remote); char *flatpak_dir_create_origin_remote (FlatpakDir *self, const char *url, const char *id, const char *title, const char *main_ref, GBytes *gpg_data, const char *collection_id, GCancellable *cancellable, GError **error); void flatpak_dir_prune_origin_remote (FlatpakDir *self, const char *remote); gboolean flatpak_dir_create_remote_for_ref_file (FlatpakDir *self, GKeyFile *keyfile, const char *default_arch, char **remote_name_out, char **collection_id_out, char **ref_out, GError **error); gboolean flatpak_dir_create_suggested_remote_for_ref_file (FlatpakDir *self, GBytes *data, GError **error); GKeyFile * flatpak_dir_parse_repofile (FlatpakDir *self, const char *remote_name, gboolean from_ref, GKeyFile *keyfile, GBytes **gpg_data_out, GCancellable *cancellable, GError **error); char *flatpak_dir_find_remote_by_uri (FlatpakDir *self, const char *uri, const char *collection_id); gboolean flatpak_dir_has_remote (FlatpakDir *self, const char *remote_name, GError **error); char **flatpak_dir_list_remotes (FlatpakDir *self, GCancellable *cancellable, GError **error); char **flatpak_dir_list_enumerated_remotes (FlatpakDir *self, GCancellable *cancellable, GError **error); gboolean flatpak_dir_modify_remote (FlatpakDir *self, const char *remote_name, GKeyFile *config, GBytes *gpg_data, GCancellable *cancellable, GError **error); gboolean flatpak_dir_remove_remote (FlatpakDir *self, gboolean force_remove, const char *remote_name, GCancellable *cancellable, GError **error); char *flatpak_dir_get_remote_title (FlatpakDir *self, const char *remote_name); char *flatpak_dir_get_remote_comment (FlatpakDir *self, const char *remote_name); char *flatpak_dir_get_remote_description (FlatpakDir *self, const char *remote_name); char *flatpak_dir_get_remote_homepage (FlatpakDir *self, const char *remote_name); char *flatpak_dir_get_remote_icon (FlatpakDir *self, const char *remote_name); char *flatpak_dir_get_remote_collection_id (FlatpakDir *self, const char *remote_name); char *flatpak_dir_get_remote_main_ref (FlatpakDir *self, const char *remote_name); gboolean flatpak_dir_get_remote_oci (FlatpakDir *self, const char *remote_name); char *flatpak_dir_get_remote_default_branch (FlatpakDir *self, const char *remote_name); int flatpak_dir_get_remote_prio (FlatpakDir *self, const char *remote_name); gboolean flatpak_dir_get_remote_noenumerate (FlatpakDir *self, const char *remote_name); gboolean flatpak_dir_get_remote_nodeps (FlatpakDir *self, const char *remote_name); gboolean flatpak_dir_get_remote_disabled (FlatpakDir *self, const char *remote_name); gboolean flatpak_dir_list_remote_refs (FlatpakDir *self, FlatpakRemoteState *state, GHashTable **refs, GCancellable *cancellable, GError **error); gboolean flatpak_dir_list_all_remote_refs (FlatpakDir *self, FlatpakRemoteState *state, GHashTable **out_all_refs, GCancellable *cancellable, GError **error); GVariant * flatpak_dir_fetch_remote_commit (FlatpakDir *self, const char *remote_name, const char *ref, const char *opt_commit, char **out_commit, GCancellable *cancellable, GError **error); gboolean flatpak_dir_update_remote_configuration (FlatpakDir *self, const char *remote, GCancellable *cancellable, GError **error); gboolean flatpak_dir_update_remote_configuration_for_state (FlatpakDir *self, FlatpakRemoteState *remote_state, gboolean dry_run, gboolean *has_changed_out, GCancellable *cancellable, GError **error); FlatpakRemoteState * flatpak_dir_get_remote_state (FlatpakDir *self, const char *remote, GCancellable *cancellable, GError **error); FlatpakRemoteState * flatpak_dir_get_remote_state_for_summary (FlatpakDir *self, const char *remote, GBytes *opt_summary, GBytes *opt_summary_sig, GCancellable *cancellable, GError **error); gboolean flatpak_dir_remote_make_oci_summary (FlatpakDir *self, const char *remote, GBytes **out_summary, GCancellable *cancellable, GError **error); FlatpakRemoteState * flatpak_dir_get_remote_state_optional (FlatpakDir *self, const char *remote, GCancellable *cancellable, GError **error); FlatpakRemoteState * flatpak_dir_get_remote_state_local_only (FlatpakDir *self, const char *remote, GCancellable *cancellable, GError **error); GPtrArray * flatpak_dir_find_remote_related_for_metadata (FlatpakDir *self, FlatpakRemoteState *state, const char *ref, GKeyFile *metakey, GCancellable *cancellable, GError **error); GPtrArray * flatpak_dir_find_remote_related (FlatpakDir *dir, FlatpakRemoteState *state, const char *ref, GCancellable *cancellable, GError **error); GPtrArray * flatpak_dir_find_local_related_for_metadata (FlatpakDir *self, const char *ref, const char *remote_name, GKeyFile *metakey, GCancellable *cancellable, GError **error); GPtrArray * flatpak_dir_find_local_related (FlatpakDir *self, const char *remote_name, const char *ref, gboolean deployed, GCancellable *cancellable, GError **error); gboolean flatpak_dir_find_latest_rev (FlatpakDir *self, FlatpakRemoteState *state, const char *ref, const char *checksum_or_latest, char **out_rev, OstreeRepoFinderResult ***out_results, GCancellable *cancellable, GError **error); typedef struct { /* in */ char *remote; char *ref; char *opt_commit; /* out */ char *resolved_commit; GBytes *resolved_metadata; guint64 download_size; guint64 installed_size; } FlatpakDirResolve; FlatpakDirResolve *flatpak_dir_resolve_new (const char *remote, const char *ref, const char *opt_commit); void flatpak_dir_resolve_free (FlatpakDirResolve *resolve); gboolean flatpak_dir_resolve_p2p_refs (FlatpakDir *self, FlatpakDirResolve **resolves, GCancellable *cancellable, GError **error); char ** flatpak_dir_get_default_locale_languages (FlatpakDir *self); char ** flatpak_dir_get_locale_languages (FlatpakDir *self); char ** flatpak_dir_get_locale_subpaths (FlatpakDir *self); void flatpak_dir_set_source_pid (FlatpakDir *self, pid_t pid); pid_t flatpak_dir_get_source_pid (FlatpakDir *self); #endif /* __FLATPAK_DIR_H__ */