/*
* 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 .
*
* Authors:
* Alexander Larsson
*/
#if !defined(__FLATPAK_H_INSIDE__) && !defined(FLATPAK_COMPILATION)
#error "Only can be included directly."
#endif
#ifndef __FLATPAK_TRANSACTION_H__
#define __FLATPAK_TRANSACTION_H__
#include
#include
G_BEGIN_DECLS
#define FLATPAK_TYPE_TRANSACTION flatpak_transaction_get_type ()
#define FLATPAK_TYPE_TRANSACTION_PROGRESS flatpak_transaction_progress_get_type ()
#define FLATPAK_TYPE_TRANSACTION_OPERATION flatpak_transaction_operation_get_type ()
/**
* FlatpakTransactionOperationType
* @FLATPAK_TRANSACTION_OPERATION_INSTALL: Install a ref from a remote
* @FLATPAK_TRANSACTION_OPERATION_UPDATE: Update an installed ref
* @FLATPAK_TRANSACTION_OPERATION_INSTALL_BUNDLE: Install a bundle from a file
* @FLATPAK_TRANSACTION_OPERATION_UNINSTALL: Uninstall a ref
* @FLATPAK_TRANSACTION_OPERATION_LAST_TYPE: The (currently) last operation type
*
* The type of a #FlatpakTransactionOperation.
*/
typedef enum {
FLATPAK_TRANSACTION_OPERATION_INSTALL,
FLATPAK_TRANSACTION_OPERATION_UPDATE,
FLATPAK_TRANSACTION_OPERATION_INSTALL_BUNDLE,
FLATPAK_TRANSACTION_OPERATION_UNINSTALL,
FLATPAK_TRANSACTION_OPERATION_LAST_TYPE
} FlatpakTransactionOperationType;
/**
* FlatpakTransactionErrorDetails
* @FLATPAK_TRANSACTION_ERROR_DETAILS_NON_FATAL: The operation failure was not fatal
*
* The details for #FlatpakTransaction::operation-error.
*/
typedef enum {
FLATPAK_TRANSACTION_ERROR_DETAILS_NON_FATAL = 1 << 0,
} FlatpakTransactionErrorDetails;
/**
* FlatpakTransactionResult
* @FLATPAK_TRANSACTION_RESULT_NO_CHANGE: The update caused no changes
*
* The details for #FlatpakTransaction::operation-done.
*/
typedef enum {
FLATPAK_TRANSACTION_RESULT_NO_CHANGE = 1 << 0,
} FlatpakTransactionResult;
/**
* FlatpakTransactionRemoteReason
* @FLATPAK_TRANSACTION_REMOTE_GENERIC_REPO: The remote specified in the flatpakref has other apps too
* @FLATPAK_TRANSACTION_REMOTE_RUNTIME_DEPS: The remote has runtimes needed for the app
*
* The reason for #FlatpakTransaction::add-new-remote.
*/
typedef enum {
FLATPAK_TRANSACTION_REMOTE_GENERIC_REPO,
FLATPAK_TRANSACTION_REMOTE_RUNTIME_DEPS,
} FlatpakTransactionRemoteReason;
FLATPAK_EXTERN
G_DECLARE_FINAL_TYPE (FlatpakTransactionProgress, flatpak_transaction_progress, FLATPAK, TRANSACTION_PROGRESS, GObject)
FLATPAK_EXTERN
G_DECLARE_FINAL_TYPE (FlatpakTransactionOperation, flatpak_transaction_operation, FLATPAK, TRANSACTION_OPERATION, GObject)
FLATPAK_EXTERN
G_DECLARE_DERIVABLE_TYPE (FlatpakTransaction, flatpak_transaction, FLATPAK, TRANSACTION, GObject)
struct _FlatpakTransactionClass
{
GObjectClass parent_class;
void (*new_operation) (FlatpakTransaction *transaction,
FlatpakTransactionOperation *operation,
FlatpakTransactionProgress *progress);
void (*operation_done) (FlatpakTransaction *transaction,
FlatpakTransactionOperation *operation,
const char *commit,
FlatpakTransactionResult details);
gboolean (*operation_error) (FlatpakTransaction *transaction,
FlatpakTransactionOperation *operation,
const GError *error,
FlatpakTransactionErrorDetails detail);
int (*choose_remote_for_ref) (FlatpakTransaction *transaction,
const char *for_ref,
const char *runtime_ref,
const char * const *remotes);
void (*end_of_lifed) (FlatpakTransaction *transaction,
const char *ref,
const char *reason,
const char *rebase);
gboolean (*ready) (FlatpakTransaction *transaction);
gboolean (*add_new_remote) (FlatpakTransaction *transaction,
FlatpakTransactionRemoteReason reason,
const char *from_id,
const char *remote_name,
const char *url);
gboolean (*run) (FlatpakTransaction *transaction,
GCancellable *cancellable,
GError **error);
gboolean (*end_of_lifed_with_rebase) (FlatpakTransaction *transaction,
const char *remote,
const char *ref,
const char *reason,
const char *rebased_to_ref,
const char **previous_ids);
gboolean (*webflow_start) (FlatpakTransaction *transaction,
const char *remote,
const char *url,
GVariant *options,
guint id);
void (*webflow_done) (FlatpakTransaction *transaction,
GVariant *options,
guint id);
gboolean (*basic_auth_start) (FlatpakTransaction *transaction,
const char *remote,
const char *realm,
GVariant *options,
guint id);
void (*install_authenticator) (FlatpakTransaction *transaction,
const char *remote,
const char *authenticator_ref);
gboolean (*ready_pre_auth) (FlatpakTransaction *transaction);
gpointer padding[3];
};
FLATPAK_EXTERN
FlatpakTransaction *flatpak_transaction_new_for_installation (FlatpakInstallation *installation,
GCancellable *cancellable,
GError **error);
FLATPAK_EXTERN
void flatpak_transaction_progress_set_update_frequency (FlatpakTransactionProgress *self,
guint update_interval);
FLATPAK_EXTERN
char * flatpak_transaction_progress_get_status (FlatpakTransactionProgress *self);
FLATPAK_EXTERN
gboolean flatpak_transaction_progress_get_is_estimating (FlatpakTransactionProgress *self);
FLATPAK_EXTERN
int flatpak_transaction_progress_get_progress (FlatpakTransactionProgress *self);
FLATPAK_EXTERN
guint64 flatpak_transaction_progress_get_bytes_transferred (FlatpakTransactionProgress *self);
FLATPAK_EXTERN
guint64 flatpak_transaction_progress_get_start_time (FlatpakTransactionProgress *self);
FLATPAK_EXTERN
FlatpakTransactionOperationType flatpak_transaction_operation_get_operation_type (FlatpakTransactionOperation *self);
FLATPAK_EXTERN
const char * flatpak_transaction_operation_get_ref (FlatpakTransactionOperation *self);
FLATPAK_EXTERN
GPtrArray * flatpak_transaction_operation_get_related_to_ops (FlatpakTransactionOperation *self);
FLATPAK_EXTERN
gboolean flatpak_transaction_operation_get_is_skipped (FlatpakTransactionOperation *self);
FLATPAK_EXTERN
const char * flatpak_transaction_operation_get_remote (FlatpakTransactionOperation *self);
FLATPAK_EXTERN
GFile * flatpak_transaction_operation_get_bundle_path (FlatpakTransactionOperation *self);
FLATPAK_EXTERN
const char * flatpak_transaction_operation_get_commit (FlatpakTransactionOperation *self);
FLATPAK_EXTERN
guint64 flatpak_transaction_operation_get_download_size (FlatpakTransactionOperation *self);
FLATPAK_EXTERN
guint64 flatpak_transaction_operation_get_installed_size (FlatpakTransactionOperation *self);
FLATPAK_EXTERN
GKeyFile * flatpak_transaction_operation_get_metadata (FlatpakTransactionOperation *self);
FLATPAK_EXTERN
GKeyFile * flatpak_transaction_operation_get_old_metadata (FlatpakTransactionOperation *self);
FLATPAK_EXTERN
const char * const * flatpak_transaction_operation_get_subpaths (FlatpakTransactionOperation *self);
FLATPAK_EXTERN
gboolean flatpak_transaction_operation_get_requires_authentication (FlatpakTransactionOperation *self);
FLATPAK_EXTERN
const char * flatpak_transaction_operation_type_to_string (FlatpakTransactionOperationType kind);
FLATPAK_EXTERN
void flatpak_transaction_set_no_pull (FlatpakTransaction *self,
gboolean no_pull);
FLATPAK_EXTERN
gboolean flatpak_transaction_get_no_pull (FlatpakTransaction *self);
FLATPAK_EXTERN
void flatpak_transaction_set_no_deploy (FlatpakTransaction *self,
gboolean no_deploy);
FLATPAK_EXTERN
gboolean flatpak_transaction_get_no_deploy (FlatpakTransaction *self);
FLATPAK_EXTERN
void flatpak_transaction_set_disable_static_deltas (FlatpakTransaction *self,
gboolean disable_static_deltas);
FLATPAK_EXTERN
void flatpak_transaction_set_disable_prune (FlatpakTransaction *self,
gboolean disable_prune);
FLATPAK_EXTERN
void flatpak_transaction_set_disable_dependencies (FlatpakTransaction *self,
gboolean disable_dependencies);
FLATPAK_EXTERN
void flatpak_transaction_set_disable_related (FlatpakTransaction *self,
gboolean disable_related);
FLATPAK_EXTERN
void flatpak_transaction_set_disable_auto_pin (FlatpakTransaction *self,
gboolean disable_pin);
FLATPAK_EXTERN
void flatpak_transaction_set_reinstall (FlatpakTransaction *self,
gboolean reinstall);
FLATPAK_EXTERN
gboolean flatpak_transaction_get_no_interaction (FlatpakTransaction *self);
FLATPAK_EXTERN
void flatpak_transaction_set_no_interaction (FlatpakTransaction *self,
gboolean no_interaction);
FLATPAK_EXTERN
void flatpak_transaction_set_force_uninstall (FlatpakTransaction *self,
gboolean force_uninstall);
FLATPAK_EXTERN
void flatpak_transaction_set_default_arch (FlatpakTransaction *self,
const char *arch);
FLATPAK_EXTERN
void flatpak_transaction_set_parent_window (FlatpakTransaction *self,
const char *parent_window);
FLATPAK_EXTERN
const char * flatpak_transaction_get_parent_window (FlatpakTransaction *self);
FLATPAK_EXTERN
void flatpak_transaction_set_include_unused_uninstall_ops (FlatpakTransaction *self,
gboolean include_unused_uninstall_ops);
FLATPAK_EXTERN
gboolean flatpak_transaction_get_include_unused_uninstall_ops (FlatpakTransaction *self);
FLATPAK_EXTERN
void flatpak_transaction_set_auto_install_sdk (FlatpakTransaction *self,
gboolean auto_install_sdk);
FLATPAK_EXTERN
gboolean flatpak_transaction_get_auto_install_sdk (FlatpakTransaction *self);
FLATPAK_EXTERN
void flatpak_transaction_set_auto_install_debug (FlatpakTransaction *self,
gboolean auto_install_debug);
FLATPAK_EXTERN
gboolean flatpak_transaction_get_auto_install_debug (FlatpakTransaction *self);
FLATPAK_EXTERN
void flatpak_transaction_add_dependency_source (FlatpakTransaction *self,
FlatpakInstallation *installation);
FLATPAK_EXTERN
void flatpak_transaction_add_sideload_repo (FlatpakTransaction *self,
const char *path);
FLATPAK_EXTERN
void flatpak_transaction_add_default_dependency_sources (FlatpakTransaction *self);
FLATPAK_EXTERN
gboolean flatpak_transaction_run (FlatpakTransaction *transaction,
GCancellable *cancellable,
GError **error);
FLATPAK_EXTERN
FlatpakTransactionOperation *flatpak_transaction_get_current_operation (FlatpakTransaction *self);
FLATPAK_EXTERN
FlatpakTransactionOperation *flatpak_transaction_get_operation_for_ref (FlatpakTransaction *self,
const char *remote,
const char *ref,
GError **error);
FLATPAK_EXTERN
FlatpakInstallation *flatpak_transaction_get_installation (FlatpakTransaction *self);
FLATPAK_EXTERN
GList *flatpak_transaction_get_operations (FlatpakTransaction *self);
FLATPAK_EXTERN
void flatpak_transaction_abort_webflow (FlatpakTransaction *self,
guint id);
FLATPAK_EXTERN
void flatpak_transaction_complete_basic_auth (FlatpakTransaction *self,
guint id,
const char *user,
const char *password,
GVariant *options);
FLATPAK_EXTERN
gboolean flatpak_transaction_add_install (FlatpakTransaction *self,
const char *remote,
const char *ref,
const char **subpaths,
GError **error);
FLATPAK_EXTERN
gboolean flatpak_transaction_add_rebase (FlatpakTransaction *self,
const char *remote,
const char *ref,
const char **subpaths,
const char **previous_ids,
GError **error);
FLATPAK_EXTERN
gboolean flatpak_transaction_add_rebase_and_uninstall (FlatpakTransaction *self,
const char *remote,
const char *new_ref,
const char *old_ref,
const char **subpaths,
const char **previous_ids,
GError **error);
FLATPAK_EXTERN
gboolean flatpak_transaction_add_install_bundle (FlatpakTransaction *self,
GFile *file,
GBytes *gpg_data,
GError **error);
FLATPAK_EXTERN
gboolean flatpak_transaction_add_install_flatpakref (FlatpakTransaction *self,
GBytes *flatpakref_data,
GError **error);
FLATPAK_EXTERN
gboolean flatpak_transaction_add_update (FlatpakTransaction *self,
const char *ref,
const char **subpaths,
const char *commit,
GError **error);
FLATPAK_EXTERN
gboolean flatpak_transaction_add_uninstall (FlatpakTransaction *self,
const char *ref,
GError **error);
FLATPAK_EXTERN
gboolean flatpak_transaction_is_empty (FlatpakTransaction *self);
G_END_DECLS
#endif /* __FLATPAK_TRANSACTION_H__ */