diff options
author | Alexander Larsson <alexl@redhat.com> | 2016-01-19 15:05:06 +0100 |
---|---|---|
committer | Alexander Larsson <alexl@redhat.com> | 2016-01-19 15:05:06 +0100 |
commit | 2bede3495290febc1d81e0e4d700ae641ff3b034 (patch) | |
tree | 916ecd38e7e0c972f216f1a36359936ff434525a /lib | |
parent | 1a4f257cbd3eaade978c27bd09286128b5d9fb26 (diff) | |
download | xdg-app-2bede3495290febc1d81e0e4d700ae641ff3b034.tar.gz |
lib: Add getter for installed size on InstalledRef
Diffstat (limited to 'lib')
-rw-r--r-- | lib/test-lib.c | 15 | ||||
-rw-r--r-- | lib/xdg-app-installation.c | 8 | ||||
-rw-r--r-- | lib/xdg-app-installed-ref-private.h | 3 | ||||
-rw-r--r-- | lib/xdg-app-installed-ref.c | 31 | ||||
-rw-r--r-- | lib/xdg-app-installed-ref.h | 15 |
5 files changed, 56 insertions, 16 deletions
diff --git a/lib/test-lib.c b/lib/test-lib.c index 5e55f51..6b2a14a 100644 --- a/lib/test-lib.c +++ b/lib/test-lib.c @@ -104,7 +104,7 @@ main (int argc, char *argv[]) for (i = 0; i < updates->len; i++) { XdgAppInstalledRef *ref = g_ptr_array_index(updates,i); - g_print ("%d %s %s %s %s %s %s %s %d\n", + g_print ("%d %s %s %s %s %s %s %s %d %"G_GUINT64_FORMAT"\n", xdg_app_ref_get_kind (XDG_APP_REF(ref)), xdg_app_ref_get_name (XDG_APP_REF(ref)), xdg_app_ref_get_arch (XDG_APP_REF(ref)), @@ -113,7 +113,8 @@ main (int argc, char *argv[]) xdg_app_installed_ref_get_latest_commit (ref), xdg_app_installed_ref_get_origin (ref), xdg_app_installed_ref_get_deploy_dir (ref), - xdg_app_installed_ref_get_is_current (ref)); + xdg_app_installed_ref_get_is_current (ref), + xdg_app_installed_ref_get_installed_size (ref)); } } } @@ -128,7 +129,7 @@ main (int argc, char *argv[]) for (i = 0; i < refs->len; i++) { XdgAppInstalledRef *ref = g_ptr_array_index(refs,i); - g_print ("%d %s %s %s %s %s %s %s %d\n", + g_print ("%d %s %s %s %s %s %s %s %d %"G_GUINT64_FORMAT"\n", xdg_app_ref_get_kind (XDG_APP_REF(ref)), xdg_app_ref_get_name (XDG_APP_REF(ref)), xdg_app_ref_get_arch (XDG_APP_REF(ref)), @@ -137,7 +138,8 @@ main (int argc, char *argv[]) xdg_app_installed_ref_get_latest_commit (ref), xdg_app_installed_ref_get_origin (ref), xdg_app_installed_ref_get_deploy_dir (ref), - xdg_app_installed_ref_get_is_current (ref)); + xdg_app_installed_ref_get_is_current (ref), + xdg_app_installed_ref_get_installed_size (ref)); } } @@ -153,7 +155,7 @@ main (int argc, char *argv[]) { XdgAppInstalledRef *app = g_ptr_array_index(apps,i); - g_print ("%d %s %s %s %s %s %s %s %d\n", + g_print ("%d %s %s %s %s %s %s %s %d %"G_GUINT64_FORMAT"\n", xdg_app_ref_get_kind (XDG_APP_REF(app)), xdg_app_ref_get_name (XDG_APP_REF(app)), xdg_app_ref_get_arch (XDG_APP_REF(app)), @@ -162,7 +164,8 @@ main (int argc, char *argv[]) xdg_app_installed_ref_get_latest_commit (app), xdg_app_installed_ref_get_origin (app), xdg_app_installed_ref_get_deploy_dir (app), - xdg_app_installed_ref_get_is_current (app)); + xdg_app_installed_ref_get_is_current (app), + xdg_app_installed_ref_get_installed_size (app)); g_print ("metadata:\n%s\n", xdg_app_installed_ref_load_metadata (app, NULL, NULL)); } } diff --git a/lib/xdg-app-installation.c b/lib/xdg-app-installation.c index 72d5724..67134a7 100644 --- a/lib/xdg-app-installation.c +++ b/lib/xdg-app-installation.c @@ -216,6 +216,7 @@ get_ref (XdgAppInstallation *self, g_autofree char *deploy_path = NULL; g_autofree char *latest_commit = NULL; gboolean is_current = FALSE; + guint64 installed_size = 0; parts = g_strsplit (full_ref, "/", -1); @@ -238,11 +239,18 @@ get_ref (XdgAppInstallation *self, latest_commit = xdg_app_dir_read_latest (priv->dir, origin, full_ref, NULL, NULL); + if (!xdg_app_dir_get_installed_size (priv->dir, + commit, &installed_size, + cancellable, + NULL)) + installed_size = 0; + return xdg_app_installed_ref_new (full_ref, commit, latest_commit, origin, deploy_path, + installed_size, is_current); } diff --git a/lib/xdg-app-installed-ref-private.h b/lib/xdg-app-installed-ref-private.h index fb5ca51..691f490 100644 --- a/lib/xdg-app-installed-ref-private.h +++ b/lib/xdg-app-installed-ref-private.h @@ -33,6 +33,7 @@ XdgAppInstalledRef *xdg_app_installed_ref_new (const char *full_ref, const char *latest_commit, const char *origin, const char *deploy_dir, - gboolean current); + guint64 installed_size, + gboolean current); #endif /* __XDG_APP_INSTALLED_REF_PRIVATE_H__ */ diff --git a/lib/xdg-app-installed-ref.c b/lib/xdg-app-installed-ref.c index 14bf394..9893194 100644 --- a/lib/xdg-app-installed-ref.c +++ b/lib/xdg-app-installed-ref.c @@ -34,6 +34,7 @@ struct _XdgAppInstalledRefPrivate char *origin; char *latest_commit; char *deploy_dir; + guint64 installed_size; }; G_DEFINE_TYPE_WITH_PRIVATE (XdgAppInstalledRef, xdg_app_installed_ref, XDG_APP_TYPE_REF) @@ -44,7 +45,8 @@ enum { PROP_IS_CURRENT, PROP_ORIGIN, PROP_LATEST_COMMIT, - PROP_DEPLOY_DIR + PROP_DEPLOY_DIR, + PROP_INSTALLED_SIZE }; static void @@ -74,6 +76,10 @@ xdg_app_installed_ref_set_property (GObject *object, priv->is_current = g_value_get_boolean (value); break; + case PROP_INSTALLED_SIZE: + priv->installed_size = g_value_get_uint64 (value); + break; + case PROP_ORIGIN: g_clear_pointer (&priv->origin, g_free); priv->origin = g_value_dup_string (value); @@ -110,6 +116,10 @@ xdg_app_installed_ref_get_property (GObject *object, g_value_set_boolean (value, priv->is_current); break; + case PROP_INSTALLED_SIZE: + g_value_set_uint64 (value, priv->installed_size); + break; + case PROP_ORIGIN: g_value_set_string (value, priv->origin); break; @@ -145,6 +155,13 @@ xdg_app_installed_ref_class_init (XdgAppInstalledRefClass *klass) FALSE, G_PARAM_READWRITE)); g_object_class_install_property (object_class, + PROP_INSTALLED_SIZE, + g_param_spec_uint64 ("installed-size", + "", + "", + 0, G_MAXUINT64, 0, + G_PARAM_READWRITE)); + g_object_class_install_property (object_class, PROP_ORIGIN, g_param_spec_string ("origin", "", @@ -204,6 +221,14 @@ xdg_app_installed_ref_get_is_current (XdgAppInstalledRef *self) return priv->is_current; } +guint64 +xdg_app_installed_ref_get_installed_size (XdgAppInstalledRef *self) +{ + XdgAppInstalledRefPrivate *priv = xdg_app_installed_ref_get_instance_private (self); + + return priv->installed_size; +} + char * xdg_app_installed_ref_load_metadata (XdgAppInstalledRef *self, GCancellable *cancellable, @@ -233,7 +258,8 @@ xdg_app_installed_ref_new (const char *full_ref, const char *latest_commit, const char *origin, const char *deploy_dir, - gboolean is_current) + guint64 installed_size, + gboolean is_current) { XdgAppRefKind kind = XDG_APP_REF_KIND_APP; XdgAppInstalledRef *ref; @@ -253,6 +279,7 @@ xdg_app_installed_ref_new (const char *full_ref, "latest-commit", latest_commit, "origin", origin, "is-current", is_current, + "installed-size", installed_size, "deploy-dir", deploy_dir, NULL); diff --git a/lib/xdg-app-installed-ref.h b/lib/xdg-app-installed-ref.h index d97e0f4..94dbbab 100644 --- a/lib/xdg-app-installed-ref.h +++ b/lib/xdg-app-installed-ref.h @@ -48,12 +48,13 @@ typedef struct { G_DEFINE_AUTOPTR_CLEANUP_FUNC(XdgAppInstalledRef, g_object_unref) #endif -XDG_APP_EXTERN const char *xdg_app_installed_ref_get_origin (XdgAppInstalledRef *self); -XDG_APP_EXTERN const char *xdg_app_installed_ref_get_deploy_dir (XdgAppInstalledRef *self); -XDG_APP_EXTERN const char *xdg_app_installed_ref_get_latest_commit (XdgAppInstalledRef *self); -XDG_APP_EXTERN gboolean xdg_app_installed_ref_get_is_current (XdgAppInstalledRef *self); -XDG_APP_EXTERN char *xdg_app_installed_ref_load_metadata (XdgAppInstalledRef *self, - GCancellable *cancellable, - GError **error); +XDG_APP_EXTERN const char *xdg_app_installed_ref_get_origin (XdgAppInstalledRef *self); +XDG_APP_EXTERN guint64 xdg_app_installed_ref_get_installed_size (XdgAppInstalledRef *self); +XDG_APP_EXTERN const char *xdg_app_installed_ref_get_deploy_dir (XdgAppInstalledRef *self); +XDG_APP_EXTERN const char *xdg_app_installed_ref_get_latest_commit (XdgAppInstalledRef *self); +XDG_APP_EXTERN gboolean xdg_app_installed_ref_get_is_current (XdgAppInstalledRef *self); +XDG_APP_EXTERN char *xdg_app_installed_ref_load_metadata (XdgAppInstalledRef *self, + GCancellable *cancellable, + GError **error); #endif /* __XDG_APP_INSTALLED_REF_H__ */ |