From: Felix Krull Date: Sat, 20 Oct 2018 09:59:07 +0000 (+0200) Subject: Move main crate into repo root X-Git-Tag: archive/raspbian/2022.4-1+rpi1^2~9^2^2~20^2~347 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=ced47cbb26df7332f6332ef5528883b08daa5b35;p=ostree.git Move main crate into repo root --- diff --git a/rust-bindings/rust/Cargo.toml b/rust-bindings/rust/Cargo.toml index f391e0a0..4f1c1a4f 100644 --- a/rust-bindings/rust/Cargo.toml +++ b/rust-bindings/rust/Cargo.toml @@ -1,5 +1,63 @@ -[workspace] -members = [ +[package] +name = "libostree" +version = "0.1.1" +authors = ["Felix Krull"] + +license = "MIT" +description = "Rust bindings for libostree" +keywords = ["ostree", "libostree"] + +documentation = "https://fkrull.gitlab.io/rust-libostree/libostree" +repository = "https://gitlab.com/fkrull/rust-libostree" +readme = "README.md" + +exclude = [ + "conf", + "gir-files", "libostree-sys", - "libostree" + ] + +[package.metadata.docs.rs] +features = ["dox"] + +[badges.gitlab] +repository = "fkrull/rust-libostree" + +[lib] +name = "libostree" + +[dependencies] +libc = "0.2" +bitflags = "1" +lazy_static = "1.1" +glib = "0.6" +gio = "0.5" +glib-sys = "0.7" +gobject-sys = "0.7" +gio-sys = "0.7" +libostree-sys = { version = "0.1", path = "libostree-sys" } + +[dev-dependencies] +tempfile = "3" + +[features] +dox = ["libostree-sys/dox"] +v2014_9 = ["libostree-sys/v2014_9"] +v2015_7 = ["v2014_9", "libostree-sys/v2015_7"] +v2017_3 = ["v2015_7", "libostree-sys/v2017_3"] +v2017_4 = ["v2017_3", "libostree-sys/v2017_4"] +v2017_6 = ["v2017_4", "libostree-sys/v2017_6"] +v2017_7 = ["v2017_6", "libostree-sys/v2017_7"] +v2017_8 = ["v2017_7", "libostree-sys/v2017_8"] +v2017_9 = ["v2017_8", "libostree-sys/v2017_9"] +v2017_10 = ["v2017_9", "libostree-sys/v2017_10"] +v2017_11 = ["v2017_10", "libostree-sys/v2017_11"] +v2017_12 = ["v2017_11", "libostree-sys/v2017_12"] +v2017_13 = ["v2017_12", "libostree-sys/v2017_13"] +v2017_15 = ["v2017_13", "libostree-sys/v2017_15"] +v2018_2 = ["v2017_15", "libostree-sys/v2018_2"] +v2018_3 = ["v2018_2", "libostree-sys/v2018_3"] +v2018_5 = ["v2018_3", "libostree-sys/v2018_5"] +v2018_6 = ["v2018_5", "libostree-sys/v2018_6"] +v2018_7 = ["v2018_6", "libostree-sys/v2018_7"] diff --git a/rust-bindings/rust/conf/libostree.toml b/rust-bindings/rust/conf/libostree.toml index 1b87167d..f76fd2f6 100644 --- a/rust-bindings/rust/conf/libostree.toml +++ b/rust-bindings/rust/conf/libostree.toml @@ -2,7 +2,7 @@ work_mode = "normal" library = "OSTree" version = "1.0" -target_path = "../libostree" +target_path = ".." doc_target_path = "../target/vendor.md" deprecate_by_min_version = true diff --git a/rust-bindings/rust/libostree/Cargo.toml b/rust-bindings/rust/libostree/Cargo.toml deleted file mode 100644 index 6d860011..00000000 --- a/rust-bindings/rust/libostree/Cargo.toml +++ /dev/null @@ -1,56 +0,0 @@ -[package] -name = "libostree" -version = "0.1.1" -authors = ["Felix Krull"] - -license = "MIT" -description = "Rust bindings for libostree" -keywords = ["ostree", "libostree"] - -documentation = "https://fkrull.gitlab.io/rust-libostree/libostree" -repository = "https://gitlab.com/fkrull/rust-libostree" -readme = "README.md" - -[package.metadata.docs.rs] -features = ["dox"] - -[badges.gitlab] -repository = "fkrull/rust-libostree" - -[lib] -name = "libostree" - -[dependencies] -libc = "0.2" -bitflags = "1" -lazy_static = "1.1" -glib = "0.6" -gio = "0.5" -glib-sys = "0.7" -gobject-sys = "0.7" -gio-sys = "0.7" -libostree-sys = { version = "0.1", path = "../libostree-sys" } - -[dev-dependencies] -tempfile = "3" - -[features] -dox = ["libostree-sys/dox"] -v2014_9 = ["libostree-sys/v2014_9"] -v2015_7 = ["v2014_9", "libostree-sys/v2015_7"] -v2017_3 = ["v2015_7", "libostree-sys/v2017_3"] -v2017_4 = ["v2017_3", "libostree-sys/v2017_4"] -v2017_6 = ["v2017_4", "libostree-sys/v2017_6"] -v2017_7 = ["v2017_6", "libostree-sys/v2017_7"] -v2017_8 = ["v2017_7", "libostree-sys/v2017_8"] -v2017_9 = ["v2017_8", "libostree-sys/v2017_9"] -v2017_10 = ["v2017_9", "libostree-sys/v2017_10"] -v2017_11 = ["v2017_10", "libostree-sys/v2017_11"] -v2017_12 = ["v2017_11", "libostree-sys/v2017_12"] -v2017_13 = ["v2017_12", "libostree-sys/v2017_13"] -v2017_15 = ["v2017_13", "libostree-sys/v2017_15"] -v2018_2 = ["v2017_15", "libostree-sys/v2018_2"] -v2018_3 = ["v2018_2", "libostree-sys/v2018_3"] -v2018_5 = ["v2018_3", "libostree-sys/v2018_5"] -v2018_6 = ["v2018_5", "libostree-sys/v2018_6"] -v2018_7 = ["v2018_6", "libostree-sys/v2018_7"] diff --git a/rust-bindings/rust/libostree/src/auto/async_progress.rs b/rust-bindings/rust/libostree/src/auto/async_progress.rs deleted file mode 100644 index c441b5c8..00000000 --- a/rust-bindings/rust/libostree/src/auto/async_progress.rs +++ /dev/null @@ -1,161 +0,0 @@ -// This file was generated by gir (https://github.com/gtk-rs/gir @ ffda6f9) -// from gir-files (https://github.com/gtk-rs/gir-files @ ???) -// DO NOT EDIT - -use ffi; -use glib; -use glib::object::Downcast; -use glib::object::IsA; -use glib::signal::SignalHandlerId; -use glib::signal::connect; -use glib::translate::*; -use glib_ffi; -use gobject_ffi; -use std::boxed::Box as Box_; -use std::mem; -use std::mem::transmute; -use std::ptr; - -glib_wrapper! { - pub struct AsyncProgress(Object); - - match fn { - get_type => || ffi::ostree_async_progress_get_type(), - } -} - -impl AsyncProgress { - pub fn new() -> AsyncProgress { - unsafe { - from_glib_full(ffi::ostree_async_progress_new()) - } - } - - //pub fn new_and_connect>, Q: Into>>(changed: P, user_data: Q) -> AsyncProgress { - // unsafe { TODO: call ffi::ostree_async_progress_new_and_connect() } - //} -} - -impl Default for AsyncProgress { - fn default() -> Self { - Self::new() - } -} - -pub trait AsyncProgressExt { - fn finish(&self); - - //#[cfg(any(feature = "v2017_6", feature = "dox"))] - //fn get(&self, : /*Unknown conversion*//*Unimplemented*/Fundamental: VarArgs); - - #[cfg(any(feature = "v2017_6", feature = "dox"))] - fn get_status(&self) -> Option; - - fn get_uint(&self, key: &str) -> u32; - - fn get_uint64(&self, key: &str) -> u64; - - #[cfg(any(feature = "v2017_6", feature = "dox"))] - fn get_variant(&self, key: &str) -> Option; - - //#[cfg(any(feature = "v2017_6", feature = "dox"))] - //fn set(&self, : /*Unknown conversion*//*Unimplemented*/Fundamental: VarArgs); - - #[cfg(any(feature = "v2017_6", feature = "dox"))] - fn set_status<'a, P: Into>>(&self, status: P); - - fn set_uint(&self, key: &str, value: u32); - - fn set_uint64(&self, key: &str, value: u64); - - #[cfg(any(feature = "v2017_6", feature = "dox"))] - fn set_variant(&self, key: &str, value: &glib::Variant); - - fn connect_changed(&self, f: F) -> SignalHandlerId; -} - -impl + IsA> AsyncProgressExt for O { - fn finish(&self) { - unsafe { - ffi::ostree_async_progress_finish(self.to_glib_none().0); - } - } - - //#[cfg(any(feature = "v2017_6", feature = "dox"))] - //fn get(&self, : /*Unknown conversion*//*Unimplemented*/Fundamental: VarArgs) { - // unsafe { TODO: call ffi::ostree_async_progress_get() } - //} - - #[cfg(any(feature = "v2017_6", feature = "dox"))] - fn get_status(&self) -> Option { - unsafe { - from_glib_full(ffi::ostree_async_progress_get_status(self.to_glib_none().0)) - } - } - - fn get_uint(&self, key: &str) -> u32 { - unsafe { - ffi::ostree_async_progress_get_uint(self.to_glib_none().0, key.to_glib_none().0) - } - } - - fn get_uint64(&self, key: &str) -> u64 { - unsafe { - ffi::ostree_async_progress_get_uint64(self.to_glib_none().0, key.to_glib_none().0) - } - } - - #[cfg(any(feature = "v2017_6", feature = "dox"))] - fn get_variant(&self, key: &str) -> Option { - unsafe { - from_glib_full(ffi::ostree_async_progress_get_variant(self.to_glib_none().0, key.to_glib_none().0)) - } - } - - //#[cfg(any(feature = "v2017_6", feature = "dox"))] - //fn set(&self, : /*Unknown conversion*//*Unimplemented*/Fundamental: VarArgs) { - // unsafe { TODO: call ffi::ostree_async_progress_set() } - //} - - #[cfg(any(feature = "v2017_6", feature = "dox"))] - fn set_status<'a, P: Into>>(&self, status: P) { - let status = status.into(); - let status = status.to_glib_none(); - unsafe { - ffi::ostree_async_progress_set_status(self.to_glib_none().0, status.0); - } - } - - fn set_uint(&self, key: &str, value: u32) { - unsafe { - ffi::ostree_async_progress_set_uint(self.to_glib_none().0, key.to_glib_none().0, value); - } - } - - fn set_uint64(&self, key: &str, value: u64) { - unsafe { - ffi::ostree_async_progress_set_uint64(self.to_glib_none().0, key.to_glib_none().0, value); - } - } - - #[cfg(any(feature = "v2017_6", feature = "dox"))] - fn set_variant(&self, key: &str, value: &glib::Variant) { - unsafe { - ffi::ostree_async_progress_set_variant(self.to_glib_none().0, key.to_glib_none().0, value.to_glib_none().0); - } - } - - fn connect_changed(&self, f: F) -> SignalHandlerId { - unsafe { - let f: Box_> = Box_::new(Box_::new(f)); - connect(self.to_glib_none().0, "changed", - transmute(changed_trampoline:: as usize), Box_::into_raw(f) as *mut _) - } - } -} - -unsafe extern "C" fn changed_trampoline

(this: *mut ffi::OstreeAsyncProgress, f: glib_ffi::gpointer) -where P: IsA { - let f: &&(Fn(&P) + 'static) = transmute(f); - f(&AsyncProgress::from_glib_borrow(this).downcast_unchecked()) -} diff --git a/rust-bindings/rust/libostree/src/auto/collection_ref.rs b/rust-bindings/rust/libostree/src/auto/collection_ref.rs deleted file mode 100644 index d52f95c6..00000000 --- a/rust-bindings/rust/libostree/src/auto/collection_ref.rs +++ /dev/null @@ -1,84 +0,0 @@ -// This file was generated by gir (https://github.com/gtk-rs/gir @ ffda6f9) -// from gir-files (https://github.com/gtk-rs/gir-files @ ???) -// DO NOT EDIT - -use ffi; -use glib::translate::*; -use glib_ffi; -use gobject_ffi; -use std::hash; -use std::mem; -use std::ptr; - -glib_wrapper! { - #[derive(Debug, PartialOrd, Ord)] - pub struct CollectionRef(Boxed); - - match fn { - copy => |ptr| gobject_ffi::g_boxed_copy(ffi::ostree_collection_ref_get_type(), ptr as *mut _) as *mut ffi::OstreeCollectionRef, - free => |ptr| gobject_ffi::g_boxed_free(ffi::ostree_collection_ref_get_type(), ptr as *mut _), - get_type => || ffi::ostree_collection_ref_get_type(), - } -} - -impl CollectionRef { - #[cfg(any(feature = "v2018_6", feature = "dox"))] - pub fn new<'a, P: Into>>(collection_id: P, ref_name: &str) -> CollectionRef { - let collection_id = collection_id.into(); - let collection_id = collection_id.to_glib_none(); - unsafe { - from_glib_full(ffi::ostree_collection_ref_new(collection_id.0, ref_name.to_glib_none().0)) - } - } - - #[cfg(any(feature = "v2018_6", feature = "dox"))] - pub fn dup(&self) -> Option { - unsafe { - from_glib_full(ffi::ostree_collection_ref_dup(self.to_glib_none().0)) - } - } - - #[cfg(any(feature = "v2018_6", feature = "dox"))] - pub fn dupv(refs: &[&CollectionRef]) -> Vec { - unsafe { - FromGlibPtrContainer::from_glib_full(ffi::ostree_collection_ref_dupv(refs.to_glib_none().0)) - } - } - - #[cfg(any(feature = "v2018_6", feature = "dox"))] - fn equal<'a, P: Into>>(&self, ref2: P) -> bool { - unsafe { - from_glib(ffi::ostree_collection_ref_equal(ToGlibPtr::<*mut ffi::OstreeCollectionRef>::to_glib_none(self).0 as glib_ffi::gconstpointer, ToGlibPtr::<*mut ffi::OstreeCollectionRef>::to_glib_none(ref2).0 as glib_ffi::gconstpointer)) - } - } - - #[cfg(any(feature = "v2018_6", feature = "dox"))] - pub fn freev(refs: &[&CollectionRef]) { - unsafe { - ffi::ostree_collection_ref_freev(refs.to_glib_full()); - } - } - - #[cfg(any(feature = "v2018_6", feature = "dox"))] - fn hash(&self) -> u32 { - unsafe { - ffi::ostree_collection_ref_hash(ToGlibPtr::<*mut ffi::OstreeCollectionRef>::to_glib_none(self).0 as glib_ffi::gconstpointer) - } - } -} - -impl PartialEq for CollectionRef { - #[inline] - fn eq(&self, other: &Self) -> bool { - self.equal(other) - } -} - -impl Eq for CollectionRef {} - -impl hash::Hash for CollectionRef { - #[inline] - fn hash(&self, state: &mut H) where H: hash::Hasher { - hash::Hash::hash(&self.hash(), state) - } -} diff --git a/rust-bindings/rust/libostree/src/auto/constants.rs b/rust-bindings/rust/libostree/src/auto/constants.rs deleted file mode 100644 index 7e6240b7..00000000 --- a/rust-bindings/rust/libostree/src/auto/constants.rs +++ /dev/null @@ -1,61 +0,0 @@ -// This file was generated by gir (https://github.com/gtk-rs/gir @ ffda6f9) -// from gir-files (https://github.com/gtk-rs/gir-files @ ???) -// DO NOT EDIT - -use ffi; -use std::ffi::CStr; - -lazy_static! { - pub static ref COMMIT_GVARIANT_STRING: &'static str = unsafe{CStr::from_ptr(ffi::OSTREE_COMMIT_GVARIANT_STRING).to_str().unwrap()}; -} -#[cfg(any(feature = "v2018_6", feature = "dox"))] -lazy_static! { - pub static ref COMMIT_META_KEY_COLLECTION_BINDING: &'static str = unsafe{CStr::from_ptr(ffi::OSTREE_COMMIT_META_KEY_COLLECTION_BINDING).to_str().unwrap()}; -} -#[cfg(any(feature = "v2017_7", feature = "dox"))] -lazy_static! { - pub static ref COMMIT_META_KEY_ENDOFLIFE: &'static str = unsafe{CStr::from_ptr(ffi::OSTREE_COMMIT_META_KEY_ENDOFLIFE).to_str().unwrap()}; -} -#[cfg(any(feature = "v2017_7", feature = "dox"))] -lazy_static! { - pub static ref COMMIT_META_KEY_ENDOFLIFE_REBASE: &'static str = unsafe{CStr::from_ptr(ffi::OSTREE_COMMIT_META_KEY_ENDOFLIFE_REBASE).to_str().unwrap()}; -} -#[cfg(any(feature = "v2017_9", feature = "dox"))] -lazy_static! { - pub static ref COMMIT_META_KEY_REF_BINDING: &'static str = unsafe{CStr::from_ptr(ffi::OSTREE_COMMIT_META_KEY_REF_BINDING).to_str().unwrap()}; -} -#[cfg(any(feature = "v2017_13", feature = "dox"))] -lazy_static! { - pub static ref COMMIT_META_KEY_SOURCE_TITLE: &'static str = unsafe{CStr::from_ptr(ffi::OSTREE_COMMIT_META_KEY_SOURCE_TITLE).to_str().unwrap()}; -} -#[cfg(any(feature = "v2014_9", feature = "dox"))] -lazy_static! { - pub static ref COMMIT_META_KEY_VERSION: &'static str = unsafe{CStr::from_ptr(ffi::OSTREE_COMMIT_META_KEY_VERSION).to_str().unwrap()}; -} -lazy_static! { - pub static ref DIRMETA_GVARIANT_STRING: &'static str = unsafe{CStr::from_ptr(ffi::OSTREE_DIRMETA_GVARIANT_STRING).to_str().unwrap()}; -} -lazy_static! { - pub static ref FILEMETA_GVARIANT_STRING: &'static str = unsafe{CStr::from_ptr(ffi::OSTREE_FILEMETA_GVARIANT_STRING).to_str().unwrap()}; -} -#[cfg(any(feature = "v2018_3", feature = "dox"))] -lazy_static! { - pub static ref ORIGIN_TRANSIENT_GROUP: &'static str = unsafe{CStr::from_ptr(ffi::OSTREE_ORIGIN_TRANSIENT_GROUP).to_str().unwrap()}; -} -#[cfg(any(feature = "v2018_6", feature = "dox"))] -lazy_static! { - pub static ref REPO_METADATA_REF: &'static str = unsafe{CStr::from_ptr(ffi::OSTREE_REPO_METADATA_REF).to_str().unwrap()}; -} -lazy_static! { - pub static ref SUMMARY_GVARIANT_STRING: &'static str = unsafe{CStr::from_ptr(ffi::OSTREE_SUMMARY_GVARIANT_STRING).to_str().unwrap()}; -} -lazy_static! { - pub static ref SUMMARY_SIG_GVARIANT_STRING: &'static str = unsafe{CStr::from_ptr(ffi::OSTREE_SUMMARY_SIG_GVARIANT_STRING).to_str().unwrap()}; -} -lazy_static! { - pub static ref TREE_GVARIANT_STRING: &'static str = unsafe{CStr::from_ptr(ffi::OSTREE_TREE_GVARIANT_STRING).to_str().unwrap()}; -} -#[cfg(any(feature = "v2017_4", feature = "dox"))] -lazy_static! { - pub static ref VERSION_S: &'static str = unsafe{CStr::from_ptr(ffi::OSTREE_VERSION_S).to_str().unwrap()}; -} diff --git a/rust-bindings/rust/libostree/src/auto/enums.rs b/rust-bindings/rust/libostree/src/auto/enums.rs deleted file mode 100644 index ef22ad0a..00000000 --- a/rust-bindings/rust/libostree/src/auto/enums.rs +++ /dev/null @@ -1,334 +0,0 @@ -// This file was generated by gir (https://github.com/gtk-rs/gir @ ffda6f9) -// from gir-files (https://github.com/gtk-rs/gir-files @ ???) -// DO NOT EDIT - -use ffi; -use glib::translate::*; - -#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash)] -#[derive(Clone, Copy)] -pub enum GpgSignatureFormatFlags { - GpgSignatureFormatDefault, - #[doc(hidden)] - __Unknown(i32), -} - -#[doc(hidden)] -impl ToGlib for GpgSignatureFormatFlags { - type GlibType = ffi::OstreeGpgSignatureFormatFlags; - - fn to_glib(&self) -> ffi::OstreeGpgSignatureFormatFlags { - match *self { - GpgSignatureFormatFlags::GpgSignatureFormatDefault => ffi::OSTREE_GPG_SIGNATURE_FORMAT_DEFAULT, - GpgSignatureFormatFlags::__Unknown(value) => value - } - } -} - -#[doc(hidden)] -impl FromGlib for GpgSignatureFormatFlags { - fn from_glib(value: ffi::OstreeGpgSignatureFormatFlags) -> Self { - match value { - 0 => GpgSignatureFormatFlags::GpgSignatureFormatDefault, - value => GpgSignatureFormatFlags::__Unknown(value), - } - } -} - -#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash)] -#[derive(Clone, Copy)] -pub enum ObjectType { - File, - DirTree, - DirMeta, - Commit, - TombstoneCommit, - CommitMeta, - PayloadLink, - #[doc(hidden)] - __Unknown(i32), -} - -#[doc(hidden)] -impl ToGlib for ObjectType { - type GlibType = ffi::OstreeObjectType; - - fn to_glib(&self) -> ffi::OstreeObjectType { - match *self { - ObjectType::File => ffi::OSTREE_OBJECT_TYPE_FILE, - ObjectType::DirTree => ffi::OSTREE_OBJECT_TYPE_DIR_TREE, - ObjectType::DirMeta => ffi::OSTREE_OBJECT_TYPE_DIR_META, - ObjectType::Commit => ffi::OSTREE_OBJECT_TYPE_COMMIT, - ObjectType::TombstoneCommit => ffi::OSTREE_OBJECT_TYPE_TOMBSTONE_COMMIT, - ObjectType::CommitMeta => ffi::OSTREE_OBJECT_TYPE_COMMIT_META, - ObjectType::PayloadLink => ffi::OSTREE_OBJECT_TYPE_PAYLOAD_LINK, - ObjectType::__Unknown(value) => value - } - } -} - -#[doc(hidden)] -impl FromGlib for ObjectType { - fn from_glib(value: ffi::OstreeObjectType) -> Self { - match value { - 1 => ObjectType::File, - 2 => ObjectType::DirTree, - 3 => ObjectType::DirMeta, - 4 => ObjectType::Commit, - 5 => ObjectType::TombstoneCommit, - 6 => ObjectType::CommitMeta, - 7 => ObjectType::PayloadLink, - value => ObjectType::__Unknown(value), - } - } -} - -#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash)] -#[derive(Clone, Copy)] -pub enum RepoCheckoutMode { - None, - User, - #[doc(hidden)] - __Unknown(i32), -} - -#[doc(hidden)] -impl ToGlib for RepoCheckoutMode { - type GlibType = ffi::OstreeRepoCheckoutMode; - - fn to_glib(&self) -> ffi::OstreeRepoCheckoutMode { - match *self { - RepoCheckoutMode::None => ffi::OSTREE_REPO_CHECKOUT_MODE_NONE, - RepoCheckoutMode::User => ffi::OSTREE_REPO_CHECKOUT_MODE_USER, - RepoCheckoutMode::__Unknown(value) => value - } - } -} - -#[doc(hidden)] -impl FromGlib for RepoCheckoutMode { - fn from_glib(value: ffi::OstreeRepoCheckoutMode) -> Self { - match value { - 0 => RepoCheckoutMode::None, - 1 => RepoCheckoutMode::User, - value => RepoCheckoutMode::__Unknown(value), - } - } -} - -#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash)] -#[derive(Clone, Copy)] -pub enum RepoCheckoutOverwriteMode { - None, - UnionFiles, - AddFiles, - UnionIdentical, - #[doc(hidden)] - __Unknown(i32), -} - -#[doc(hidden)] -impl ToGlib for RepoCheckoutOverwriteMode { - type GlibType = ffi::OstreeRepoCheckoutOverwriteMode; - - fn to_glib(&self) -> ffi::OstreeRepoCheckoutOverwriteMode { - match *self { - RepoCheckoutOverwriteMode::None => ffi::OSTREE_REPO_CHECKOUT_OVERWRITE_NONE, - RepoCheckoutOverwriteMode::UnionFiles => ffi::OSTREE_REPO_CHECKOUT_OVERWRITE_UNION_FILES, - RepoCheckoutOverwriteMode::AddFiles => ffi::OSTREE_REPO_CHECKOUT_OVERWRITE_ADD_FILES, - RepoCheckoutOverwriteMode::UnionIdentical => ffi::OSTREE_REPO_CHECKOUT_OVERWRITE_UNION_IDENTICAL, - RepoCheckoutOverwriteMode::__Unknown(value) => value - } - } -} - -#[doc(hidden)] -impl FromGlib for RepoCheckoutOverwriteMode { - fn from_glib(value: ffi::OstreeRepoCheckoutOverwriteMode) -> Self { - match value { - 0 => RepoCheckoutOverwriteMode::None, - 1 => RepoCheckoutOverwriteMode::UnionFiles, - 2 => RepoCheckoutOverwriteMode::AddFiles, - 3 => RepoCheckoutOverwriteMode::UnionIdentical, - value => RepoCheckoutOverwriteMode::__Unknown(value), - } - } -} - -#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash)] -#[derive(Clone, Copy)] -pub enum RepoMode { - Bare, - Archive, - BareUser, - BareUserOnly, - #[doc(hidden)] - __Unknown(i32), -} - -#[doc(hidden)] -impl ToGlib for RepoMode { - type GlibType = ffi::OstreeRepoMode; - - fn to_glib(&self) -> ffi::OstreeRepoMode { - match *self { - RepoMode::Bare => ffi::OSTREE_REPO_MODE_BARE, - RepoMode::Archive => ffi::OSTREE_REPO_MODE_ARCHIVE, - RepoMode::BareUser => ffi::OSTREE_REPO_MODE_BARE_USER, - RepoMode::BareUserOnly => ffi::OSTREE_REPO_MODE_BARE_USER_ONLY, - RepoMode::__Unknown(value) => value - } - } -} - -#[doc(hidden)] -impl FromGlib for RepoMode { - fn from_glib(value: ffi::OstreeRepoMode) -> Self { - match value { - 0 => RepoMode::Bare, - 1 => RepoMode::Archive, - 2 => RepoMode::BareUser, - 3 => RepoMode::BareUserOnly, - value => RepoMode::__Unknown(value), - } - } -} - -#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash)] -#[derive(Clone, Copy)] -pub enum RepoPruneFlags { - None, - NoPrune, - RefsOnly, - #[doc(hidden)] - __Unknown(i32), -} - -#[doc(hidden)] -impl ToGlib for RepoPruneFlags { - type GlibType = ffi::OstreeRepoPruneFlags; - - fn to_glib(&self) -> ffi::OstreeRepoPruneFlags { - match *self { - RepoPruneFlags::None => ffi::OSTREE_REPO_PRUNE_FLAGS_NONE, - RepoPruneFlags::NoPrune => ffi::OSTREE_REPO_PRUNE_FLAGS_NO_PRUNE, - RepoPruneFlags::RefsOnly => ffi::OSTREE_REPO_PRUNE_FLAGS_REFS_ONLY, - RepoPruneFlags::__Unknown(value) => value - } - } -} - -#[doc(hidden)] -impl FromGlib for RepoPruneFlags { - fn from_glib(value: ffi::OstreeRepoPruneFlags) -> Self { - match value { - 0 => RepoPruneFlags::None, - 1 => RepoPruneFlags::NoPrune, - 2 => RepoPruneFlags::RefsOnly, - value => RepoPruneFlags::__Unknown(value), - } - } -} - -#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash)] -#[derive(Clone, Copy)] -pub enum RepoRemoteChange { - Add, - AddIfNotExists, - Delete, - DeleteIfExists, - #[doc(hidden)] - __Unknown(i32), -} - -#[doc(hidden)] -impl ToGlib for RepoRemoteChange { - type GlibType = ffi::OstreeRepoRemoteChange; - - fn to_glib(&self) -> ffi::OstreeRepoRemoteChange { - match *self { - RepoRemoteChange::Add => ffi::OSTREE_REPO_REMOTE_CHANGE_ADD, - RepoRemoteChange::AddIfNotExists => ffi::OSTREE_REPO_REMOTE_CHANGE_ADD_IF_NOT_EXISTS, - RepoRemoteChange::Delete => ffi::OSTREE_REPO_REMOTE_CHANGE_DELETE, - RepoRemoteChange::DeleteIfExists => ffi::OSTREE_REPO_REMOTE_CHANGE_DELETE_IF_EXISTS, - RepoRemoteChange::__Unknown(value) => value - } - } -} - -#[doc(hidden)] -impl FromGlib for RepoRemoteChange { - fn from_glib(value: ffi::OstreeRepoRemoteChange) -> Self { - match value { - 0 => RepoRemoteChange::Add, - 1 => RepoRemoteChange::AddIfNotExists, - 2 => RepoRemoteChange::Delete, - 3 => RepoRemoteChange::DeleteIfExists, - value => RepoRemoteChange::__Unknown(value), - } - } -} - -#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash)] -#[derive(Clone, Copy)] -pub enum RepoResolveRevExtFlags { - RepoResolveRevExtNone, - #[doc(hidden)] - __Unknown(i32), -} - -#[doc(hidden)] -impl ToGlib for RepoResolveRevExtFlags { - type GlibType = ffi::OstreeRepoResolveRevExtFlags; - - fn to_glib(&self) -> ffi::OstreeRepoResolveRevExtFlags { - match *self { - RepoResolveRevExtFlags::RepoResolveRevExtNone => ffi::OSTREE_REPO_RESOLVE_REV_EXT_NONE, - RepoResolveRevExtFlags::__Unknown(value) => value - } - } -} - -#[doc(hidden)] -impl FromGlib for RepoResolveRevExtFlags { - fn from_glib(value: ffi::OstreeRepoResolveRevExtFlags) -> Self { - match value { - 0 => RepoResolveRevExtFlags::RepoResolveRevExtNone, - value => RepoResolveRevExtFlags::__Unknown(value), - } - } -} - -#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash)] -#[derive(Clone, Copy)] -pub enum StaticDeltaGenerateOpt { - Lowlatency, - Major, - #[doc(hidden)] - __Unknown(i32), -} - -#[doc(hidden)] -impl ToGlib for StaticDeltaGenerateOpt { - type GlibType = ffi::OstreeStaticDeltaGenerateOpt; - - fn to_glib(&self) -> ffi::OstreeStaticDeltaGenerateOpt { - match *self { - StaticDeltaGenerateOpt::Lowlatency => ffi::OSTREE_STATIC_DELTA_GENERATE_OPT_LOWLATENCY, - StaticDeltaGenerateOpt::Major => ffi::OSTREE_STATIC_DELTA_GENERATE_OPT_MAJOR, - StaticDeltaGenerateOpt::__Unknown(value) => value - } - } -} - -#[doc(hidden)] -impl FromGlib for StaticDeltaGenerateOpt { - fn from_glib(value: ffi::OstreeStaticDeltaGenerateOpt) -> Self { - match value { - 0 => StaticDeltaGenerateOpt::Lowlatency, - 1 => StaticDeltaGenerateOpt::Major, - value => StaticDeltaGenerateOpt::__Unknown(value), - } - } -} - diff --git a/rust-bindings/rust/libostree/src/auto/flags.rs b/rust-bindings/rust/libostree/src/auto/flags.rs deleted file mode 100644 index 6e820f46..00000000 --- a/rust-bindings/rust/libostree/src/auto/flags.rs +++ /dev/null @@ -1,108 +0,0 @@ -// This file was generated by gir (https://github.com/gtk-rs/gir @ ffda6f9) -// from gir-files (https://github.com/gtk-rs/gir-files @ ???) -// DO NOT EDIT - -use ffi; -use glib::translate::*; - -#[cfg(any(feature = "v2015_7", feature = "dox"))] -bitflags! { - pub struct RepoCommitState: u32 { - const NORMAL = 0; - const PARTIAL = 1; - } -} - -#[cfg(any(feature = "v2015_7", feature = "dox"))] -#[doc(hidden)] -impl ToGlib for RepoCommitState { - type GlibType = ffi::OstreeRepoCommitState; - - fn to_glib(&self) -> ffi::OstreeRepoCommitState { - self.bits() - } -} - -#[cfg(any(feature = "v2015_7", feature = "dox"))] -#[doc(hidden)] -impl FromGlib for RepoCommitState { - fn from_glib(value: ffi::OstreeRepoCommitState) -> RepoCommitState { - RepoCommitState::from_bits_truncate(value) - } -} - -bitflags! { - pub struct RepoListRefsExtFlags: u32 { - const NONE = 0; - const ALIASES = 1; - const EXCLUDE_REMOTES = 2; - } -} - -#[doc(hidden)] -impl ToGlib for RepoListRefsExtFlags { - type GlibType = ffi::OstreeRepoListRefsExtFlags; - - fn to_glib(&self) -> ffi::OstreeRepoListRefsExtFlags { - self.bits() - } -} - -#[doc(hidden)] -impl FromGlib for RepoListRefsExtFlags { - fn from_glib(value: ffi::OstreeRepoListRefsExtFlags) -> RepoListRefsExtFlags { - RepoListRefsExtFlags::from_bits_truncate(value) - } -} - -bitflags! { - pub struct RepoPullFlags: u32 { - const NONE = 0; - const MIRROR = 1; - const COMMIT_ONLY = 2; - const UNTRUSTED = 4; - const BAREUSERONLY_FILES = 8; - const TRUSTED_HTTP = 16; - } -} - -#[doc(hidden)] -impl ToGlib for RepoPullFlags { - type GlibType = ffi::OstreeRepoPullFlags; - - fn to_glib(&self) -> ffi::OstreeRepoPullFlags { - self.bits() - } -} - -#[doc(hidden)] -impl FromGlib for RepoPullFlags { - fn from_glib(value: ffi::OstreeRepoPullFlags) -> RepoPullFlags { - RepoPullFlags::from_bits_truncate(value) - } -} - -bitflags! { - pub struct SePolicyRestoreconFlags: u32 { - const NONE = 0; - const ALLOW_NOLABEL = 1; - const KEEP_EXISTING = 2; - } -} - -#[doc(hidden)] -impl ToGlib for SePolicyRestoreconFlags { - type GlibType = ffi::OstreeSePolicyRestoreconFlags; - - fn to_glib(&self) -> ffi::OstreeSePolicyRestoreconFlags { - self.bits() - } -} - -#[doc(hidden)] -impl FromGlib for SePolicyRestoreconFlags { - fn from_glib(value: ffi::OstreeSePolicyRestoreconFlags) -> SePolicyRestoreconFlags { - SePolicyRestoreconFlags::from_bits_truncate(value) - } -} - diff --git a/rust-bindings/rust/libostree/src/auto/functions.rs b/rust-bindings/rust/libostree/src/auto/functions.rs deleted file mode 100644 index df0af991..00000000 --- a/rust-bindings/rust/libostree/src/auto/functions.rs +++ /dev/null @@ -1,376 +0,0 @@ -// This file was generated by gir (https://github.com/gtk-rs/gir @ ffda6f9) -// from gir-files (https://github.com/gtk-rs/gir-files @ ???) -// DO NOT EDIT - -use Error; -use ObjectType; -use ffi; -use gio; -use glib; -use glib::object::IsA; -use glib::translate::*; -use std::mem; -use std::ptr; - - -#[cfg(any(feature = "v2017_15", feature = "dox"))] -pub fn break_hardlink<'a, P: Into>>(dfd: i32, path: &str, skip_xattrs: bool, cancellable: P) -> Result<(), Error> { - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut error = ptr::null_mut(); - let _ = ffi::ostree_break_hardlink(dfd, path.to_glib_none().0, skip_xattrs.to_glib(), cancellable.0, &mut error); - if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } - } -} - -pub fn check_version(required_year: u32, required_release: u32) -> bool { - unsafe { - from_glib(ffi::ostree_check_version(required_year, required_release)) - } -} - -//pub fn checksum_b64_from_bytes(csum: /*Unknown conversion*//*Unimplemented*/FixedArray TypeId { ns_id: 0, id: 3 }; 32) -> Option { -// unsafe { TODO: call ffi::ostree_checksum_b64_from_bytes() } -//} - -//pub fn checksum_b64_inplace_from_bytes(csum: /*Unknown conversion*//*Unimplemented*/FixedArray TypeId { ns_id: 0, id: 3 }; 32, buf: &str) { -// unsafe { TODO: call ffi::ostree_checksum_b64_inplace_from_bytes() } -//} - -//pub fn checksum_b64_inplace_to_bytes(checksum: /*Unknown conversion*//*Unimplemented*/FixedArray TypeId { ns_id: 0, id: 28 }; 32, buf: u8) { -// unsafe { TODO: call ffi::ostree_checksum_b64_inplace_to_bytes() } -//} - -//pub fn checksum_b64_to_bytes(checksum: &str) -> /*Unknown conversion*//*Unimplemented*/FixedArray TypeId { ns_id: 0, id: 3 }; 32 { -// unsafe { TODO: call ffi::ostree_checksum_b64_to_bytes() } -//} - -//pub fn checksum_bytes_peek(bytes: &glib::Variant) -> /*Unknown conversion*//*Unimplemented*/FixedArray TypeId { ns_id: 0, id: 3 }; 32 { -// unsafe { TODO: call ffi::ostree_checksum_bytes_peek() } -//} - -//pub fn checksum_bytes_peek_validate(bytes: &glib::Variant) -> Result { -// unsafe { TODO: call ffi::ostree_checksum_bytes_peek_validate() } -//} - -//pub fn checksum_file<'a, P: IsA, Q: Into>>(f: &P, objtype: ObjectType, out_csum: /*Unknown conversion*//*Unimplemented*/FixedArray TypeId { ns_id: 0, id: 3 }; 32, cancellable: Q) -> Result<(), Error> { -// unsafe { TODO: call ffi::ostree_checksum_file() } -//} - -//pub fn checksum_file_async<'a, P: IsA, Q: Into>, R: /*Ignored*/gio::AsyncReadyCallback>(f: &P, objtype: ObjectType, io_priority: i32, cancellable: Q, callback: R) { -// unsafe { TODO: call ffi::ostree_checksum_file_async() } -//} - -//#[cfg(any(feature = "v2017_13", feature = "dox"))] -//pub fn checksum_file_at<'a, P: Into>, Q: Into>>(dfd: i32, path: &str, stbuf: P, objtype: ObjectType, flags: /*Ignored*/ChecksumFlags, out_checksum: &str, cancellable: Q) -> Result<(), Error> { -// unsafe { TODO: call ffi::ostree_checksum_file_at() } -//} - -//pub fn checksum_file_from_input<'a, 'b, 'c, P: Into>, Q: IsA + 'b, R: Into>, S: Into>>(file_info: &gio::FileInfo, xattrs: P, in_: R, objtype: ObjectType, out_csum: /*Unknown conversion*//*Unimplemented*/FixedArray TypeId { ns_id: 0, id: 3 }; 32, cancellable: S) -> Result<(), Error> { -// unsafe { TODO: call ffi::ostree_checksum_file_from_input() } -//} - -//pub fn checksum_from_bytes(csum: /*Unknown conversion*//*Unimplemented*/FixedArray TypeId { ns_id: 0, id: 3 }; 32) -> Option { -// unsafe { TODO: call ffi::ostree_checksum_from_bytes() } -//} - -pub fn checksum_from_bytes_v(csum_v: &glib::Variant) -> Option { - unsafe { - from_glib_full(ffi::ostree_checksum_from_bytes_v(csum_v.to_glib_none().0)) - } -} - -//pub fn checksum_inplace_from_bytes(csum: /*Unknown conversion*//*Unimplemented*/FixedArray TypeId { ns_id: 0, id: 3 }; 32, buf: &str) { -// unsafe { TODO: call ffi::ostree_checksum_inplace_from_bytes() } -//} - -//pub fn checksum_to_bytes(checksum: &str) -> /*Unknown conversion*//*Unimplemented*/FixedArray TypeId { ns_id: 0, id: 3 }; 32 { -// unsafe { TODO: call ffi::ostree_checksum_to_bytes() } -//} - -pub fn checksum_to_bytes_v(checksum: &str) -> Option { - unsafe { - from_glib_full(ffi::ostree_checksum_to_bytes_v(checksum.to_glib_none().0)) - } -} - -//pub fn cmd__private__() -> /*Ignored*/Option { -// unsafe { TODO: call ffi::ostree_cmd__private__() } -//} - -pub fn commit_get_content_checksum(commit_variant: &glib::Variant) -> Option { - unsafe { - from_glib_full(ffi::ostree_commit_get_content_checksum(commit_variant.to_glib_none().0)) - } -} - -pub fn commit_get_parent(commit_variant: &glib::Variant) -> Option { - unsafe { - from_glib_full(ffi::ostree_commit_get_parent(commit_variant.to_glib_none().0)) - } -} - -pub fn commit_get_timestamp(commit_variant: &glib::Variant) -> u64 { - unsafe { - ffi::ostree_commit_get_timestamp(commit_variant.to_glib_none().0) - } -} - -pub fn content_file_parse<'a, P: IsA, Q: Into>>(compressed: bool, content_path: &P, trusted: bool, cancellable: Q) -> Result<(gio::InputStream, gio::FileInfo, glib::Variant), Error> { - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut out_input = ptr::null_mut(); - let mut out_file_info = ptr::null_mut(); - let mut out_xattrs = ptr::null_mut(); - let mut error = ptr::null_mut(); - let _ = ffi::ostree_content_file_parse(compressed.to_glib(), content_path.to_glib_none().0, trusted.to_glib(), &mut out_input, &mut out_file_info, &mut out_xattrs, cancellable.0, &mut error); - if error.is_null() { Ok((from_glib_full(out_input), from_glib_full(out_file_info), from_glib_full(out_xattrs))) } else { Err(from_glib_full(error)) } - } -} - -pub fn content_file_parse_at<'a, P: Into>>(compressed: bool, parent_dfd: i32, path: &str, trusted: bool, cancellable: P) -> Result<(gio::InputStream, gio::FileInfo, glib::Variant), Error> { - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut out_input = ptr::null_mut(); - let mut out_file_info = ptr::null_mut(); - let mut out_xattrs = ptr::null_mut(); - let mut error = ptr::null_mut(); - let _ = ffi::ostree_content_file_parse_at(compressed.to_glib(), parent_dfd, path.to_glib_none().0, trusted.to_glib(), &mut out_input, &mut out_file_info, &mut out_xattrs, cancellable.0, &mut error); - if error.is_null() { Ok((from_glib_full(out_input), from_glib_full(out_file_info), from_glib_full(out_xattrs))) } else { Err(from_glib_full(error)) } - } -} - -pub fn content_stream_parse<'a, P: IsA, Q: Into>>(compressed: bool, input: &P, input_length: u64, trusted: bool, cancellable: Q) -> Result<(gio::InputStream, gio::FileInfo, glib::Variant), Error> { - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut out_input = ptr::null_mut(); - let mut out_file_info = ptr::null_mut(); - let mut out_xattrs = ptr::null_mut(); - let mut error = ptr::null_mut(); - let _ = ffi::ostree_content_stream_parse(compressed.to_glib(), input.to_glib_none().0, input_length, trusted.to_glib(), &mut out_input, &mut out_file_info, &mut out_xattrs, cancellable.0, &mut error); - if error.is_null() { Ok((from_glib_full(out_input), from_glib_full(out_file_info), from_glib_full(out_xattrs))) } else { Err(from_glib_full(error)) } - } -} - -pub fn create_directory_metadata<'a, P: Into>>(dir_info: &gio::FileInfo, xattrs: P) -> Option { - let xattrs = xattrs.into(); - let xattrs = xattrs.to_glib_none(); - unsafe { - from_glib_full(ffi::ostree_create_directory_metadata(dir_info.to_glib_none().0, xattrs.0)) - } -} - -//pub fn diff_dirs<'a, P: IsA, Q: IsA, R: Into>>(flags: /*Ignored*/DiffFlags, a: &P, b: &Q, modified: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 1, id: 24 }, removed: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 4, id: 15 }, added: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 4, id: 15 }, cancellable: R) -> Result<(), Error> { -// unsafe { TODO: call ffi::ostree_diff_dirs() } -//} - -//pub fn diff_dirs_with_options<'a, 'b, P: IsA, Q: IsA, R: Into>, S: Into>>(flags: /*Ignored*/DiffFlags, a: &P, b: &Q, modified: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 1, id: 24 }, removed: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 4, id: 15 }, added: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 4, id: 15 }, options: R, cancellable: S) -> Result<(), Error> { -// unsafe { TODO: call ffi::ostree_diff_dirs_with_options() } -//} - -//pub fn diff_print, Q: IsA>(a: &P, b: &Q, modified: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 1, id: 24 }, removed: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 4, id: 15 }, added: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 4, id: 15 }) { -// unsafe { TODO: call ffi::ostree_diff_print() } -//} - -//pub fn gpg_error_quark() -> /*Ignored*/glib::Quark { -// unsafe { TODO: call ffi::ostree_gpg_error_quark() } -//} - -//pub fn hash_object_name>>(a: P) -> u32 { -// unsafe { TODO: call ffi::ostree_hash_object_name() } -//} - -//pub fn metadata_variant_type(objtype: ObjectType) -> /*Ignored*/Option { -// unsafe { TODO: call ffi::ostree_metadata_variant_type() } -//} - -pub fn object_from_string(str: &str) -> (String, ObjectType) { - unsafe { - let mut out_checksum = ptr::null_mut(); - let mut out_objtype = mem::uninitialized(); - ffi::ostree_object_from_string(str.to_glib_none().0, &mut out_checksum, &mut out_objtype); - (from_glib_full(out_checksum), from_glib(out_objtype)) - } -} - -pub fn object_name_deserialize(variant: &glib::Variant) -> (String, ObjectType) { - unsafe { - let mut out_checksum = ptr::null(); - let mut out_objtype = mem::uninitialized(); - ffi::ostree_object_name_deserialize(variant.to_glib_none().0, &mut out_checksum, &mut out_objtype); - (from_glib_none(out_checksum), from_glib(out_objtype)) - } -} - -pub fn object_name_serialize(checksum: &str, objtype: ObjectType) -> Option { - unsafe { - from_glib_none(ffi::ostree_object_name_serialize(checksum.to_glib_none().0, objtype.to_glib())) - } -} - -pub fn object_to_string(checksum: &str, objtype: ObjectType) -> Option { - unsafe { - from_glib_full(ffi::ostree_object_to_string(checksum.to_glib_none().0, objtype.to_glib())) - } -} - -pub fn object_type_from_string(str: &str) -> ObjectType { - unsafe { - from_glib(ffi::ostree_object_type_from_string(str.to_glib_none().0)) - } -} - -pub fn object_type_to_string(objtype: ObjectType) -> Option { - unsafe { - from_glib_none(ffi::ostree_object_type_to_string(objtype.to_glib())) - } -} - -pub fn parse_refspec(refspec: &str) -> Result<(Option, String), Error> { - unsafe { - let mut out_remote = ptr::null_mut(); - let mut out_ref = ptr::null_mut(); - let mut error = ptr::null_mut(); - let _ = ffi::ostree_parse_refspec(refspec.to_glib_none().0, &mut out_remote, &mut out_ref, &mut error); - if error.is_null() { Ok((from_glib_full(out_remote), from_glib_full(out_ref))) } else { Err(from_glib_full(error)) } - } -} - -pub fn raw_file_to_archive_z2_stream<'a, 'b, P: IsA, Q: Into>, R: Into>>(input: &P, file_info: &gio::FileInfo, xattrs: Q, cancellable: R) -> Result { - let xattrs = xattrs.into(); - let xattrs = xattrs.to_glib_none(); - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut out_input = ptr::null_mut(); - let mut error = ptr::null_mut(); - let _ = ffi::ostree_raw_file_to_archive_z2_stream(input.to_glib_none().0, file_info.to_glib_none().0, xattrs.0, &mut out_input, cancellable.0, &mut error); - if error.is_null() { Ok(from_glib_full(out_input)) } else { Err(from_glib_full(error)) } - } -} - -#[cfg(any(feature = "v2017_3", feature = "dox"))] -pub fn raw_file_to_archive_z2_stream_with_options<'a, 'b, 'c, P: IsA, Q: Into>, R: Into>, S: Into>>(input: &P, file_info: &gio::FileInfo, xattrs: Q, options: R, cancellable: S) -> Result { - let xattrs = xattrs.into(); - let xattrs = xattrs.to_glib_none(); - let options = options.into(); - let options = options.to_glib_none(); - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut out_input = ptr::null_mut(); - let mut error = ptr::null_mut(); - let _ = ffi::ostree_raw_file_to_archive_z2_stream_with_options(input.to_glib_none().0, file_info.to_glib_none().0, xattrs.0, options.0, &mut out_input, cancellable.0, &mut error); - if error.is_null() { Ok(from_glib_full(out_input)) } else { Err(from_glib_full(error)) } - } -} - -pub fn raw_file_to_content_stream<'a, 'b, P: IsA, Q: Into>, R: Into>>(input: &P, file_info: &gio::FileInfo, xattrs: Q, cancellable: R) -> Result<(gio::InputStream, u64), Error> { - let xattrs = xattrs.into(); - let xattrs = xattrs.to_glib_none(); - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut out_input = ptr::null_mut(); - let mut out_length = mem::uninitialized(); - let mut error = ptr::null_mut(); - let _ = ffi::ostree_raw_file_to_content_stream(input.to_glib_none().0, file_info.to_glib_none().0, xattrs.0, &mut out_input, &mut out_length, cancellable.0, &mut error); - if error.is_null() { Ok((from_glib_full(out_input), out_length)) } else { Err(from_glib_full(error)) } - } -} - -pub fn validate_checksum_string(sha256: &str) -> Result<(), Error> { - unsafe { - let mut error = ptr::null_mut(); - let _ = ffi::ostree_validate_checksum_string(sha256.to_glib_none().0, &mut error); - if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } - } -} - -#[cfg(any(feature = "v2018_6", feature = "dox"))] -pub fn validate_collection_id<'a, P: Into>>(collection_id: P) -> Result<(), Error> { - let collection_id = collection_id.into(); - let collection_id = collection_id.to_glib_none(); - unsafe { - let mut error = ptr::null_mut(); - let _ = ffi::ostree_validate_collection_id(collection_id.0, &mut error); - if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } - } -} - -#[cfg(any(feature = "v2017_8", feature = "dox"))] -pub fn validate_remote_name(remote_name: &str) -> Result<(), Error> { - unsafe { - let mut error = ptr::null_mut(); - let _ = ffi::ostree_validate_remote_name(remote_name.to_glib_none().0, &mut error); - if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } - } -} - -pub fn validate_rev(rev: &str) -> Result<(), Error> { - unsafe { - let mut error = ptr::null_mut(); - let _ = ffi::ostree_validate_rev(rev.to_glib_none().0, &mut error); - if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } - } -} - -pub fn validate_structureof_checksum_string(checksum: &str) -> Result<(), Error> { - unsafe { - let mut error = ptr::null_mut(); - let _ = ffi::ostree_validate_structureof_checksum_string(checksum.to_glib_none().0, &mut error); - if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } - } -} - -pub fn validate_structureof_commit(commit: &glib::Variant) -> Result<(), Error> { - unsafe { - let mut error = ptr::null_mut(); - let _ = ffi::ostree_validate_structureof_commit(commit.to_glib_none().0, &mut error); - if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } - } -} - -pub fn validate_structureof_csum_v(checksum: &glib::Variant) -> Result<(), Error> { - unsafe { - let mut error = ptr::null_mut(); - let _ = ffi::ostree_validate_structureof_csum_v(checksum.to_glib_none().0, &mut error); - if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } - } -} - -pub fn validate_structureof_dirmeta(dirmeta: &glib::Variant) -> Result<(), Error> { - unsafe { - let mut error = ptr::null_mut(); - let _ = ffi::ostree_validate_structureof_dirmeta(dirmeta.to_glib_none().0, &mut error); - if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } - } -} - -pub fn validate_structureof_dirtree(dirtree: &glib::Variant) -> Result<(), Error> { - unsafe { - let mut error = ptr::null_mut(); - let _ = ffi::ostree_validate_structureof_dirtree(dirtree.to_glib_none().0, &mut error); - if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } - } -} - -pub fn validate_structureof_file_mode(mode: u32) -> Result<(), Error> { - unsafe { - let mut error = ptr::null_mut(); - let _ = ffi::ostree_validate_structureof_file_mode(mode, &mut error); - if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } - } -} - -pub fn validate_structureof_objtype(objtype: u8) -> Result<(), Error> { - unsafe { - let mut error = ptr::null_mut(); - let _ = ffi::ostree_validate_structureof_objtype(objtype, &mut error); - if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } - } -} diff --git a/rust-bindings/rust/libostree/src/auto/gpg_verify_result.rs b/rust-bindings/rust/libostree/src/auto/gpg_verify_result.rs deleted file mode 100644 index ec3e07c6..00000000 --- a/rust-bindings/rust/libostree/src/auto/gpg_verify_result.rs +++ /dev/null @@ -1,96 +0,0 @@ -// This file was generated by gir (https://github.com/gtk-rs/gir @ ffda6f9) -// from gir-files (https://github.com/gtk-rs/gir-files @ ???) -// DO NOT EDIT - -use Error; -use GpgSignatureFormatFlags; -use ffi; -use glib; -use glib::object::IsA; -use glib::translate::*; -use glib_ffi; -use gobject_ffi; -use std::mem; -use std::ptr; - -glib_wrapper! { - pub struct GpgVerifyResult(Object); - - match fn { - get_type => || ffi::ostree_gpg_verify_result_get_type(), - } -} - -impl GpgVerifyResult { - pub fn describe_variant<'a, P: Into>>(variant: &glib::Variant, output_buffer: &mut glib::String, line_prefix: P, flags: GpgSignatureFormatFlags) { - let line_prefix = line_prefix.into(); - let line_prefix = line_prefix.to_glib_none(); - unsafe { - ffi::ostree_gpg_verify_result_describe_variant(variant.to_glib_none().0, output_buffer.to_glib_none_mut().0, line_prefix.0, flags.to_glib()); - } - } -} - -pub trait GpgVerifyResultExt { - fn count_all(&self) -> u32; - - fn count_valid(&self) -> u32; - - fn describe<'a, P: Into>>(&self, signature_index: u32, output_buffer: &mut glib::String, line_prefix: P, flags: GpgSignatureFormatFlags); - - //fn get(&self, signature_index: u32, attrs: /*Unimplemented*/&CArray TypeId { ns_id: 1, id: 26 }) -> Option; - - fn get_all(&self, signature_index: u32) -> Option; - - fn lookup(&self, key_id: &str) -> Option; - - fn require_valid_signature(&self) -> Result<(), Error>; -} - -impl> GpgVerifyResultExt for O { - fn count_all(&self) -> u32 { - unsafe { - ffi::ostree_gpg_verify_result_count_all(self.to_glib_none().0) - } - } - - fn count_valid(&self) -> u32 { - unsafe { - ffi::ostree_gpg_verify_result_count_valid(self.to_glib_none().0) - } - } - - fn describe<'a, P: Into>>(&self, signature_index: u32, output_buffer: &mut glib::String, line_prefix: P, flags: GpgSignatureFormatFlags) { - let line_prefix = line_prefix.into(); - let line_prefix = line_prefix.to_glib_none(); - unsafe { - ffi::ostree_gpg_verify_result_describe(self.to_glib_none().0, signature_index, output_buffer.to_glib_none_mut().0, line_prefix.0, flags.to_glib()); - } - } - - //fn get(&self, signature_index: u32, attrs: /*Unimplemented*/&CArray TypeId { ns_id: 1, id: 26 }) -> Option { - // unsafe { TODO: call ffi::ostree_gpg_verify_result_get() } - //} - - fn get_all(&self, signature_index: u32) -> Option { - unsafe { - from_glib_full(ffi::ostree_gpg_verify_result_get_all(self.to_glib_none().0, signature_index)) - } - } - - fn lookup(&self, key_id: &str) -> Option { - unsafe { - let mut out_signature_index = mem::uninitialized(); - let ret = from_glib(ffi::ostree_gpg_verify_result_lookup(self.to_glib_none().0, key_id.to_glib_none().0, &mut out_signature_index)); - if ret { Some(out_signature_index) } else { None } - } - } - - fn require_valid_signature(&self) -> Result<(), Error> { - unsafe { - let mut error = ptr::null_mut(); - let _ = ffi::ostree_gpg_verify_result_require_valid_signature(self.to_glib_none().0, &mut error); - if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } - } - } -} diff --git a/rust-bindings/rust/libostree/src/auto/mod.rs b/rust-bindings/rust/libostree/src/auto/mod.rs deleted file mode 100644 index 59aaea84..00000000 --- a/rust-bindings/rust/libostree/src/auto/mod.rs +++ /dev/null @@ -1,102 +0,0 @@ -// This file was generated by gir (https://github.com/gtk-rs/gir @ ffda6f9) -// from gir-files (https://github.com/gtk-rs/gir-files @ ???) -// DO NOT EDIT - -mod async_progress; -pub use self::async_progress::AsyncProgress; -pub use self::async_progress::AsyncProgressExt; - -mod gpg_verify_result; -pub use self::gpg_verify_result::GpgVerifyResult; -pub use self::gpg_verify_result::GpgVerifyResultExt; - -mod mutable_tree; -pub use self::mutable_tree::MutableTree; -pub use self::mutable_tree::MutableTreeExt; - -mod repo; -pub use self::repo::Repo; -pub use self::repo::RepoExt; - -mod repo_file; -pub use self::repo_file::RepoFile; -pub use self::repo_file::RepoFileExt; - -mod se_policy; -pub use self::se_policy::SePolicy; -pub use self::se_policy::SePolicyExt; - -#[cfg(any(feature = "v2018_6", feature = "dox"))] -mod collection_ref; -#[cfg(any(feature = "v2018_6", feature = "dox"))] -pub use self::collection_ref::CollectionRef; - -#[cfg(any(feature = "v2018_6", feature = "dox"))] -mod remote; -#[cfg(any(feature = "v2018_6", feature = "dox"))] -pub use self::remote::Remote; - -mod repo_commit_modifier; -pub use self::repo_commit_modifier::RepoCommitModifier; - -mod repo_dev_ino_cache; -pub use self::repo_dev_ino_cache::RepoDevInoCache; - -mod repo_transaction_stats; -pub use self::repo_transaction_stats::RepoTransactionStats; - -mod enums; -pub use self::enums::GpgSignatureFormatFlags; -pub use self::enums::ObjectType; -pub use self::enums::RepoCheckoutMode; -pub use self::enums::RepoCheckoutOverwriteMode; -pub use self::enums::RepoMode; -pub use self::enums::RepoPruneFlags; -pub use self::enums::RepoRemoteChange; -pub use self::enums::RepoResolveRevExtFlags; -pub use self::enums::StaticDeltaGenerateOpt; - -mod flags; -#[cfg(any(feature = "v2015_7", feature = "dox"))] -pub use self::flags::RepoCommitState; -pub use self::flags::RepoListRefsExtFlags; -pub use self::flags::RepoPullFlags; -pub use self::flags::SePolicyRestoreconFlags; - -pub mod functions; - -mod constants; -pub use self::constants::COMMIT_GVARIANT_STRING; -#[cfg(any(feature = "v2018_6", feature = "dox"))] -pub use self::constants::COMMIT_META_KEY_COLLECTION_BINDING; -#[cfg(any(feature = "v2017_7", feature = "dox"))] -pub use self::constants::COMMIT_META_KEY_ENDOFLIFE; -#[cfg(any(feature = "v2017_7", feature = "dox"))] -pub use self::constants::COMMIT_META_KEY_ENDOFLIFE_REBASE; -#[cfg(any(feature = "v2017_9", feature = "dox"))] -pub use self::constants::COMMIT_META_KEY_REF_BINDING; -#[cfg(any(feature = "v2017_13", feature = "dox"))] -pub use self::constants::COMMIT_META_KEY_SOURCE_TITLE; -#[cfg(any(feature = "v2014_9", feature = "dox"))] -pub use self::constants::COMMIT_META_KEY_VERSION; -pub use self::constants::DIRMETA_GVARIANT_STRING; -pub use self::constants::FILEMETA_GVARIANT_STRING; -#[cfg(any(feature = "v2018_3", feature = "dox"))] -pub use self::constants::ORIGIN_TRANSIENT_GROUP; -#[cfg(any(feature = "v2018_6", feature = "dox"))] -pub use self::constants::REPO_METADATA_REF; -pub use self::constants::SUMMARY_GVARIANT_STRING; -pub use self::constants::SUMMARY_SIG_GVARIANT_STRING; -pub use self::constants::TREE_GVARIANT_STRING; -#[cfg(any(feature = "v2017_4", feature = "dox"))] -pub use self::constants::VERSION_S; - -#[doc(hidden)] -pub mod traits { - pub use super::AsyncProgressExt; - pub use super::GpgVerifyResultExt; - pub use super::MutableTreeExt; - pub use super::RepoExt; - pub use super::RepoFileExt; - pub use super::SePolicyExt; -} diff --git a/rust-bindings/rust/libostree/src/auto/mutable_tree.rs b/rust-bindings/rust/libostree/src/auto/mutable_tree.rs deleted file mode 100644 index 3e6cb5e2..00000000 --- a/rust-bindings/rust/libostree/src/auto/mutable_tree.rs +++ /dev/null @@ -1,142 +0,0 @@ -// This file was generated by gir (https://github.com/gtk-rs/gir @ ffda6f9) -// from gir-files (https://github.com/gtk-rs/gir-files @ ???) -// DO NOT EDIT - -use Error; -use Repo; -use ffi; -use glib::object::IsA; -use glib::translate::*; -use glib_ffi; -use gobject_ffi; -use std::mem; -use std::ptr; - -glib_wrapper! { - pub struct MutableTree(Object); - - match fn { - get_type => || ffi::ostree_mutable_tree_get_type(), - } -} - -impl MutableTree { - pub fn new() -> MutableTree { - unsafe { - from_glib_full(ffi::ostree_mutable_tree_new()) - } - } - - pub fn new_from_checksum(repo: &Repo, contents_checksum: &str, metadata_checksum: &str) -> MutableTree { - unsafe { - from_glib_full(ffi::ostree_mutable_tree_new_from_checksum(repo.to_glib_none().0, contents_checksum.to_glib_none().0, metadata_checksum.to_glib_none().0)) - } - } -} - -impl Default for MutableTree { - fn default() -> Self { - Self::new() - } -} - -pub trait MutableTreeExt { - #[cfg(any(feature = "v2018_7", feature = "dox"))] - fn check_error(&self) -> Result<(), Error>; - - fn ensure_dir(&self, name: &str) -> Result; - - //fn ensure_parent_dirs(&self, split_path: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 0, id: 28 }, metadata_checksum: &str) -> Result; - - fn fill_empty_from_dirtree(&self, repo: &Repo, contents_checksum: &str, metadata_checksum: &str) -> bool; - - fn get_contents_checksum(&self) -> Option; - - //fn get_files(&self) -> /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 28 }/TypeId { ns_id: 0, id: 28 }; - - fn get_metadata_checksum(&self) -> Option; - - //fn get_subdirs(&self) -> /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 28 }/TypeId { ns_id: 1, id: 37 }; - - fn replace_file(&self, name: &str, checksum: &str) -> Result<(), Error>; - - fn set_contents_checksum(&self, checksum: &str); - - fn set_metadata_checksum(&self, checksum: &str); - - //fn walk(&self, split_path: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 0, id: 28 }, start: u32) -> Result; -} - -impl> MutableTreeExt for O { - #[cfg(any(feature = "v2018_7", feature = "dox"))] - fn check_error(&self) -> Result<(), Error> { - unsafe { - let mut error = ptr::null_mut(); - let _ = ffi::ostree_mutable_tree_check_error(self.to_glib_none().0, &mut error); - if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } - } - } - - fn ensure_dir(&self, name: &str) -> Result { - unsafe { - let mut out_subdir = ptr::null_mut(); - let mut error = ptr::null_mut(); - let _ = ffi::ostree_mutable_tree_ensure_dir(self.to_glib_none().0, name.to_glib_none().0, &mut out_subdir, &mut error); - if error.is_null() { Ok(from_glib_full(out_subdir)) } else { Err(from_glib_full(error)) } - } - } - - //fn ensure_parent_dirs(&self, split_path: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 0, id: 28 }, metadata_checksum: &str) -> Result { - // unsafe { TODO: call ffi::ostree_mutable_tree_ensure_parent_dirs() } - //} - - fn fill_empty_from_dirtree(&self, repo: &Repo, contents_checksum: &str, metadata_checksum: &str) -> bool { - unsafe { - from_glib(ffi::ostree_mutable_tree_fill_empty_from_dirtree(self.to_glib_none().0, repo.to_glib_none().0, contents_checksum.to_glib_none().0, metadata_checksum.to_glib_none().0)) - } - } - - fn get_contents_checksum(&self) -> Option { - unsafe { - from_glib_none(ffi::ostree_mutable_tree_get_contents_checksum(self.to_glib_none().0)) - } - } - - //fn get_files(&self) -> /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 28 }/TypeId { ns_id: 0, id: 28 } { - // unsafe { TODO: call ffi::ostree_mutable_tree_get_files() } - //} - - fn get_metadata_checksum(&self) -> Option { - unsafe { - from_glib_none(ffi::ostree_mutable_tree_get_metadata_checksum(self.to_glib_none().0)) - } - } - - //fn get_subdirs(&self) -> /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 28 }/TypeId { ns_id: 1, id: 37 } { - // unsafe { TODO: call ffi::ostree_mutable_tree_get_subdirs() } - //} - - fn replace_file(&self, name: &str, checksum: &str) -> Result<(), Error> { - unsafe { - let mut error = ptr::null_mut(); - let _ = ffi::ostree_mutable_tree_replace_file(self.to_glib_none().0, name.to_glib_none().0, checksum.to_glib_none().0, &mut error); - if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } - } - } - - fn set_contents_checksum(&self, checksum: &str) { - unsafe { - ffi::ostree_mutable_tree_set_contents_checksum(self.to_glib_none().0, checksum.to_glib_none().0); - } - } - - fn set_metadata_checksum(&self, checksum: &str) { - unsafe { - ffi::ostree_mutable_tree_set_metadata_checksum(self.to_glib_none().0, checksum.to_glib_none().0); - } - } - - //fn walk(&self, split_path: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 0, id: 28 }, start: u32) -> Result { - // unsafe { TODO: call ffi::ostree_mutable_tree_walk() } - //} -} diff --git a/rust-bindings/rust/libostree/src/auto/remote.rs b/rust-bindings/rust/libostree/src/auto/remote.rs deleted file mode 100644 index 520f1cee..00000000 --- a/rust-bindings/rust/libostree/src/auto/remote.rs +++ /dev/null @@ -1,37 +0,0 @@ -// This file was generated by gir (https://github.com/gtk-rs/gir @ ffda6f9) -// from gir-files (https://github.com/gtk-rs/gir-files @ ???) -// DO NOT EDIT - -use ffi; -use glib::translate::*; -use glib_ffi; -use gobject_ffi; -use std::mem; -use std::ptr; - -glib_wrapper! { - #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] - pub struct Remote(Shared); - - match fn { - ref => |ptr| ffi::ostree_remote_ref(ptr), - unref => |ptr| ffi::ostree_remote_unref(ptr), - get_type => || ffi::ostree_remote_get_type(), - } -} - -impl Remote { - #[cfg(any(feature = "v2018_6", feature = "dox"))] - pub fn get_name(&self) -> Option { - unsafe { - from_glib_none(ffi::ostree_remote_get_name(self.to_glib_none().0)) - } - } - - #[cfg(any(feature = "v2018_6", feature = "dox"))] - pub fn get_url(&self) -> Option { - unsafe { - from_glib_full(ffi::ostree_remote_get_url(self.to_glib_none().0)) - } - } -} diff --git a/rust-bindings/rust/libostree/src/auto/repo.rs b/rust-bindings/rust/libostree/src/auto/repo.rs deleted file mode 100644 index d7bdd3da..00000000 --- a/rust-bindings/rust/libostree/src/auto/repo.rs +++ /dev/null @@ -1,1378 +0,0 @@ -// This file was generated by gir (https://github.com/gtk-rs/gir @ ffda6f9) -// from gir-files (https://github.com/gtk-rs/gir-files @ ???) -// DO NOT EDIT - -use AsyncProgress; -#[cfg(any(feature = "v2018_6", feature = "dox"))] -use CollectionRef; -use Error; -use GpgVerifyResult; -use MutableTree; -use ObjectType; -#[cfg(any(feature = "v2018_6", feature = "dox"))] -use Remote; -use RepoCheckoutMode; -use RepoCheckoutOverwriteMode; -use RepoCommitModifier; -#[cfg(any(feature = "v2015_7", feature = "dox"))] -use RepoCommitState; -use RepoFile; -use RepoMode; -use RepoPruneFlags; -use RepoPullFlags; -use RepoRemoteChange; -use RepoResolveRevExtFlags; -use RepoTransactionStats; -use StaticDeltaGenerateOpt; -use ffi; -use gio; -use glib; -use glib::StaticType; -use glib::Value; -use glib::object::Downcast; -use glib::object::IsA; -use glib::signal::SignalHandlerId; -use glib::signal::connect; -use glib::translate::*; -use glib_ffi; -use gobject_ffi; -use libc; -use std::boxed::Box as Box_; -use std::mem; -use std::mem::transmute; -use std::ptr; - -glib_wrapper! { - pub struct Repo(Object); - - match fn { - get_type => || ffi::ostree_repo_get_type(), - } -} - -impl Repo { - pub fn new>(path: &P) -> Repo { - unsafe { - from_glib_full(ffi::ostree_repo_new(path.to_glib_none().0)) - } - } - - pub fn new_default() -> Repo { - unsafe { - from_glib_full(ffi::ostree_repo_new_default()) - } - } - - pub fn new_for_sysroot_path, Q: IsA>(repo_path: &P, sysroot_path: &Q) -> Repo { - unsafe { - from_glib_full(ffi::ostree_repo_new_for_sysroot_path(repo_path.to_glib_none().0, sysroot_path.to_glib_none().0)) - } - } - - pub fn create_at<'a, P: Into>>(dfd: i32, path: &str, mode: RepoMode, options: &glib::Variant, cancellable: P) -> Result { - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut error = ptr::null_mut(); - let ret = ffi::ostree_repo_create_at(dfd, path.to_glib_none().0, mode.to_glib(), options.to_glib_none().0, cancellable.0, &mut error); - if error.is_null() { Ok(from_glib_full(ret)) } else { Err(from_glib_full(error)) } - } - } - - pub fn open_at<'a, P: Into>>(dfd: i32, path: &str, cancellable: P) -> Result { - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut error = ptr::null_mut(); - let ret = ffi::ostree_repo_open_at(dfd, path.to_glib_none().0, cancellable.0, &mut error); - if error.is_null() { Ok(from_glib_full(ret)) } else { Err(from_glib_full(error)) } - } - } - - //pub fn pull_default_console_progress_changed>>(progress: &AsyncProgress, user_data: P) { - // unsafe { TODO: call ffi::ostree_repo_pull_default_console_progress_changed() } - //} - - //#[cfg(any(feature = "v2018_5", feature = "dox"))] - //pub fn traverse_new_parents() -> /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 2, id: 181 }/TypeId { ns_id: 2, id: 181 } { - // unsafe { TODO: call ffi::ostree_repo_traverse_new_parents() } - //} - - //pub fn traverse_new_reachable() -> /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 2, id: 181 }/TypeId { ns_id: 2, id: 181 } { - // unsafe { TODO: call ffi::ostree_repo_traverse_new_reachable() } - //} - - //#[cfg(any(feature = "v2018_5", feature = "dox"))] - //pub fn traverse_parents_get_commits(parents: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 25 }/TypeId { ns_id: 0, id: 25 }, object: &glib::Variant) -> Vec { - // unsafe { TODO: call ffi::ostree_repo_traverse_parents_get_commits() } - //} -} - -pub trait RepoExt { - fn abort_transaction<'a, P: Into>>(&self, cancellable: P) -> Result<(), Error>; - - fn add_gpg_signature_summary<'a, 'b, P: Into>, Q: Into>>(&self, key_id: &[&str], homedir: P, cancellable: Q) -> Result<(), Error>; - - fn append_gpg_signature<'a, P: Into>>(&self, commit_checksum: &str, signature_bytes: &glib::Bytes, cancellable: P) -> Result<(), Error>; - - //fn checkout_at<'a, 'b, P: Into>, Q: Into>>(&self, options: P, destination_dfd: i32, destination_path: &str, commit: &str, cancellable: Q) -> Result<(), Error>; - - fn checkout_gc<'a, P: Into>>(&self, cancellable: P) -> Result<(), Error>; - - fn checkout_tree<'a, P: IsA, Q: Into>>(&self, mode: RepoCheckoutMode, overwrite_mode: RepoCheckoutOverwriteMode, destination: &P, source: &RepoFile, source_info: &gio::FileInfo, cancellable: Q) -> Result<(), Error>; - - //fn checkout_tree_at<'a, 'b, P: Into>, Q: Into>>(&self, options: P, destination_dfd: i32, destination_path: &str, commit: &str, cancellable: Q) -> Result<(), Error>; - - fn commit_transaction<'a, P: Into>>(&self, cancellable: P) -> Result; - - fn copy_config(&self) -> Option; - - fn create<'a, P: Into>>(&self, mode: RepoMode, cancellable: P) -> Result<(), Error>; - - fn delete_object<'a, P: Into>>(&self, objtype: ObjectType, sha256: &str, cancellable: P) -> Result<(), Error>; - - #[cfg(any(feature = "v2017_12", feature = "dox"))] - fn equal(&self, b: &Repo) -> bool; - - //fn export_tree_to_archive<'a, P: Into>, Q: Into>>(&self, opts: /*Ignored*/&mut RepoExportArchiveOptions, root: &RepoFile, archive: P, cancellable: Q) -> Result<(), Error>; - - #[cfg(any(feature = "v2017_15", feature = "dox"))] - fn fsck_object<'a, P: Into>>(&self, objtype: ObjectType, sha256: &str, cancellable: P) -> Result<(), Error>; - - #[cfg(any(feature = "v2018_6", feature = "dox"))] - fn get_collection_id(&self) -> Option; - - fn get_config(&self) -> Option; - - fn get_dfd(&self) -> i32; - - fn get_disable_fsync(&self) -> bool; - - fn get_mode(&self) -> RepoMode; - - fn get_parent(&self) -> Option; - - fn get_path(&self) -> Option; - - fn get_remote_boolean_option(&self, remote_name: &str, option_name: &str, default_value: bool) -> Result; - - fn get_remote_list_option(&self, remote_name: &str, option_name: &str) -> Result, Error>; - - fn get_remote_option<'a, P: Into>>(&self, remote_name: &str, option_name: &str, default_value: P) -> Result; - - fn gpg_verify_data<'a, 'b, 'c, 'd, P: Into>, Q: IsA + 'b, R: Into>, S: IsA + 'c, T: Into>, U: Into>>(&self, remote_name: P, data: &glib::Bytes, signatures: &glib::Bytes, keyringdir: R, extra_keyring: T, cancellable: U) -> Result; - - fn has_object<'a, P: Into>>(&self, objtype: ObjectType, checksum: &str, cancellable: P) -> Result; - - #[cfg(any(feature = "v2017_12", feature = "dox"))] - fn hash(&self) -> u32; - - //fn import_archive_to_mtree<'a, 'b, P: Into>, Q: Into>, R: Into>>(&self, opts: /*Ignored*/&mut RepoImportArchiveOptions, archive: P, mtree: &MutableTree, modifier: Q, cancellable: R) -> Result<(), Error>; - - fn import_object_from<'a, P: Into>>(&self, source: &Repo, objtype: ObjectType, checksum: &str, cancellable: P) -> Result<(), Error>; - - fn import_object_from_with_trust<'a, P: Into>>(&self, source: &Repo, objtype: ObjectType, checksum: &str, trusted: bool, cancellable: P) -> Result<(), Error>; - - fn is_system(&self) -> bool; - - fn is_writable(&self) -> Result<(), Error>; - - //#[cfg(any(feature = "v2018_6", feature = "dox"))] - //fn list_collection_refs<'a, 'b, P: Into>, Q: Into>>(&self, match_collection_id: P, out_all_refs: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 1, id: 0 }/TypeId { ns_id: 0, id: 28 }, flags: RepoListRefsExtFlags, cancellable: Q) -> Result<(), Error>; - - //fn list_commit_objects_starting_with<'a, P: Into>>(&self, start: &str, out_commits: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 2, id: 181 }/TypeId { ns_id: 2, id: 181 }, cancellable: P) -> Result<(), Error>; - - //fn list_objects<'a, P: Into>>(&self, flags: /*Ignored*/RepoListObjectsFlags, out_objects: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 2, id: 181 }/TypeId { ns_id: 2, id: 181 }, cancellable: P) -> Result<(), Error>; - - //fn list_refs<'a, 'b, P: Into>, Q: Into>>(&self, refspec_prefix: P, out_all_refs: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 28 }/TypeId { ns_id: 0, id: 28 }, cancellable: Q) -> Result<(), Error>; - - //fn list_refs_ext<'a, 'b, P: Into>, Q: Into>>(&self, refspec_prefix: P, out_all_refs: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 28 }/TypeId { ns_id: 0, id: 28 }, flags: RepoListRefsExtFlags, cancellable: Q) -> Result<(), Error>; - - //fn list_static_delta_names<'a, P: Into>>(&self, out_deltas: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 0, id: 28 }, cancellable: P) -> Result<(), Error>; - - #[cfg(any(feature = "v2015_7", feature = "dox"))] - fn load_commit(&self, checksum: &str) -> Result<(glib::Variant, RepoCommitState), Error>; - - fn load_file<'a, P: Into>>(&self, checksum: &str, cancellable: P) -> Result<(Option, Option, Option), Error>; - - fn load_object_stream<'a, P: Into>>(&self, objtype: ObjectType, checksum: &str, cancellable: P) -> Result<(gio::InputStream, u64), Error>; - - fn load_variant(&self, objtype: ObjectType, sha256: &str) -> Result; - - fn load_variant_if_exists(&self, objtype: ObjectType, sha256: &str) -> Result; - - #[cfg(any(feature = "v2017_15", feature = "dox"))] - fn mark_commit_partial(&self, checksum: &str, is_partial: bool) -> Result<(), Error>; - - fn open<'a, P: Into>>(&self, cancellable: P) -> Result<(), Error>; - - fn prepare_transaction<'a, P: Into>>(&self, cancellable: P) -> Result; - - fn prune<'a, P: Into>>(&self, flags: RepoPruneFlags, depth: i32, cancellable: P) -> Result<(i32, i32, u64), Error>; - - //fn prune_from_reachable<'a, P: Into>>(&self, options: /*Ignored*/&mut RepoPruneOptions, cancellable: P) -> Result<(i32, i32, u64), Error>; - - fn prune_static_deltas<'a, 'b, P: Into>, Q: Into>>(&self, commit: P, cancellable: Q) -> Result<(), Error>; - - fn pull<'a, 'b, P: Into>, Q: Into>>(&self, remote_name: &str, refs_to_fetch: &[&str], flags: RepoPullFlags, progress: P, cancellable: Q) -> Result<(), Error>; - - fn pull_one_dir<'a, 'b, P: Into>, Q: Into>>(&self, remote_name: &str, dir_to_pull: &str, refs_to_fetch: &[&str], flags: RepoPullFlags, progress: P, cancellable: Q) -> Result<(), Error>; - - fn pull_with_options<'a, 'b, P: Into>, Q: Into>>(&self, remote_name_or_baseurl: &str, options: &glib::Variant, progress: P, cancellable: Q) -> Result<(), Error>; - - fn query_object_storage_size<'a, P: Into>>(&self, objtype: ObjectType, sha256: &str, cancellable: P) -> Result; - - fn read_commit<'a, P: Into>>(&self, ref_: &str, cancellable: P) -> Result<(gio::File, String), Error>; - - fn read_commit_detached_metadata<'a, P: Into>>(&self, checksum: &str, cancellable: P) -> Result; - - fn regenerate_summary<'a, 'b, P: Into>, Q: Into>>(&self, additional_metadata: P, cancellable: Q) -> Result<(), Error>; - - fn reload_config<'a, P: Into>>(&self, cancellable: P) -> Result<(), Error>; - - fn remote_add<'a, 'b, P: Into>, Q: Into>>(&self, name: &str, url: &str, options: P, cancellable: Q) -> Result<(), Error>; - - fn remote_change<'a, 'b, 'c, P: IsA + 'a, Q: Into>, R: Into>, S: Into>>(&self, sysroot: Q, changeop: RepoRemoteChange, name: &str, url: &str, options: R, cancellable: S) -> Result<(), Error>; - - fn remote_delete<'a, P: Into>>(&self, name: &str, cancellable: P) -> Result<(), Error>; - - fn remote_fetch_summary<'a, P: Into>>(&self, name: &str, cancellable: P) -> Result<(glib::Bytes, glib::Bytes), Error>; - - fn remote_fetch_summary_with_options<'a, 'b, P: Into>, Q: Into>>(&self, name: &str, options: P, cancellable: Q) -> Result<(glib::Bytes, glib::Bytes), Error>; - - fn remote_get_gpg_verify(&self, name: &str) -> Result; - - fn remote_get_gpg_verify_summary(&self, name: &str) -> Result; - - fn remote_get_url(&self, name: &str) -> Result; - - fn remote_list(&self) -> Vec; - - //#[cfg(any(feature = "v2018_6", feature = "dox"))] - //fn remote_list_collection_refs<'a, P: Into>>(&self, remote_name: &str, out_all_refs: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 1, id: 0 }/TypeId { ns_id: 0, id: 28 }, cancellable: P) -> Result<(), Error>; - - //fn remote_list_refs<'a, P: Into>>(&self, remote_name: &str, out_all_refs: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 28 }/TypeId { ns_id: 0, id: 28 }, cancellable: P) -> Result<(), Error>; - - #[cfg(any(feature = "v2018_6", feature = "dox"))] - fn resolve_collection_ref<'a, P: Into>>(&self, ref_: &CollectionRef, allow_noent: bool, flags: RepoResolveRevExtFlags, cancellable: P) -> Result, Error>; - - #[cfg(any(feature = "v2018_6", feature = "dox"))] - fn resolve_keyring_for_collection<'a, P: Into>>(&self, collection_id: &str, cancellable: P) -> Result; - - fn resolve_rev(&self, refspec: &str, allow_noent: bool) -> Result; - - fn resolve_rev_ext(&self, refspec: &str, allow_noent: bool, flags: RepoResolveRevExtFlags) -> Result; - - fn scan_hardlinks<'a, P: Into>>(&self, cancellable: P) -> Result<(), Error>; - - fn set_alias_ref_immediate<'a, 'b, 'c, P: Into>, Q: Into>, R: Into>>(&self, remote: P, ref_: &str, target: Q, cancellable: R) -> Result<(), Error>; - - fn set_cache_dir<'a, P: Into>>(&self, dfd: i32, path: &str, cancellable: P) -> Result<(), Error>; - - #[cfg(any(feature = "v2018_6", feature = "dox"))] - fn set_collection_id<'a, P: Into>>(&self, collection_id: P) -> Result<(), Error>; - - #[cfg(any(feature = "v2018_6", feature = "dox"))] - fn set_collection_ref_immediate<'a, 'b, P: Into>, Q: Into>>(&self, ref_: &CollectionRef, checksum: P, cancellable: Q) -> Result<(), Error>; - - fn set_disable_fsync(&self, disable_fsync: bool); - - fn set_ref_immediate<'a, 'b, 'c, P: Into>, Q: Into>, R: Into>>(&self, remote: P, ref_: &str, checksum: Q, cancellable: R) -> Result<(), Error>; - - fn sign_commit<'a, 'b, P: Into>, Q: Into>>(&self, commit_checksum: &str, key_id: &str, homedir: P, cancellable: Q) -> Result<(), Error>; - - fn sign_delta<'a, P: Into>>(&self, from_commit: &str, to_commit: &str, key_id: &str, homedir: &str, cancellable: P) -> Result<(), Error>; - - fn static_delta_execute_offline<'a, P: IsA, Q: Into>>(&self, dir_or_file: &P, skip_validation: bool, cancellable: Q) -> Result<(), Error>; - - fn static_delta_generate<'a, 'b, 'c, P: Into>, Q: Into>, R: Into>>(&self, opt: StaticDeltaGenerateOpt, from: &str, to: &str, metadata: P, params: Q, cancellable: R) -> Result<(), Error>; - - #[cfg(any(feature = "v2018_6", feature = "dox"))] - fn transaction_set_collection_ref<'a, P: Into>>(&self, ref_: &CollectionRef, checksum: P); - - fn transaction_set_ref<'a, 'b, P: Into>, Q: Into>>(&self, remote: P, ref_: &str, checksum: Q); - - fn transaction_set_refspec<'a, P: Into>>(&self, refspec: &str, checksum: P); - - //fn traverse_commit<'a, P: Into>>(&self, commit_checksum: &str, maxdepth: i32, out_reachable: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 2, id: 181 }/TypeId { ns_id: 2, id: 181 }, cancellable: P) -> Result<(), Error>; - - //fn traverse_commit_union<'a, P: Into>>(&self, commit_checksum: &str, maxdepth: i32, inout_reachable: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 25 }/TypeId { ns_id: 0, id: 25 }, cancellable: P) -> Result<(), Error>; - - //#[cfg(any(feature = "v2018_5", feature = "dox"))] - //fn traverse_commit_union_with_parents<'a, P: Into>>(&self, commit_checksum: &str, maxdepth: i32, inout_reachable: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 25 }/TypeId { ns_id: 0, id: 25 }, inout_parents: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 25 }/TypeId { ns_id: 0, id: 25 }, cancellable: P) -> Result<(), Error>; - - //#[cfg(any(feature = "v2018_6", feature = "dox"))] - //fn traverse_reachable_refs<'a, P: Into>>(&self, depth: u32, reachable: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 2, id: 181 }/TypeId { ns_id: 2, id: 181 }, cancellable: P) -> Result<(), Error>; - - fn verify_commit<'a, 'b, 'c, P: IsA + 'a, Q: Into>, R: IsA + 'b, S: Into>, T: Into>>(&self, commit_checksum: &str, keyringdir: Q, extra_keyring: S, cancellable: T) -> Result<(), Error>; - - fn verify_commit_ext<'a, 'b, 'c, P: IsA + 'a, Q: Into>, R: IsA + 'b, S: Into>, T: Into>>(&self, commit_checksum: &str, keyringdir: Q, extra_keyring: S, cancellable: T) -> Result; - - fn verify_commit_for_remote<'a, P: Into>>(&self, commit_checksum: &str, remote_name: &str, cancellable: P) -> Result; - - fn verify_summary<'a, P: Into>>(&self, remote_name: &str, summary: &glib::Bytes, signatures: &glib::Bytes, cancellable: P) -> Result; - - fn write_archive_to_mtree<'a, 'b, P: IsA, Q: Into>, R: Into>>(&self, archive: &P, mtree: &MutableTree, modifier: Q, autocreate_parents: bool, cancellable: R) -> Result<(), Error>; - - fn write_commit<'a, 'b, 'c, 'd, 'e, P: Into>, Q: Into>, R: Into>, S: Into>, T: Into>>(&self, parent: P, subject: Q, body: R, metadata: S, root: &RepoFile, cancellable: T) -> Result; - - fn write_commit_detached_metadata<'a, 'b, P: Into>, Q: Into>>(&self, checksum: &str, metadata: P, cancellable: Q) -> Result<(), Error>; - - fn write_commit_with_time<'a, 'b, 'c, 'd, 'e, P: Into>, Q: Into>, R: Into>, S: Into>, T: Into>>(&self, parent: P, subject: Q, body: R, metadata: S, root: &RepoFile, time: u64, cancellable: T) -> Result; - - fn write_config(&self, new_config: &glib::KeyFile) -> Result<(), Error>; - - //fn write_content<'a, 'b, P: Into>, Q: IsA, R: Into>>(&self, expected_checksum: P, object_input: &Q, length: u64, out_csum: /*Unknown conversion*//*Unimplemented*/FixedArray TypeId { ns_id: 0, id: 3 }; 32, cancellable: R) -> Result<(), Error>; - - fn write_content_trusted<'a, P: IsA, Q: Into>>(&self, checksum: &str, object_input: &P, length: u64, cancellable: Q) -> Result<(), Error>; - - fn write_dfd_to_mtree<'a, 'b, P: Into>, Q: Into>>(&self, dfd: i32, path: &str, mtree: &MutableTree, modifier: P, cancellable: Q) -> Result<(), Error>; - - fn write_directory_to_mtree<'a, 'b, P: IsA, Q: Into>, R: Into>>(&self, dir: &P, mtree: &MutableTree, modifier: Q, cancellable: R) -> Result<(), Error>; - - //fn write_metadata<'a, 'b, P: Into>, Q: Into>>(&self, objtype: ObjectType, expected_checksum: P, object: &glib::Variant, out_csum: /*Unknown conversion*//*Unimplemented*/FixedArray TypeId { ns_id: 0, id: 3 }; 32, cancellable: Q) -> Result<(), Error>; - - fn write_metadata_stream_trusted<'a, P: IsA, Q: Into>>(&self, objtype: ObjectType, checksum: &str, object_input: &P, length: u64, cancellable: Q) -> Result<(), Error>; - - fn write_metadata_trusted<'a, P: Into>>(&self, objtype: ObjectType, checksum: &str, variant: &glib::Variant, cancellable: P) -> Result<(), Error>; - - fn write_mtree<'a, P: Into>>(&self, mtree: &MutableTree, cancellable: P) -> Result; - - fn get_property_remotes_config_dir(&self) -> Option; - - fn get_property_sysroot_path(&self) -> Option; - - fn connect_gpg_verify_result(&self, f: F) -> SignalHandlerId; -} - -impl + IsA> RepoExt for O { - fn abort_transaction<'a, P: Into>>(&self, cancellable: P) -> Result<(), Error> { - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_abort_transaction(self.to_glib_none().0, cancellable.0, &mut error); - if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } - } - } - - fn add_gpg_signature_summary<'a, 'b, P: Into>, Q: Into>>(&self, key_id: &[&str], homedir: P, cancellable: Q) -> Result<(), Error> { - let homedir = homedir.into(); - let homedir = homedir.to_glib_none(); - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_add_gpg_signature_summary(self.to_glib_none().0, key_id.to_glib_none().0, homedir.0, cancellable.0, &mut error); - if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } - } - } - - fn append_gpg_signature<'a, P: Into>>(&self, commit_checksum: &str, signature_bytes: &glib::Bytes, cancellable: P) -> Result<(), Error> { - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_append_gpg_signature(self.to_glib_none().0, commit_checksum.to_glib_none().0, signature_bytes.to_glib_none().0, cancellable.0, &mut error); - if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } - } - } - - //fn checkout_at<'a, 'b, P: Into>, Q: Into>>(&self, options: P, destination_dfd: i32, destination_path: &str, commit: &str, cancellable: Q) -> Result<(), Error> { - // unsafe { TODO: call ffi::ostree_repo_checkout_at() } - //} - - fn checkout_gc<'a, P: Into>>(&self, cancellable: P) -> Result<(), Error> { - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_checkout_gc(self.to_glib_none().0, cancellable.0, &mut error); - if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } - } - } - - fn checkout_tree<'a, P: IsA, Q: Into>>(&self, mode: RepoCheckoutMode, overwrite_mode: RepoCheckoutOverwriteMode, destination: &P, source: &RepoFile, source_info: &gio::FileInfo, cancellable: Q) -> Result<(), Error> { - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_checkout_tree(self.to_glib_none().0, mode.to_glib(), overwrite_mode.to_glib(), destination.to_glib_none().0, source.to_glib_none().0, source_info.to_glib_none().0, cancellable.0, &mut error); - if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } - } - } - - //fn checkout_tree_at<'a, 'b, P: Into>, Q: Into>>(&self, options: P, destination_dfd: i32, destination_path: &str, commit: &str, cancellable: Q) -> Result<(), Error> { - // unsafe { TODO: call ffi::ostree_repo_checkout_tree_at() } - //} - - fn commit_transaction<'a, P: Into>>(&self, cancellable: P) -> Result { - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut out_stats = RepoTransactionStats::uninitialized(); - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_commit_transaction(self.to_glib_none().0, out_stats.to_glib_none_mut().0, cancellable.0, &mut error); - if error.is_null() { Ok(out_stats) } else { Err(from_glib_full(error)) } - } - } - - fn copy_config(&self) -> Option { - unsafe { - from_glib_full(ffi::ostree_repo_copy_config(self.to_glib_none().0)) - } - } - - fn create<'a, P: Into>>(&self, mode: RepoMode, cancellable: P) -> Result<(), Error> { - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_create(self.to_glib_none().0, mode.to_glib(), cancellable.0, &mut error); - if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } - } - } - - fn delete_object<'a, P: Into>>(&self, objtype: ObjectType, sha256: &str, cancellable: P) -> Result<(), Error> { - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_delete_object(self.to_glib_none().0, objtype.to_glib(), sha256.to_glib_none().0, cancellable.0, &mut error); - if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } - } - } - - #[cfg(any(feature = "v2017_12", feature = "dox"))] - fn equal(&self, b: &Repo) -> bool { - unsafe { - from_glib(ffi::ostree_repo_equal(self.to_glib_none().0, b.to_glib_none().0)) - } - } - - //fn export_tree_to_archive<'a, P: Into>, Q: Into>>(&self, opts: /*Ignored*/&mut RepoExportArchiveOptions, root: &RepoFile, archive: P, cancellable: Q) -> Result<(), Error> { - // unsafe { TODO: call ffi::ostree_repo_export_tree_to_archive() } - //} - - #[cfg(any(feature = "v2017_15", feature = "dox"))] - fn fsck_object<'a, P: Into>>(&self, objtype: ObjectType, sha256: &str, cancellable: P) -> Result<(), Error> { - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_fsck_object(self.to_glib_none().0, objtype.to_glib(), sha256.to_glib_none().0, cancellable.0, &mut error); - if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } - } - } - - #[cfg(any(feature = "v2018_6", feature = "dox"))] - fn get_collection_id(&self) -> Option { - unsafe { - from_glib_none(ffi::ostree_repo_get_collection_id(self.to_glib_none().0)) - } - } - - fn get_config(&self) -> Option { - unsafe { - from_glib_none(ffi::ostree_repo_get_config(self.to_glib_none().0)) - } - } - - fn get_dfd(&self) -> i32 { - unsafe { - ffi::ostree_repo_get_dfd(self.to_glib_none().0) - } - } - - fn get_disable_fsync(&self) -> bool { - unsafe { - from_glib(ffi::ostree_repo_get_disable_fsync(self.to_glib_none().0)) - } - } - - fn get_mode(&self) -> RepoMode { - unsafe { - from_glib(ffi::ostree_repo_get_mode(self.to_glib_none().0)) - } - } - - fn get_parent(&self) -> Option { - unsafe { - from_glib_none(ffi::ostree_repo_get_parent(self.to_glib_none().0)) - } - } - - fn get_path(&self) -> Option { - unsafe { - from_glib_none(ffi::ostree_repo_get_path(self.to_glib_none().0)) - } - } - - fn get_remote_boolean_option(&self, remote_name: &str, option_name: &str, default_value: bool) -> Result { - unsafe { - let mut out_value = mem::uninitialized(); - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_get_remote_boolean_option(self.to_glib_none().0, remote_name.to_glib_none().0, option_name.to_glib_none().0, default_value.to_glib(), &mut out_value, &mut error); - if error.is_null() { Ok(from_glib(out_value)) } else { Err(from_glib_full(error)) } - } - } - - fn get_remote_list_option(&self, remote_name: &str, option_name: &str) -> Result, Error> { - unsafe { - let mut out_value = ptr::null_mut(); - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_get_remote_list_option(self.to_glib_none().0, remote_name.to_glib_none().0, option_name.to_glib_none().0, &mut out_value, &mut error); - if error.is_null() { Ok(FromGlibPtrContainer::from_glib_full(out_value)) } else { Err(from_glib_full(error)) } - } - } - - fn get_remote_option<'a, P: Into>>(&self, remote_name: &str, option_name: &str, default_value: P) -> Result { - let default_value = default_value.into(); - let default_value = default_value.to_glib_none(); - unsafe { - let mut out_value = ptr::null_mut(); - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_get_remote_option(self.to_glib_none().0, remote_name.to_glib_none().0, option_name.to_glib_none().0, default_value.0, &mut out_value, &mut error); - if error.is_null() { Ok(from_glib_full(out_value)) } else { Err(from_glib_full(error)) } - } - } - - fn gpg_verify_data<'a, 'b, 'c, 'd, P: Into>, Q: IsA + 'b, R: Into>, S: IsA + 'c, T: Into>, U: Into>>(&self, remote_name: P, data: &glib::Bytes, signatures: &glib::Bytes, keyringdir: R, extra_keyring: T, cancellable: U) -> Result { - let remote_name = remote_name.into(); - let remote_name = remote_name.to_glib_none(); - let keyringdir = keyringdir.into(); - let keyringdir = keyringdir.to_glib_none(); - let extra_keyring = extra_keyring.into(); - let extra_keyring = extra_keyring.to_glib_none(); - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut error = ptr::null_mut(); - let ret = ffi::ostree_repo_gpg_verify_data(self.to_glib_none().0, remote_name.0, data.to_glib_none().0, signatures.to_glib_none().0, keyringdir.0, extra_keyring.0, cancellable.0, &mut error); - if error.is_null() { Ok(from_glib_full(ret)) } else { Err(from_glib_full(error)) } - } - } - - fn has_object<'a, P: Into>>(&self, objtype: ObjectType, checksum: &str, cancellable: P) -> Result { - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut out_have_object = mem::uninitialized(); - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_has_object(self.to_glib_none().0, objtype.to_glib(), checksum.to_glib_none().0, &mut out_have_object, cancellable.0, &mut error); - if error.is_null() { Ok(from_glib(out_have_object)) } else { Err(from_glib_full(error)) } - } - } - - #[cfg(any(feature = "v2017_12", feature = "dox"))] - fn hash(&self) -> u32 { - unsafe { - ffi::ostree_repo_hash(self.to_glib_none().0) - } - } - - //fn import_archive_to_mtree<'a, 'b, P: Into>, Q: Into>, R: Into>>(&self, opts: /*Ignored*/&mut RepoImportArchiveOptions, archive: P, mtree: &MutableTree, modifier: Q, cancellable: R) -> Result<(), Error> { - // unsafe { TODO: call ffi::ostree_repo_import_archive_to_mtree() } - //} - - fn import_object_from<'a, P: Into>>(&self, source: &Repo, objtype: ObjectType, checksum: &str, cancellable: P) -> Result<(), Error> { - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_import_object_from(self.to_glib_none().0, source.to_glib_none().0, objtype.to_glib(), checksum.to_glib_none().0, cancellable.0, &mut error); - if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } - } - } - - fn import_object_from_with_trust<'a, P: Into>>(&self, source: &Repo, objtype: ObjectType, checksum: &str, trusted: bool, cancellable: P) -> Result<(), Error> { - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_import_object_from_with_trust(self.to_glib_none().0, source.to_glib_none().0, objtype.to_glib(), checksum.to_glib_none().0, trusted.to_glib(), cancellable.0, &mut error); - if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } - } - } - - fn is_system(&self) -> bool { - unsafe { - from_glib(ffi::ostree_repo_is_system(self.to_glib_none().0)) - } - } - - fn is_writable(&self) -> Result<(), Error> { - unsafe { - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_is_writable(self.to_glib_none().0, &mut error); - if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } - } - } - - //#[cfg(any(feature = "v2018_6", feature = "dox"))] - //fn list_collection_refs<'a, 'b, P: Into>, Q: Into>>(&self, match_collection_id: P, out_all_refs: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 1, id: 0 }/TypeId { ns_id: 0, id: 28 }, flags: RepoListRefsExtFlags, cancellable: Q) -> Result<(), Error> { - // unsafe { TODO: call ffi::ostree_repo_list_collection_refs() } - //} - - //fn list_commit_objects_starting_with<'a, P: Into>>(&self, start: &str, out_commits: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 2, id: 181 }/TypeId { ns_id: 2, id: 181 }, cancellable: P) -> Result<(), Error> { - // unsafe { TODO: call ffi::ostree_repo_list_commit_objects_starting_with() } - //} - - //fn list_objects<'a, P: Into>>(&self, flags: /*Ignored*/RepoListObjectsFlags, out_objects: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 2, id: 181 }/TypeId { ns_id: 2, id: 181 }, cancellable: P) -> Result<(), Error> { - // unsafe { TODO: call ffi::ostree_repo_list_objects() } - //} - - //fn list_refs<'a, 'b, P: Into>, Q: Into>>(&self, refspec_prefix: P, out_all_refs: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 28 }/TypeId { ns_id: 0, id: 28 }, cancellable: Q) -> Result<(), Error> { - // unsafe { TODO: call ffi::ostree_repo_list_refs() } - //} - - //fn list_refs_ext<'a, 'b, P: Into>, Q: Into>>(&self, refspec_prefix: P, out_all_refs: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 28 }/TypeId { ns_id: 0, id: 28 }, flags: RepoListRefsExtFlags, cancellable: Q) -> Result<(), Error> { - // unsafe { TODO: call ffi::ostree_repo_list_refs_ext() } - //} - - //fn list_static_delta_names<'a, P: Into>>(&self, out_deltas: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 0, id: 28 }, cancellable: P) -> Result<(), Error> { - // unsafe { TODO: call ffi::ostree_repo_list_static_delta_names() } - //} - - #[cfg(any(feature = "v2015_7", feature = "dox"))] - fn load_commit(&self, checksum: &str) -> Result<(glib::Variant, RepoCommitState), Error> { - unsafe { - let mut out_commit = ptr::null_mut(); - let mut out_state = mem::uninitialized(); - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_load_commit(self.to_glib_none().0, checksum.to_glib_none().0, &mut out_commit, &mut out_state, &mut error); - if error.is_null() { Ok((from_glib_full(out_commit), from_glib(out_state))) } else { Err(from_glib_full(error)) } - } - } - - fn load_file<'a, P: Into>>(&self, checksum: &str, cancellable: P) -> Result<(Option, Option, Option), Error> { - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut out_input = ptr::null_mut(); - let mut out_file_info = ptr::null_mut(); - let mut out_xattrs = ptr::null_mut(); - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_load_file(self.to_glib_none().0, checksum.to_glib_none().0, &mut out_input, &mut out_file_info, &mut out_xattrs, cancellable.0, &mut error); - if error.is_null() { Ok((from_glib_full(out_input), from_glib_full(out_file_info), from_glib_full(out_xattrs))) } else { Err(from_glib_full(error)) } - } - } - - fn load_object_stream<'a, P: Into>>(&self, objtype: ObjectType, checksum: &str, cancellable: P) -> Result<(gio::InputStream, u64), Error> { - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut out_input = ptr::null_mut(); - let mut out_size = mem::uninitialized(); - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_load_object_stream(self.to_glib_none().0, objtype.to_glib(), checksum.to_glib_none().0, &mut out_input, &mut out_size, cancellable.0, &mut error); - if error.is_null() { Ok((from_glib_full(out_input), out_size)) } else { Err(from_glib_full(error)) } - } - } - - fn load_variant(&self, objtype: ObjectType, sha256: &str) -> Result { - unsafe { - let mut out_variant = ptr::null_mut(); - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_load_variant(self.to_glib_none().0, objtype.to_glib(), sha256.to_glib_none().0, &mut out_variant, &mut error); - if error.is_null() { Ok(from_glib_full(out_variant)) } else { Err(from_glib_full(error)) } - } - } - - fn load_variant_if_exists(&self, objtype: ObjectType, sha256: &str) -> Result { - unsafe { - let mut out_variant = ptr::null_mut(); - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_load_variant_if_exists(self.to_glib_none().0, objtype.to_glib(), sha256.to_glib_none().0, &mut out_variant, &mut error); - if error.is_null() { Ok(from_glib_full(out_variant)) } else { Err(from_glib_full(error)) } - } - } - - #[cfg(any(feature = "v2017_15", feature = "dox"))] - fn mark_commit_partial(&self, checksum: &str, is_partial: bool) -> Result<(), Error> { - unsafe { - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_mark_commit_partial(self.to_glib_none().0, checksum.to_glib_none().0, is_partial.to_glib(), &mut error); - if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } - } - } - - fn open<'a, P: Into>>(&self, cancellable: P) -> Result<(), Error> { - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_open(self.to_glib_none().0, cancellable.0, &mut error); - if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } - } - } - - fn prepare_transaction<'a, P: Into>>(&self, cancellable: P) -> Result { - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut out_transaction_resume = mem::uninitialized(); - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_prepare_transaction(self.to_glib_none().0, &mut out_transaction_resume, cancellable.0, &mut error); - if error.is_null() { Ok(from_glib(out_transaction_resume)) } else { Err(from_glib_full(error)) } - } - } - - fn prune<'a, P: Into>>(&self, flags: RepoPruneFlags, depth: i32, cancellable: P) -> Result<(i32, i32, u64), Error> { - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut out_objects_total = mem::uninitialized(); - let mut out_objects_pruned = mem::uninitialized(); - let mut out_pruned_object_size_total = mem::uninitialized(); - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_prune(self.to_glib_none().0, flags.to_glib(), depth, &mut out_objects_total, &mut out_objects_pruned, &mut out_pruned_object_size_total, cancellable.0, &mut error); - if error.is_null() { Ok((out_objects_total, out_objects_pruned, out_pruned_object_size_total)) } else { Err(from_glib_full(error)) } - } - } - - //fn prune_from_reachable<'a, P: Into>>(&self, options: /*Ignored*/&mut RepoPruneOptions, cancellable: P) -> Result<(i32, i32, u64), Error> { - // unsafe { TODO: call ffi::ostree_repo_prune_from_reachable() } - //} - - fn prune_static_deltas<'a, 'b, P: Into>, Q: Into>>(&self, commit: P, cancellable: Q) -> Result<(), Error> { - let commit = commit.into(); - let commit = commit.to_glib_none(); - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_prune_static_deltas(self.to_glib_none().0, commit.0, cancellable.0, &mut error); - if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } - } - } - - fn pull<'a, 'b, P: Into>, Q: Into>>(&self, remote_name: &str, refs_to_fetch: &[&str], flags: RepoPullFlags, progress: P, cancellable: Q) -> Result<(), Error> { - let progress = progress.into(); - let progress = progress.to_glib_none(); - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_pull(self.to_glib_none().0, remote_name.to_glib_none().0, refs_to_fetch.to_glib_none().0, flags.to_glib(), progress.0, cancellable.0, &mut error); - if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } - } - } - - fn pull_one_dir<'a, 'b, P: Into>, Q: Into>>(&self, remote_name: &str, dir_to_pull: &str, refs_to_fetch: &[&str], flags: RepoPullFlags, progress: P, cancellable: Q) -> Result<(), Error> { - let progress = progress.into(); - let progress = progress.to_glib_none(); - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_pull_one_dir(self.to_glib_none().0, remote_name.to_glib_none().0, dir_to_pull.to_glib_none().0, refs_to_fetch.to_glib_none().0, flags.to_glib(), progress.0, cancellable.0, &mut error); - if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } - } - } - - fn pull_with_options<'a, 'b, P: Into>, Q: Into>>(&self, remote_name_or_baseurl: &str, options: &glib::Variant, progress: P, cancellable: Q) -> Result<(), Error> { - let progress = progress.into(); - let progress = progress.to_glib_none(); - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_pull_with_options(self.to_glib_none().0, remote_name_or_baseurl.to_glib_none().0, options.to_glib_none().0, progress.0, cancellable.0, &mut error); - if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } - } - } - - fn query_object_storage_size<'a, P: Into>>(&self, objtype: ObjectType, sha256: &str, cancellable: P) -> Result { - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut out_size = mem::uninitialized(); - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_query_object_storage_size(self.to_glib_none().0, objtype.to_glib(), sha256.to_glib_none().0, &mut out_size, cancellable.0, &mut error); - if error.is_null() { Ok(out_size) } else { Err(from_glib_full(error)) } - } - } - - fn read_commit<'a, P: Into>>(&self, ref_: &str, cancellable: P) -> Result<(gio::File, String), Error> { - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut out_root = ptr::null_mut(); - let mut out_commit = ptr::null_mut(); - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_read_commit(self.to_glib_none().0, ref_.to_glib_none().0, &mut out_root, &mut out_commit, cancellable.0, &mut error); - if error.is_null() { Ok((from_glib_full(out_root), from_glib_full(out_commit))) } else { Err(from_glib_full(error)) } - } - } - - fn read_commit_detached_metadata<'a, P: Into>>(&self, checksum: &str, cancellable: P) -> Result { - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut out_metadata = ptr::null_mut(); - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_read_commit_detached_metadata(self.to_glib_none().0, checksum.to_glib_none().0, &mut out_metadata, cancellable.0, &mut error); - if error.is_null() { Ok(from_glib_full(out_metadata)) } else { Err(from_glib_full(error)) } - } - } - - fn regenerate_summary<'a, 'b, P: Into>, Q: Into>>(&self, additional_metadata: P, cancellable: Q) -> Result<(), Error> { - let additional_metadata = additional_metadata.into(); - let additional_metadata = additional_metadata.to_glib_none(); - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_regenerate_summary(self.to_glib_none().0, additional_metadata.0, cancellable.0, &mut error); - if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } - } - } - - fn reload_config<'a, P: Into>>(&self, cancellable: P) -> Result<(), Error> { - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_reload_config(self.to_glib_none().0, cancellable.0, &mut error); - if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } - } - } - - fn remote_add<'a, 'b, P: Into>, Q: Into>>(&self, name: &str, url: &str, options: P, cancellable: Q) -> Result<(), Error> { - let options = options.into(); - let options = options.to_glib_none(); - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_remote_add(self.to_glib_none().0, name.to_glib_none().0, url.to_glib_none().0, options.0, cancellable.0, &mut error); - if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } - } - } - - fn remote_change<'a, 'b, 'c, P: IsA + 'a, Q: Into>, R: Into>, S: Into>>(&self, sysroot: Q, changeop: RepoRemoteChange, name: &str, url: &str, options: R, cancellable: S) -> Result<(), Error> { - let sysroot = sysroot.into(); - let sysroot = sysroot.to_glib_none(); - let options = options.into(); - let options = options.to_glib_none(); - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_remote_change(self.to_glib_none().0, sysroot.0, changeop.to_glib(), name.to_glib_none().0, url.to_glib_none().0, options.0, cancellable.0, &mut error); - if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } - } - } - - fn remote_delete<'a, P: Into>>(&self, name: &str, cancellable: P) -> Result<(), Error> { - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_remote_delete(self.to_glib_none().0, name.to_glib_none().0, cancellable.0, &mut error); - if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } - } - } - - fn remote_fetch_summary<'a, P: Into>>(&self, name: &str, cancellable: P) -> Result<(glib::Bytes, glib::Bytes), Error> { - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut out_summary = ptr::null_mut(); - let mut out_signatures = ptr::null_mut(); - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_remote_fetch_summary(self.to_glib_none().0, name.to_glib_none().0, &mut out_summary, &mut out_signatures, cancellable.0, &mut error); - if error.is_null() { Ok((from_glib_full(out_summary), from_glib_full(out_signatures))) } else { Err(from_glib_full(error)) } - } - } - - fn remote_fetch_summary_with_options<'a, 'b, P: Into>, Q: Into>>(&self, name: &str, options: P, cancellable: Q) -> Result<(glib::Bytes, glib::Bytes), Error> { - let options = options.into(); - let options = options.to_glib_none(); - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut out_summary = ptr::null_mut(); - let mut out_signatures = ptr::null_mut(); - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_remote_fetch_summary_with_options(self.to_glib_none().0, name.to_glib_none().0, options.0, &mut out_summary, &mut out_signatures, cancellable.0, &mut error); - if error.is_null() { Ok((from_glib_full(out_summary), from_glib_full(out_signatures))) } else { Err(from_glib_full(error)) } - } - } - - fn remote_get_gpg_verify(&self, name: &str) -> Result { - unsafe { - let mut out_gpg_verify = mem::uninitialized(); - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_remote_get_gpg_verify(self.to_glib_none().0, name.to_glib_none().0, &mut out_gpg_verify, &mut error); - if error.is_null() { Ok(from_glib(out_gpg_verify)) } else { Err(from_glib_full(error)) } - } - } - - fn remote_get_gpg_verify_summary(&self, name: &str) -> Result { - unsafe { - let mut out_gpg_verify_summary = mem::uninitialized(); - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_remote_get_gpg_verify_summary(self.to_glib_none().0, name.to_glib_none().0, &mut out_gpg_verify_summary, &mut error); - if error.is_null() { Ok(from_glib(out_gpg_verify_summary)) } else { Err(from_glib_full(error)) } - } - } - - fn remote_get_url(&self, name: &str) -> Result { - unsafe { - let mut out_url = ptr::null_mut(); - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_remote_get_url(self.to_glib_none().0, name.to_glib_none().0, &mut out_url, &mut error); - if error.is_null() { Ok(from_glib_full(out_url)) } else { Err(from_glib_full(error)) } - } - } - - fn remote_list(&self) -> Vec { - unsafe { - let mut out_n_remotes = mem::uninitialized(); - let ret = FromGlibContainer::from_glib_full_num(ffi::ostree_repo_remote_list(self.to_glib_none().0, &mut out_n_remotes), out_n_remotes as usize); - ret - } - } - - //#[cfg(any(feature = "v2018_6", feature = "dox"))] - //fn remote_list_collection_refs<'a, P: Into>>(&self, remote_name: &str, out_all_refs: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 1, id: 0 }/TypeId { ns_id: 0, id: 28 }, cancellable: P) -> Result<(), Error> { - // unsafe { TODO: call ffi::ostree_repo_remote_list_collection_refs() } - //} - - //fn remote_list_refs<'a, P: Into>>(&self, remote_name: &str, out_all_refs: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 28 }/TypeId { ns_id: 0, id: 28 }, cancellable: P) -> Result<(), Error> { - // unsafe { TODO: call ffi::ostree_repo_remote_list_refs() } - //} - - #[cfg(any(feature = "v2018_6", feature = "dox"))] - fn resolve_collection_ref<'a, P: Into>>(&self, ref_: &CollectionRef, allow_noent: bool, flags: RepoResolveRevExtFlags, cancellable: P) -> Result, Error> { - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut out_rev = ptr::null_mut(); - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_resolve_collection_ref(self.to_glib_none().0, ref_.to_glib_none().0, allow_noent.to_glib(), flags.to_glib(), &mut out_rev, cancellable.0, &mut error); - if error.is_null() { Ok(from_glib_full(out_rev)) } else { Err(from_glib_full(error)) } - } - } - - #[cfg(any(feature = "v2018_6", feature = "dox"))] - fn resolve_keyring_for_collection<'a, P: Into>>(&self, collection_id: &str, cancellable: P) -> Result { - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut error = ptr::null_mut(); - let ret = ffi::ostree_repo_resolve_keyring_for_collection(self.to_glib_none().0, collection_id.to_glib_none().0, cancellable.0, &mut error); - if error.is_null() { Ok(from_glib_full(ret)) } else { Err(from_glib_full(error)) } - } - } - - fn resolve_rev(&self, refspec: &str, allow_noent: bool) -> Result { - unsafe { - let mut out_rev = ptr::null_mut(); - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_resolve_rev(self.to_glib_none().0, refspec.to_glib_none().0, allow_noent.to_glib(), &mut out_rev, &mut error); - if error.is_null() { Ok(from_glib_full(out_rev)) } else { Err(from_glib_full(error)) } - } - } - - fn resolve_rev_ext(&self, refspec: &str, allow_noent: bool, flags: RepoResolveRevExtFlags) -> Result { - unsafe { - let mut out_rev = ptr::null_mut(); - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_resolve_rev_ext(self.to_glib_none().0, refspec.to_glib_none().0, allow_noent.to_glib(), flags.to_glib(), &mut out_rev, &mut error); - if error.is_null() { Ok(from_glib_full(out_rev)) } else { Err(from_glib_full(error)) } - } - } - - fn scan_hardlinks<'a, P: Into>>(&self, cancellable: P) -> Result<(), Error> { - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_scan_hardlinks(self.to_glib_none().0, cancellable.0, &mut error); - if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } - } - } - - fn set_alias_ref_immediate<'a, 'b, 'c, P: Into>, Q: Into>, R: Into>>(&self, remote: P, ref_: &str, target: Q, cancellable: R) -> Result<(), Error> { - let remote = remote.into(); - let remote = remote.to_glib_none(); - let target = target.into(); - let target = target.to_glib_none(); - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_set_alias_ref_immediate(self.to_glib_none().0, remote.0, ref_.to_glib_none().0, target.0, cancellable.0, &mut error); - if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } - } - } - - fn set_cache_dir<'a, P: Into>>(&self, dfd: i32, path: &str, cancellable: P) -> Result<(), Error> { - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_set_cache_dir(self.to_glib_none().0, dfd, path.to_glib_none().0, cancellable.0, &mut error); - if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } - } - } - - #[cfg(any(feature = "v2018_6", feature = "dox"))] - fn set_collection_id<'a, P: Into>>(&self, collection_id: P) -> Result<(), Error> { - let collection_id = collection_id.into(); - let collection_id = collection_id.to_glib_none(); - unsafe { - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_set_collection_id(self.to_glib_none().0, collection_id.0, &mut error); - if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } - } - } - - #[cfg(any(feature = "v2018_6", feature = "dox"))] - fn set_collection_ref_immediate<'a, 'b, P: Into>, Q: Into>>(&self, ref_: &CollectionRef, checksum: P, cancellable: Q) -> Result<(), Error> { - let checksum = checksum.into(); - let checksum = checksum.to_glib_none(); - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_set_collection_ref_immediate(self.to_glib_none().0, ref_.to_glib_none().0, checksum.0, cancellable.0, &mut error); - if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } - } - } - - fn set_disable_fsync(&self, disable_fsync: bool) { - unsafe { - ffi::ostree_repo_set_disable_fsync(self.to_glib_none().0, disable_fsync.to_glib()); - } - } - - fn set_ref_immediate<'a, 'b, 'c, P: Into>, Q: Into>, R: Into>>(&self, remote: P, ref_: &str, checksum: Q, cancellable: R) -> Result<(), Error> { - let remote = remote.into(); - let remote = remote.to_glib_none(); - let checksum = checksum.into(); - let checksum = checksum.to_glib_none(); - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_set_ref_immediate(self.to_glib_none().0, remote.0, ref_.to_glib_none().0, checksum.0, cancellable.0, &mut error); - if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } - } - } - - fn sign_commit<'a, 'b, P: Into>, Q: Into>>(&self, commit_checksum: &str, key_id: &str, homedir: P, cancellable: Q) -> Result<(), Error> { - let homedir = homedir.into(); - let homedir = homedir.to_glib_none(); - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_sign_commit(self.to_glib_none().0, commit_checksum.to_glib_none().0, key_id.to_glib_none().0, homedir.0, cancellable.0, &mut error); - if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } - } - } - - fn sign_delta<'a, P: Into>>(&self, from_commit: &str, to_commit: &str, key_id: &str, homedir: &str, cancellable: P) -> Result<(), Error> { - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_sign_delta(self.to_glib_none().0, from_commit.to_glib_none().0, to_commit.to_glib_none().0, key_id.to_glib_none().0, homedir.to_glib_none().0, cancellable.0, &mut error); - if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } - } - } - - fn static_delta_execute_offline<'a, P: IsA, Q: Into>>(&self, dir_or_file: &P, skip_validation: bool, cancellable: Q) -> Result<(), Error> { - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_static_delta_execute_offline(self.to_glib_none().0, dir_or_file.to_glib_none().0, skip_validation.to_glib(), cancellable.0, &mut error); - if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } - } - } - - fn static_delta_generate<'a, 'b, 'c, P: Into>, Q: Into>, R: Into>>(&self, opt: StaticDeltaGenerateOpt, from: &str, to: &str, metadata: P, params: Q, cancellable: R) -> Result<(), Error> { - let metadata = metadata.into(); - let metadata = metadata.to_glib_none(); - let params = params.into(); - let params = params.to_glib_none(); - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_static_delta_generate(self.to_glib_none().0, opt.to_glib(), from.to_glib_none().0, to.to_glib_none().0, metadata.0, params.0, cancellable.0, &mut error); - if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } - } - } - - #[cfg(any(feature = "v2018_6", feature = "dox"))] - fn transaction_set_collection_ref<'a, P: Into>>(&self, ref_: &CollectionRef, checksum: P) { - let checksum = checksum.into(); - let checksum = checksum.to_glib_none(); - unsafe { - ffi::ostree_repo_transaction_set_collection_ref(self.to_glib_none().0, ref_.to_glib_none().0, checksum.0); - } - } - - fn transaction_set_ref<'a, 'b, P: Into>, Q: Into>>(&self, remote: P, ref_: &str, checksum: Q) { - let remote = remote.into(); - let remote = remote.to_glib_none(); - let checksum = checksum.into(); - let checksum = checksum.to_glib_none(); - unsafe { - ffi::ostree_repo_transaction_set_ref(self.to_glib_none().0, remote.0, ref_.to_glib_none().0, checksum.0); - } - } - - fn transaction_set_refspec<'a, P: Into>>(&self, refspec: &str, checksum: P) { - let checksum = checksum.into(); - let checksum = checksum.to_glib_none(); - unsafe { - ffi::ostree_repo_transaction_set_refspec(self.to_glib_none().0, refspec.to_glib_none().0, checksum.0); - } - } - - //fn traverse_commit<'a, P: Into>>(&self, commit_checksum: &str, maxdepth: i32, out_reachable: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 2, id: 181 }/TypeId { ns_id: 2, id: 181 }, cancellable: P) -> Result<(), Error> { - // unsafe { TODO: call ffi::ostree_repo_traverse_commit() } - //} - - //fn traverse_commit_union<'a, P: Into>>(&self, commit_checksum: &str, maxdepth: i32, inout_reachable: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 25 }/TypeId { ns_id: 0, id: 25 }, cancellable: P) -> Result<(), Error> { - // unsafe { TODO: call ffi::ostree_repo_traverse_commit_union() } - //} - - //#[cfg(any(feature = "v2018_5", feature = "dox"))] - //fn traverse_commit_union_with_parents<'a, P: Into>>(&self, commit_checksum: &str, maxdepth: i32, inout_reachable: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 25 }/TypeId { ns_id: 0, id: 25 }, inout_parents: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 25 }/TypeId { ns_id: 0, id: 25 }, cancellable: P) -> Result<(), Error> { - // unsafe { TODO: call ffi::ostree_repo_traverse_commit_union_with_parents() } - //} - - //#[cfg(any(feature = "v2018_6", feature = "dox"))] - //fn traverse_reachable_refs<'a, P: Into>>(&self, depth: u32, reachable: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 2, id: 181 }/TypeId { ns_id: 2, id: 181 }, cancellable: P) -> Result<(), Error> { - // unsafe { TODO: call ffi::ostree_repo_traverse_reachable_refs() } - //} - - fn verify_commit<'a, 'b, 'c, P: IsA + 'a, Q: Into>, R: IsA + 'b, S: Into>, T: Into>>(&self, commit_checksum: &str, keyringdir: Q, extra_keyring: S, cancellable: T) -> Result<(), Error> { - let keyringdir = keyringdir.into(); - let keyringdir = keyringdir.to_glib_none(); - let extra_keyring = extra_keyring.into(); - let extra_keyring = extra_keyring.to_glib_none(); - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_verify_commit(self.to_glib_none().0, commit_checksum.to_glib_none().0, keyringdir.0, extra_keyring.0, cancellable.0, &mut error); - if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } - } - } - - fn verify_commit_ext<'a, 'b, 'c, P: IsA + 'a, Q: Into>, R: IsA + 'b, S: Into>, T: Into>>(&self, commit_checksum: &str, keyringdir: Q, extra_keyring: S, cancellable: T) -> Result { - let keyringdir = keyringdir.into(); - let keyringdir = keyringdir.to_glib_none(); - let extra_keyring = extra_keyring.into(); - let extra_keyring = extra_keyring.to_glib_none(); - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut error = ptr::null_mut(); - let ret = ffi::ostree_repo_verify_commit_ext(self.to_glib_none().0, commit_checksum.to_glib_none().0, keyringdir.0, extra_keyring.0, cancellable.0, &mut error); - if error.is_null() { Ok(from_glib_full(ret)) } else { Err(from_glib_full(error)) } - } - } - - fn verify_commit_for_remote<'a, P: Into>>(&self, commit_checksum: &str, remote_name: &str, cancellable: P) -> Result { - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut error = ptr::null_mut(); - let ret = ffi::ostree_repo_verify_commit_for_remote(self.to_glib_none().0, commit_checksum.to_glib_none().0, remote_name.to_glib_none().0, cancellable.0, &mut error); - if error.is_null() { Ok(from_glib_full(ret)) } else { Err(from_glib_full(error)) } - } - } - - fn verify_summary<'a, P: Into>>(&self, remote_name: &str, summary: &glib::Bytes, signatures: &glib::Bytes, cancellable: P) -> Result { - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut error = ptr::null_mut(); - let ret = ffi::ostree_repo_verify_summary(self.to_glib_none().0, remote_name.to_glib_none().0, summary.to_glib_none().0, signatures.to_glib_none().0, cancellable.0, &mut error); - if error.is_null() { Ok(from_glib_full(ret)) } else { Err(from_glib_full(error)) } - } - } - - fn write_archive_to_mtree<'a, 'b, P: IsA, Q: Into>, R: Into>>(&self, archive: &P, mtree: &MutableTree, modifier: Q, autocreate_parents: bool, cancellable: R) -> Result<(), Error> { - let modifier = modifier.into(); - let modifier = modifier.to_glib_none(); - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_write_archive_to_mtree(self.to_glib_none().0, archive.to_glib_none().0, mtree.to_glib_none().0, modifier.0, autocreate_parents.to_glib(), cancellable.0, &mut error); - if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } - } - } - - fn write_commit<'a, 'b, 'c, 'd, 'e, P: Into>, Q: Into>, R: Into>, S: Into>, T: Into>>(&self, parent: P, subject: Q, body: R, metadata: S, root: &RepoFile, cancellable: T) -> Result { - let parent = parent.into(); - let parent = parent.to_glib_none(); - let subject = subject.into(); - let subject = subject.to_glib_none(); - let body = body.into(); - let body = body.to_glib_none(); - let metadata = metadata.into(); - let metadata = metadata.to_glib_none(); - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut out_commit = ptr::null_mut(); - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_write_commit(self.to_glib_none().0, parent.0, subject.0, body.0, metadata.0, root.to_glib_none().0, &mut out_commit, cancellable.0, &mut error); - if error.is_null() { Ok(from_glib_full(out_commit)) } else { Err(from_glib_full(error)) } - } - } - - fn write_commit_detached_metadata<'a, 'b, P: Into>, Q: Into>>(&self, checksum: &str, metadata: P, cancellable: Q) -> Result<(), Error> { - let metadata = metadata.into(); - let metadata = metadata.to_glib_none(); - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_write_commit_detached_metadata(self.to_glib_none().0, checksum.to_glib_none().0, metadata.0, cancellable.0, &mut error); - if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } - } - } - - fn write_commit_with_time<'a, 'b, 'c, 'd, 'e, P: Into>, Q: Into>, R: Into>, S: Into>, T: Into>>(&self, parent: P, subject: Q, body: R, metadata: S, root: &RepoFile, time: u64, cancellable: T) -> Result { - let parent = parent.into(); - let parent = parent.to_glib_none(); - let subject = subject.into(); - let subject = subject.to_glib_none(); - let body = body.into(); - let body = body.to_glib_none(); - let metadata = metadata.into(); - let metadata = metadata.to_glib_none(); - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut out_commit = ptr::null_mut(); - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_write_commit_with_time(self.to_glib_none().0, parent.0, subject.0, body.0, metadata.0, root.to_glib_none().0, time, &mut out_commit, cancellable.0, &mut error); - if error.is_null() { Ok(from_glib_full(out_commit)) } else { Err(from_glib_full(error)) } - } - } - - fn write_config(&self, new_config: &glib::KeyFile) -> Result<(), Error> { - unsafe { - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_write_config(self.to_glib_none().0, new_config.to_glib_none().0, &mut error); - if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } - } - } - - //fn write_content<'a, 'b, P: Into>, Q: IsA, R: Into>>(&self, expected_checksum: P, object_input: &Q, length: u64, out_csum: /*Unknown conversion*//*Unimplemented*/FixedArray TypeId { ns_id: 0, id: 3 }; 32, cancellable: R) -> Result<(), Error> { - // unsafe { TODO: call ffi::ostree_repo_write_content() } - //} - - fn write_content_trusted<'a, P: IsA, Q: Into>>(&self, checksum: &str, object_input: &P, length: u64, cancellable: Q) -> Result<(), Error> { - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_write_content_trusted(self.to_glib_none().0, checksum.to_glib_none().0, object_input.to_glib_none().0, length, cancellable.0, &mut error); - if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } - } - } - - fn write_dfd_to_mtree<'a, 'b, P: Into>, Q: Into>>(&self, dfd: i32, path: &str, mtree: &MutableTree, modifier: P, cancellable: Q) -> Result<(), Error> { - let modifier = modifier.into(); - let modifier = modifier.to_glib_none(); - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_write_dfd_to_mtree(self.to_glib_none().0, dfd, path.to_glib_none().0, mtree.to_glib_none().0, modifier.0, cancellable.0, &mut error); - if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } - } - } - - fn write_directory_to_mtree<'a, 'b, P: IsA, Q: Into>, R: Into>>(&self, dir: &P, mtree: &MutableTree, modifier: Q, cancellable: R) -> Result<(), Error> { - let modifier = modifier.into(); - let modifier = modifier.to_glib_none(); - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_write_directory_to_mtree(self.to_glib_none().0, dir.to_glib_none().0, mtree.to_glib_none().0, modifier.0, cancellable.0, &mut error); - if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } - } - } - - //fn write_metadata<'a, 'b, P: Into>, Q: Into>>(&self, objtype: ObjectType, expected_checksum: P, object: &glib::Variant, out_csum: /*Unknown conversion*//*Unimplemented*/FixedArray TypeId { ns_id: 0, id: 3 }; 32, cancellable: Q) -> Result<(), Error> { - // unsafe { TODO: call ffi::ostree_repo_write_metadata() } - //} - - fn write_metadata_stream_trusted<'a, P: IsA, Q: Into>>(&self, objtype: ObjectType, checksum: &str, object_input: &P, length: u64, cancellable: Q) -> Result<(), Error> { - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_write_metadata_stream_trusted(self.to_glib_none().0, objtype.to_glib(), checksum.to_glib_none().0, object_input.to_glib_none().0, length, cancellable.0, &mut error); - if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } - } - } - - fn write_metadata_trusted<'a, P: Into>>(&self, objtype: ObjectType, checksum: &str, variant: &glib::Variant, cancellable: P) -> Result<(), Error> { - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_write_metadata_trusted(self.to_glib_none().0, objtype.to_glib(), checksum.to_glib_none().0, variant.to_glib_none().0, cancellable.0, &mut error); - if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } - } - } - - fn write_mtree<'a, P: Into>>(&self, mtree: &MutableTree, cancellable: P) -> Result { - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut out_file = ptr::null_mut(); - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_write_mtree(self.to_glib_none().0, mtree.to_glib_none().0, &mut out_file, cancellable.0, &mut error); - if error.is_null() { Ok(from_glib_full(out_file)) } else { Err(from_glib_full(error)) } - } - } - - fn get_property_remotes_config_dir(&self) -> Option { - unsafe { - let mut value = Value::from_type(::static_type()); - gobject_ffi::g_object_get_property(self.to_glib_none().0, "remotes-config-dir".to_glib_none().0, value.to_glib_none_mut().0); - value.get() - } - } - - fn get_property_sysroot_path(&self) -> Option { - unsafe { - let mut value = Value::from_type(::static_type()); - gobject_ffi::g_object_get_property(self.to_glib_none().0, "sysroot-path".to_glib_none().0, value.to_glib_none_mut().0); - value.get() - } - } - - fn connect_gpg_verify_result(&self, f: F) -> SignalHandlerId { - unsafe { - let f: Box_> = Box_::new(Box_::new(f)); - connect(self.to_glib_none().0, "gpg-verify-result", - transmute(gpg_verify_result_trampoline:: as usize), Box_::into_raw(f) as *mut _) - } - } -} - -unsafe extern "C" fn gpg_verify_result_trampoline

(this: *mut ffi::OstreeRepo, checksum: *mut libc::c_char, result: *mut ffi::OstreeGpgVerifyResult, f: glib_ffi::gpointer) -where P: IsA { - let f: &&(Fn(&P, &str, &GpgVerifyResult) + 'static) = transmute(f); - f(&Repo::from_glib_borrow(this).downcast_unchecked(), &String::from_glib_none(checksum), &from_glib_borrow(result)) -} diff --git a/rust-bindings/rust/libostree/src/auto/repo_commit_modifier.rs b/rust-bindings/rust/libostree/src/auto/repo_commit_modifier.rs deleted file mode 100644 index 1b7dac28..00000000 --- a/rust-bindings/rust/libostree/src/auto/repo_commit_modifier.rs +++ /dev/null @@ -1,49 +0,0 @@ -// This file was generated by gir (https://github.com/gtk-rs/gir @ ffda6f9) -// from gir-files (https://github.com/gtk-rs/gir-files @ ???) -// DO NOT EDIT - -#[cfg(any(feature = "v2017_13", feature = "dox"))] -use RepoDevInoCache; -use SePolicy; -use ffi; -use glib::translate::*; -use glib_ffi; -use gobject_ffi; -use std::mem; -use std::ptr; - -glib_wrapper! { - #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] - pub struct RepoCommitModifier(Shared); - - match fn { - ref => |ptr| ffi::ostree_repo_commit_modifier_ref(ptr), - unref => |ptr| ffi::ostree_repo_commit_modifier_unref(ptr), - get_type => || ffi::ostree_repo_commit_modifier_get_type(), - } -} - -impl RepoCommitModifier { - //pub fn new<'a, P: Into>>(flags: /*Ignored*/RepoCommitModifierFlags, commit_filter: P, destroy_notify: /*Unknown conversion*//*Unimplemented*/DestroyNotify) -> RepoCommitModifier { - // unsafe { TODO: call ffi::ostree_repo_commit_modifier_new() } - //} - - #[cfg(any(feature = "v2017_13", feature = "dox"))] - pub fn set_devino_cache(&self, cache: &RepoDevInoCache) { - unsafe { - ffi::ostree_repo_commit_modifier_set_devino_cache(self.to_glib_none().0, cache.to_glib_none().0); - } - } - - pub fn set_sepolicy<'a, P: Into>>(&self, sepolicy: P) { - let sepolicy = sepolicy.into(); - let sepolicy = sepolicy.to_glib_none(); - unsafe { - ffi::ostree_repo_commit_modifier_set_sepolicy(self.to_glib_none().0, sepolicy.0); - } - } - - //pub fn set_xattr_callback(&self, callback: /*Unknown conversion*//*Unimplemented*/RepoCommitModifierXattrCallback, destroy: /*Unknown conversion*//*Unimplemented*/DestroyNotify) { - // unsafe { TODO: call ffi::ostree_repo_commit_modifier_set_xattr_callback() } - //} -} diff --git a/rust-bindings/rust/libostree/src/auto/repo_dev_ino_cache.rs b/rust-bindings/rust/libostree/src/auto/repo_dev_ino_cache.rs deleted file mode 100644 index b12c3fd1..00000000 --- a/rust-bindings/rust/libostree/src/auto/repo_dev_ino_cache.rs +++ /dev/null @@ -1,35 +0,0 @@ -// This file was generated by gir (https://github.com/gtk-rs/gir @ ffda6f9) -// from gir-files (https://github.com/gtk-rs/gir-files @ ???) -// DO NOT EDIT - -use ffi; -use glib::translate::*; -use glib_ffi; -use gobject_ffi; -use std::mem; -use std::ptr; - -glib_wrapper! { - #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] - pub struct RepoDevInoCache(Shared); - - match fn { - ref => |ptr| ffi::ostree_repo_devino_cache_ref(ptr), - unref => |ptr| ffi::ostree_repo_devino_cache_unref(ptr), - get_type => || ffi::ostree_repo_devino_cache_get_type(), - } -} - -impl RepoDevInoCache { - pub fn new() -> RepoDevInoCache { - unsafe { - from_glib_full(ffi::ostree_repo_devino_cache_new()) - } - } -} - -impl Default for RepoDevInoCache { - fn default() -> Self { - Self::new() - } -} diff --git a/rust-bindings/rust/libostree/src/auto/repo_file.rs b/rust-bindings/rust/libostree/src/auto/repo_file.rs deleted file mode 100644 index de648236..00000000 --- a/rust-bindings/rust/libostree/src/auto/repo_file.rs +++ /dev/null @@ -1,104 +0,0 @@ -// This file was generated by gir (https://github.com/gtk-rs/gir @ ffda6f9) -// from gir-files (https://github.com/gtk-rs/gir-files @ ???) -// DO NOT EDIT - -use Error; -use Repo; -use ffi; -use gio; -use gio_ffi; -use glib; -use glib::object::IsA; -use glib::translate::*; -use glib_ffi; -use gobject_ffi; -use std::mem; -use std::ptr; - -glib_wrapper! { - pub struct RepoFile(Object): [ - gio::File => gio_ffi::GFile, - ]; - - match fn { - get_type => || ffi::ostree_repo_file_get_type(), - } -} - -pub trait RepoFileExt { - fn ensure_resolved(&self) -> Result<(), Error>; - - fn get_checksum(&self) -> Option; - - fn get_repo(&self) -> Option; - - fn get_root(&self) -> Option; - - fn tree_get_contents(&self) -> Option; - - fn tree_get_contents_checksum(&self) -> Option; - - fn tree_get_metadata(&self) -> Option; - - fn tree_get_metadata_checksum(&self) -> Option; - - fn tree_set_metadata(&self, checksum: &str, metadata: &glib::Variant); -} - -impl> RepoFileExt for O { - fn ensure_resolved(&self) -> Result<(), Error> { - unsafe { - let mut error = ptr::null_mut(); - let _ = ffi::ostree_repo_file_ensure_resolved(self.to_glib_none().0, &mut error); - if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } - } - } - - fn get_checksum(&self) -> Option { - unsafe { - from_glib_none(ffi::ostree_repo_file_get_checksum(self.to_glib_none().0)) - } - } - - fn get_repo(&self) -> Option { - unsafe { - from_glib_none(ffi::ostree_repo_file_get_repo(self.to_glib_none().0)) - } - } - - fn get_root(&self) -> Option { - unsafe { - from_glib_none(ffi::ostree_repo_file_get_root(self.to_glib_none().0)) - } - } - - fn tree_get_contents(&self) -> Option { - unsafe { - from_glib_full(ffi::ostree_repo_file_tree_get_contents(self.to_glib_none().0)) - } - } - - fn tree_get_contents_checksum(&self) -> Option { - unsafe { - from_glib_none(ffi::ostree_repo_file_tree_get_contents_checksum(self.to_glib_none().0)) - } - } - - fn tree_get_metadata(&self) -> Option { - unsafe { - from_glib_full(ffi::ostree_repo_file_tree_get_metadata(self.to_glib_none().0)) - } - } - - fn tree_get_metadata_checksum(&self) -> Option { - unsafe { - from_glib_none(ffi::ostree_repo_file_tree_get_metadata_checksum(self.to_glib_none().0)) - } - } - - fn tree_set_metadata(&self, checksum: &str, metadata: &glib::Variant) { - unsafe { - ffi::ostree_repo_file_tree_set_metadata(self.to_glib_none().0, checksum.to_glib_none().0, metadata.to_glib_none().0); - } - } -} diff --git a/rust-bindings/rust/libostree/src/auto/repo_transaction_stats.rs b/rust-bindings/rust/libostree/src/auto/repo_transaction_stats.rs deleted file mode 100644 index 11369672..00000000 --- a/rust-bindings/rust/libostree/src/auto/repo_transaction_stats.rs +++ /dev/null @@ -1,21 +0,0 @@ -// This file was generated by gir (https://github.com/gtk-rs/gir @ ffda6f9) -// from gir-files (https://github.com/gtk-rs/gir-files @ ???) -// DO NOT EDIT - -use ffi; -use glib::translate::*; -use glib_ffi; -use gobject_ffi; -use std::mem; -use std::ptr; - -glib_wrapper! { - #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] - pub struct RepoTransactionStats(Boxed); - - match fn { - copy => |ptr| gobject_ffi::g_boxed_copy(ffi::ostree_repo_transaction_stats_get_type(), ptr as *mut _) as *mut ffi::OstreeRepoTransactionStats, - free => |ptr| gobject_ffi::g_boxed_free(ffi::ostree_repo_transaction_stats_get_type(), ptr as *mut _), - get_type => || ffi::ostree_repo_transaction_stats_get_type(), - } -} diff --git a/rust-bindings/rust/libostree/src/auto/se_policy.rs b/rust-bindings/rust/libostree/src/auto/se_policy.rs deleted file mode 100644 index 11b5b681..00000000 --- a/rust-bindings/rust/libostree/src/auto/se_policy.rs +++ /dev/null @@ -1,127 +0,0 @@ -// This file was generated by gir (https://github.com/gtk-rs/gir @ ffda6f9) -// from gir-files (https://github.com/gtk-rs/gir-files @ ???) -// DO NOT EDIT - -use Error; -use SePolicyRestoreconFlags; -use ffi; -use gio; -use glib; -use glib::StaticType; -use glib::Value; -use glib::object::IsA; -use glib::translate::*; -use glib_ffi; -use gobject_ffi; -use std::mem; -use std::ptr; - -glib_wrapper! { - pub struct SePolicy(Object); - - match fn { - get_type => || ffi::ostree_sepolicy_get_type(), - } -} - -impl SePolicy { - pub fn new<'a, P: IsA, Q: Into>>(path: &P, cancellable: Q) -> Result { - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut error = ptr::null_mut(); - let ret = ffi::ostree_sepolicy_new(path.to_glib_none().0, cancellable.0, &mut error); - if error.is_null() { Ok(from_glib_full(ret)) } else { Err(from_glib_full(error)) } - } - } - - pub fn new_at<'a, P: Into>>(rootfs_dfd: i32, cancellable: P) -> Result { - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut error = ptr::null_mut(); - let ret = ffi::ostree_sepolicy_new_at(rootfs_dfd, cancellable.0, &mut error); - if error.is_null() { Ok(from_glib_full(ret)) } else { Err(from_glib_full(error)) } - } - } - - //pub fn fscreatecon_cleanup>>(unused: P) { - // unsafe { TODO: call ffi::ostree_sepolicy_fscreatecon_cleanup() } - //} -} - -pub trait SePolicyExt { - fn get_csum(&self) -> Option; - - fn get_label<'a, P: Into>>(&self, relpath: &str, unix_mode: u32, cancellable: P) -> Result; - - fn get_name(&self) -> Option; - - fn get_path(&self) -> Option; - - fn restorecon<'a, 'b, P: Into>, Q: IsA, R: Into>>(&self, path: &str, info: P, target: &Q, flags: SePolicyRestoreconFlags, cancellable: R) -> Result; - - fn setfscreatecon(&self, path: &str, mode: u32) -> Result<(), Error>; - - fn get_property_rootfs_dfd(&self) -> i32; -} - -impl + IsA> SePolicyExt for O { - fn get_csum(&self) -> Option { - unsafe { - from_glib_none(ffi::ostree_sepolicy_get_csum(self.to_glib_none().0)) - } - } - - fn get_label<'a, P: Into>>(&self, relpath: &str, unix_mode: u32, cancellable: P) -> Result { - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut out_label = ptr::null_mut(); - let mut error = ptr::null_mut(); - let _ = ffi::ostree_sepolicy_get_label(self.to_glib_none().0, relpath.to_glib_none().0, unix_mode, &mut out_label, cancellable.0, &mut error); - if error.is_null() { Ok(from_glib_full(out_label)) } else { Err(from_glib_full(error)) } - } - } - - fn get_name(&self) -> Option { - unsafe { - from_glib_none(ffi::ostree_sepolicy_get_name(self.to_glib_none().0)) - } - } - - fn get_path(&self) -> Option { - unsafe { - from_glib_none(ffi::ostree_sepolicy_get_path(self.to_glib_none().0)) - } - } - - fn restorecon<'a, 'b, P: Into>, Q: IsA, R: Into>>(&self, path: &str, info: P, target: &Q, flags: SePolicyRestoreconFlags, cancellable: R) -> Result { - let info = info.into(); - let info = info.to_glib_none(); - let cancellable = cancellable.into(); - let cancellable = cancellable.to_glib_none(); - unsafe { - let mut out_new_label = ptr::null_mut(); - let mut error = ptr::null_mut(); - let _ = ffi::ostree_sepolicy_restorecon(self.to_glib_none().0, path.to_glib_none().0, info.0, target.to_glib_none().0, flags.to_glib(), &mut out_new_label, cancellable.0, &mut error); - if error.is_null() { Ok(from_glib_full(out_new_label)) } else { Err(from_glib_full(error)) } - } - } - - fn setfscreatecon(&self, path: &str, mode: u32) -> Result<(), Error> { - unsafe { - let mut error = ptr::null_mut(); - let _ = ffi::ostree_sepolicy_setfscreatecon(self.to_glib_none().0, path.to_glib_none().0, mode, &mut error); - if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } - } - } - - fn get_property_rootfs_dfd(&self) -> i32 { - unsafe { - let mut value = Value::from_type(::static_type()); - gobject_ffi::g_object_get_property(self.to_glib_none().0, "rootfs-dfd".to_glib_none().0, value.to_glib_none_mut().0); - value.get().unwrap() - } - } -} diff --git a/rust-bindings/rust/libostree/src/lib.rs b/rust-bindings/rust/libostree/src/lib.rs deleted file mode 100644 index a32a211a..00000000 --- a/rust-bindings/rust/libostree/src/lib.rs +++ /dev/null @@ -1,31 +0,0 @@ -extern crate gio_sys as gio_ffi; -extern crate glib_sys as glib_ffi; -extern crate gobject_sys as gobject_ffi; -extern crate libostree_sys as ffi; -#[macro_use] -extern crate glib; -extern crate gio; -extern crate libc; -#[macro_use] -extern crate bitflags; -#[macro_use] -extern crate lazy_static; - -use glib::Error; - -// re-exports -#[cfg_attr(feature = "cargo-clippy", allow(clippy))] -mod auto; -pub use auto::functions::*; -pub use auto::*; - -mod repo; - -mod object_name; -pub use object_name::ObjectName; - -// public modules -pub mod prelude { - pub use auto::traits::*; - pub use repo::RepoExtManual; -} diff --git a/rust-bindings/rust/libostree/src/object_name.rs b/rust-bindings/rust/libostree/src/object_name.rs deleted file mode 100644 index e6494923..00000000 --- a/rust-bindings/rust/libostree/src/object_name.rs +++ /dev/null @@ -1,74 +0,0 @@ -use ffi; -use functions::{object_name_deserialize, object_name_serialize, object_to_string}; -use glib; -use glib::translate::*; -use glib_ffi; -use std::fmt::Display; -use std::fmt::Error; -use std::fmt::Formatter; -use std::hash::Hash; -use std::hash::Hasher; -use ObjectType; - -fn hash_object_name(v: &glib::Variant) -> u32 { - unsafe { ffi::ostree_hash_object_name(v.to_glib_none().0 as glib_ffi::gconstpointer) } -} - -#[derive(Eq, Debug)] -pub struct ObjectName { - variant: glib::Variant, - checksum: String, - object_type: ObjectType, -} - -impl ObjectName { - pub fn new_from_variant(variant: glib::Variant) -> ObjectName { - let deserialize = object_name_deserialize(&variant); - ObjectName { - variant, - checksum: deserialize.0, - object_type: deserialize.1, - } - } - - pub fn new>(checksum: S, object_type: ObjectType) -> ObjectName { - let checksum = checksum.into(); - let variant = object_name_serialize(checksum.as_str(), object_type).unwrap(); - ObjectName { - variant, - checksum, - object_type, - } - } - - pub fn checksum(&self) -> &str { - self.checksum.as_ref() - } - - pub fn object_type(&self) -> ObjectType { - self.object_type - } - - pub fn name(&self) -> String { - object_to_string(self.checksum(), self.object_type()) - .expect("type checks should make this safe") - } -} - -impl Display for ObjectName { - fn fmt(&self, f: &mut Formatter) -> Result<(), Error> { - write!(f, "{}", self.name()) - } -} - -impl Hash for ObjectName { - fn hash(&self, state: &mut H) { - state.write_u32(hash_object_name(&self.variant)); - } -} - -impl PartialEq for ObjectName { - fn eq(&self, other: &ObjectName) -> bool { - self.checksum == other.checksum && self.object_type == other.object_type - } -} diff --git a/rust-bindings/rust/libostree/src/repo.rs b/rust-bindings/rust/libostree/src/repo.rs deleted file mode 100644 index 279fe8f3..00000000 --- a/rust-bindings/rust/libostree/src/repo.rs +++ /dev/null @@ -1,138 +0,0 @@ -use auto::{Repo, RepoListRefsExtFlags}; -use ffi; -use gio; -use glib; -use glib::translate::*; -use glib::Error; -use glib::IsA; -use glib_ffi; -use std::collections::{HashMap, HashSet}; -use std::path::Path; -use std::ptr; -use ObjectName; - -unsafe extern "C" fn read_variant_table( - _key: glib_ffi::gpointer, - value: glib_ffi::gpointer, - hash_set: glib_ffi::gpointer, -) { - let value: glib::Variant = from_glib_none(value as *const glib_ffi::GVariant); - let set: &mut HashSet = &mut *(hash_set as *mut HashSet); - set.insert(ObjectName::new_from_variant(value)); -} - -unsafe fn from_glib_container_variant_set(ptr: *mut glib_ffi::GHashTable) -> HashSet { - let mut set = HashSet::new(); - glib_ffi::g_hash_table_foreach( - ptr, - Some(read_variant_table), - &mut set as *mut HashSet as *mut _, - ); - glib_ffi::g_hash_table_unref(ptr); - set -} - -pub trait RepoExtManual { - fn new_for_path>(path: P) -> Repo; - - fn traverse_commit<'a, P: Into>>( - &self, - commit_checksum: &str, - maxdepth: i32, - cancellable: P, - ) -> Result, Error>; - - fn list_refs<'a, 'b, P: Into>, Q: Into>>( - &self, - refspec_prefix: P, - cancellable: Q, - ) -> Result, Error>; - - fn list_refs_ext<'a, 'b, P: Into>, Q: Into>>( - &self, - refspec_prefix: P, - flags: RepoListRefsExtFlags, - cancellable: Q, - ) -> Result, Error>; -} - -impl + IsA + Clone + 'static> RepoExtManual for O { - fn new_for_path>(path: P) -> Repo { - Repo::new(&gio::File::new_for_path(path.as_ref())) - } - - fn traverse_commit<'a, P: Into>>( - &self, - commit_checksum: &str, - maxdepth: i32, - cancellable: P, - ) -> Result, Error> { - unsafe { - let mut error = ptr::null_mut(); - let mut hashtable = ptr::null_mut(); - let _ = ffi::ostree_repo_traverse_commit( - self.to_glib_none().0, - commit_checksum.to_glib_none().0, - maxdepth, - &mut hashtable, - cancellable.into().to_glib_none().0, - &mut error, - ); - if error.is_null() { - Ok(from_glib_container_variant_set(hashtable)) - } else { - Err(from_glib_full(error)) - } - } - } - - fn list_refs<'a, 'b, P: Into>, Q: Into>>( - &self, - refspec_prefix: P, - cancellable: Q, - ) -> Result, Error> { - unsafe { - let mut error = ptr::null_mut(); - let mut hashtable = ptr::null_mut(); - let _ = ffi::ostree_repo_list_refs( - self.to_glib_none().0, - refspec_prefix.into().to_glib_none().0, - &mut hashtable, - cancellable.into().to_glib_none().0, - &mut error, - ); - - if error.is_null() { - Ok(FromGlibPtrContainer::from_glib_container(hashtable)) - } else { - Err(from_glib_full(error)) - } - } - } - - fn list_refs_ext<'a, 'b, P: Into>, Q: Into>>( - &self, - refspec_prefix: P, - flags: RepoListRefsExtFlags, - cancellable: Q, - ) -> Result, Error> { - unsafe { - let mut error = ptr::null_mut(); - let mut hashtable = ptr::null_mut(); - let _ = ffi::ostree_repo_list_refs_ext( - self.to_glib_none().0, - refspec_prefix.into().to_glib_none().0, - &mut hashtable, - flags.to_glib(), - cancellable.into().to_glib_none().0, - &mut error, - ); - - if error.is_null() { - Ok(FromGlibPtrContainer::from_glib_container(hashtable)) - } else { - Err(from_glib_full(error)) - } - } - } -} diff --git a/rust-bindings/rust/libostree/tests/roundtrip.rs b/rust-bindings/rust/libostree/tests/roundtrip.rs deleted file mode 100644 index d8bdbed2..00000000 --- a/rust-bindings/rust/libostree/tests/roundtrip.rs +++ /dev/null @@ -1,66 +0,0 @@ -extern crate gio; -extern crate glib; -extern crate libostree; -extern crate tempfile; - -use glib::prelude::*; -use libostree::prelude::*; -use std::fs; -use std::io; -use std::io::Write; - -fn create_repo(repodir: &tempfile::TempDir) -> Result { - let repo = libostree::Repo::new_for_path(repodir.path()); - repo.create(libostree::RepoMode::Archive, None)?; - Ok(repo) -} - -fn create_test_file(treedir: &tempfile::TempDir) -> Result<(), io::Error> { - let mut testfile = fs::File::create(treedir.path().join("test.txt"))?; - write!(testfile, "test")?; - Ok(()) -} - -fn create_mtree( - treedir: &tempfile::TempDir, - repo: &libostree::Repo, -) -> Result { - let gfile = gio::File::new_for_path(treedir.path()); - let mtree = libostree::MutableTree::new(); - repo.write_directory_to_mtree(&gfile, &mtree, None, None)?; - Ok(mtree) -} - -fn commit_mtree( - repo: &libostree::Repo, - mtree: &libostree::MutableTree, -) -> Result { - repo.prepare_transaction(None)?; - let repo_file = repo.write_mtree(mtree, None)?.downcast().unwrap(); - let checksum = repo.write_commit(None, "Test Commit", None, None, &repo_file, None)?; - repo.transaction_set_ref(None, "test", checksum.as_str()); - repo.commit_transaction(None)?; - Ok(checksum) -} - -fn open_repo(repodir: &tempfile::TempDir) -> Result { - let repo = libostree::Repo::new_for_path(repodir.path()); - repo.open(None)?; - Ok(repo) -} - -#[test] -fn should_commit_content_to_repo_and_list_refs_again() { - let repodir = tempfile::tempdir().unwrap(); - let treedir = tempfile::tempdir().unwrap(); - - let repo = create_repo(&repodir).expect("failed to create repo"); - create_test_file(&treedir).expect("failed to create test file"); - let mtree = create_mtree(&treedir, &repo).expect("failed to build mtree"); - let checksum = commit_mtree(&repo, &mtree).expect("failed to commit mtree"); - - let repo = open_repo(&repodir).expect("failed to open repo"); - let refs = repo.list_refs(None, None).expect("failed to list refs"); - assert_eq!(refs.len(), 1); - assert_eq!(refs["test"], checksum); -} diff --git a/rust-bindings/rust/src/auto/async_progress.rs b/rust-bindings/rust/src/auto/async_progress.rs new file mode 100644 index 00000000..c441b5c8 --- /dev/null +++ b/rust-bindings/rust/src/auto/async_progress.rs @@ -0,0 +1,161 @@ +// This file was generated by gir (https://github.com/gtk-rs/gir @ ffda6f9) +// from gir-files (https://github.com/gtk-rs/gir-files @ ???) +// DO NOT EDIT + +use ffi; +use glib; +use glib::object::Downcast; +use glib::object::IsA; +use glib::signal::SignalHandlerId; +use glib::signal::connect; +use glib::translate::*; +use glib_ffi; +use gobject_ffi; +use std::boxed::Box as Box_; +use std::mem; +use std::mem::transmute; +use std::ptr; + +glib_wrapper! { + pub struct AsyncProgress(Object); + + match fn { + get_type => || ffi::ostree_async_progress_get_type(), + } +} + +impl AsyncProgress { + pub fn new() -> AsyncProgress { + unsafe { + from_glib_full(ffi::ostree_async_progress_new()) + } + } + + //pub fn new_and_connect>, Q: Into>>(changed: P, user_data: Q) -> AsyncProgress { + // unsafe { TODO: call ffi::ostree_async_progress_new_and_connect() } + //} +} + +impl Default for AsyncProgress { + fn default() -> Self { + Self::new() + } +} + +pub trait AsyncProgressExt { + fn finish(&self); + + //#[cfg(any(feature = "v2017_6", feature = "dox"))] + //fn get(&self, : /*Unknown conversion*//*Unimplemented*/Fundamental: VarArgs); + + #[cfg(any(feature = "v2017_6", feature = "dox"))] + fn get_status(&self) -> Option; + + fn get_uint(&self, key: &str) -> u32; + + fn get_uint64(&self, key: &str) -> u64; + + #[cfg(any(feature = "v2017_6", feature = "dox"))] + fn get_variant(&self, key: &str) -> Option; + + //#[cfg(any(feature = "v2017_6", feature = "dox"))] + //fn set(&self, : /*Unknown conversion*//*Unimplemented*/Fundamental: VarArgs); + + #[cfg(any(feature = "v2017_6", feature = "dox"))] + fn set_status<'a, P: Into>>(&self, status: P); + + fn set_uint(&self, key: &str, value: u32); + + fn set_uint64(&self, key: &str, value: u64); + + #[cfg(any(feature = "v2017_6", feature = "dox"))] + fn set_variant(&self, key: &str, value: &glib::Variant); + + fn connect_changed(&self, f: F) -> SignalHandlerId; +} + +impl + IsA> AsyncProgressExt for O { + fn finish(&self) { + unsafe { + ffi::ostree_async_progress_finish(self.to_glib_none().0); + } + } + + //#[cfg(any(feature = "v2017_6", feature = "dox"))] + //fn get(&self, : /*Unknown conversion*//*Unimplemented*/Fundamental: VarArgs) { + // unsafe { TODO: call ffi::ostree_async_progress_get() } + //} + + #[cfg(any(feature = "v2017_6", feature = "dox"))] + fn get_status(&self) -> Option { + unsafe { + from_glib_full(ffi::ostree_async_progress_get_status(self.to_glib_none().0)) + } + } + + fn get_uint(&self, key: &str) -> u32 { + unsafe { + ffi::ostree_async_progress_get_uint(self.to_glib_none().0, key.to_glib_none().0) + } + } + + fn get_uint64(&self, key: &str) -> u64 { + unsafe { + ffi::ostree_async_progress_get_uint64(self.to_glib_none().0, key.to_glib_none().0) + } + } + + #[cfg(any(feature = "v2017_6", feature = "dox"))] + fn get_variant(&self, key: &str) -> Option { + unsafe { + from_glib_full(ffi::ostree_async_progress_get_variant(self.to_glib_none().0, key.to_glib_none().0)) + } + } + + //#[cfg(any(feature = "v2017_6", feature = "dox"))] + //fn set(&self, : /*Unknown conversion*//*Unimplemented*/Fundamental: VarArgs) { + // unsafe { TODO: call ffi::ostree_async_progress_set() } + //} + + #[cfg(any(feature = "v2017_6", feature = "dox"))] + fn set_status<'a, P: Into>>(&self, status: P) { + let status = status.into(); + let status = status.to_glib_none(); + unsafe { + ffi::ostree_async_progress_set_status(self.to_glib_none().0, status.0); + } + } + + fn set_uint(&self, key: &str, value: u32) { + unsafe { + ffi::ostree_async_progress_set_uint(self.to_glib_none().0, key.to_glib_none().0, value); + } + } + + fn set_uint64(&self, key: &str, value: u64) { + unsafe { + ffi::ostree_async_progress_set_uint64(self.to_glib_none().0, key.to_glib_none().0, value); + } + } + + #[cfg(any(feature = "v2017_6", feature = "dox"))] + fn set_variant(&self, key: &str, value: &glib::Variant) { + unsafe { + ffi::ostree_async_progress_set_variant(self.to_glib_none().0, key.to_glib_none().0, value.to_glib_none().0); + } + } + + fn connect_changed(&self, f: F) -> SignalHandlerId { + unsafe { + let f: Box_> = Box_::new(Box_::new(f)); + connect(self.to_glib_none().0, "changed", + transmute(changed_trampoline:: as usize), Box_::into_raw(f) as *mut _) + } + } +} + +unsafe extern "C" fn changed_trampoline

(this: *mut ffi::OstreeAsyncProgress, f: glib_ffi::gpointer) +where P: IsA { + let f: &&(Fn(&P) + 'static) = transmute(f); + f(&AsyncProgress::from_glib_borrow(this).downcast_unchecked()) +} diff --git a/rust-bindings/rust/src/auto/collection_ref.rs b/rust-bindings/rust/src/auto/collection_ref.rs new file mode 100644 index 00000000..d52f95c6 --- /dev/null +++ b/rust-bindings/rust/src/auto/collection_ref.rs @@ -0,0 +1,84 @@ +// This file was generated by gir (https://github.com/gtk-rs/gir @ ffda6f9) +// from gir-files (https://github.com/gtk-rs/gir-files @ ???) +// DO NOT EDIT + +use ffi; +use glib::translate::*; +use glib_ffi; +use gobject_ffi; +use std::hash; +use std::mem; +use std::ptr; + +glib_wrapper! { + #[derive(Debug, PartialOrd, Ord)] + pub struct CollectionRef(Boxed); + + match fn { + copy => |ptr| gobject_ffi::g_boxed_copy(ffi::ostree_collection_ref_get_type(), ptr as *mut _) as *mut ffi::OstreeCollectionRef, + free => |ptr| gobject_ffi::g_boxed_free(ffi::ostree_collection_ref_get_type(), ptr as *mut _), + get_type => || ffi::ostree_collection_ref_get_type(), + } +} + +impl CollectionRef { + #[cfg(any(feature = "v2018_6", feature = "dox"))] + pub fn new<'a, P: Into>>(collection_id: P, ref_name: &str) -> CollectionRef { + let collection_id = collection_id.into(); + let collection_id = collection_id.to_glib_none(); + unsafe { + from_glib_full(ffi::ostree_collection_ref_new(collection_id.0, ref_name.to_glib_none().0)) + } + } + + #[cfg(any(feature = "v2018_6", feature = "dox"))] + pub fn dup(&self) -> Option { + unsafe { + from_glib_full(ffi::ostree_collection_ref_dup(self.to_glib_none().0)) + } + } + + #[cfg(any(feature = "v2018_6", feature = "dox"))] + pub fn dupv(refs: &[&CollectionRef]) -> Vec { + unsafe { + FromGlibPtrContainer::from_glib_full(ffi::ostree_collection_ref_dupv(refs.to_glib_none().0)) + } + } + + #[cfg(any(feature = "v2018_6", feature = "dox"))] + fn equal<'a, P: Into>>(&self, ref2: P) -> bool { + unsafe { + from_glib(ffi::ostree_collection_ref_equal(ToGlibPtr::<*mut ffi::OstreeCollectionRef>::to_glib_none(self).0 as glib_ffi::gconstpointer, ToGlibPtr::<*mut ffi::OstreeCollectionRef>::to_glib_none(ref2).0 as glib_ffi::gconstpointer)) + } + } + + #[cfg(any(feature = "v2018_6", feature = "dox"))] + pub fn freev(refs: &[&CollectionRef]) { + unsafe { + ffi::ostree_collection_ref_freev(refs.to_glib_full()); + } + } + + #[cfg(any(feature = "v2018_6", feature = "dox"))] + fn hash(&self) -> u32 { + unsafe { + ffi::ostree_collection_ref_hash(ToGlibPtr::<*mut ffi::OstreeCollectionRef>::to_glib_none(self).0 as glib_ffi::gconstpointer) + } + } +} + +impl PartialEq for CollectionRef { + #[inline] + fn eq(&self, other: &Self) -> bool { + self.equal(other) + } +} + +impl Eq for CollectionRef {} + +impl hash::Hash for CollectionRef { + #[inline] + fn hash(&self, state: &mut H) where H: hash::Hasher { + hash::Hash::hash(&self.hash(), state) + } +} diff --git a/rust-bindings/rust/src/auto/constants.rs b/rust-bindings/rust/src/auto/constants.rs new file mode 100644 index 00000000..7e6240b7 --- /dev/null +++ b/rust-bindings/rust/src/auto/constants.rs @@ -0,0 +1,61 @@ +// This file was generated by gir (https://github.com/gtk-rs/gir @ ffda6f9) +// from gir-files (https://github.com/gtk-rs/gir-files @ ???) +// DO NOT EDIT + +use ffi; +use std::ffi::CStr; + +lazy_static! { + pub static ref COMMIT_GVARIANT_STRING: &'static str = unsafe{CStr::from_ptr(ffi::OSTREE_COMMIT_GVARIANT_STRING).to_str().unwrap()}; +} +#[cfg(any(feature = "v2018_6", feature = "dox"))] +lazy_static! { + pub static ref COMMIT_META_KEY_COLLECTION_BINDING: &'static str = unsafe{CStr::from_ptr(ffi::OSTREE_COMMIT_META_KEY_COLLECTION_BINDING).to_str().unwrap()}; +} +#[cfg(any(feature = "v2017_7", feature = "dox"))] +lazy_static! { + pub static ref COMMIT_META_KEY_ENDOFLIFE: &'static str = unsafe{CStr::from_ptr(ffi::OSTREE_COMMIT_META_KEY_ENDOFLIFE).to_str().unwrap()}; +} +#[cfg(any(feature = "v2017_7", feature = "dox"))] +lazy_static! { + pub static ref COMMIT_META_KEY_ENDOFLIFE_REBASE: &'static str = unsafe{CStr::from_ptr(ffi::OSTREE_COMMIT_META_KEY_ENDOFLIFE_REBASE).to_str().unwrap()}; +} +#[cfg(any(feature = "v2017_9", feature = "dox"))] +lazy_static! { + pub static ref COMMIT_META_KEY_REF_BINDING: &'static str = unsafe{CStr::from_ptr(ffi::OSTREE_COMMIT_META_KEY_REF_BINDING).to_str().unwrap()}; +} +#[cfg(any(feature = "v2017_13", feature = "dox"))] +lazy_static! { + pub static ref COMMIT_META_KEY_SOURCE_TITLE: &'static str = unsafe{CStr::from_ptr(ffi::OSTREE_COMMIT_META_KEY_SOURCE_TITLE).to_str().unwrap()}; +} +#[cfg(any(feature = "v2014_9", feature = "dox"))] +lazy_static! { + pub static ref COMMIT_META_KEY_VERSION: &'static str = unsafe{CStr::from_ptr(ffi::OSTREE_COMMIT_META_KEY_VERSION).to_str().unwrap()}; +} +lazy_static! { + pub static ref DIRMETA_GVARIANT_STRING: &'static str = unsafe{CStr::from_ptr(ffi::OSTREE_DIRMETA_GVARIANT_STRING).to_str().unwrap()}; +} +lazy_static! { + pub static ref FILEMETA_GVARIANT_STRING: &'static str = unsafe{CStr::from_ptr(ffi::OSTREE_FILEMETA_GVARIANT_STRING).to_str().unwrap()}; +} +#[cfg(any(feature = "v2018_3", feature = "dox"))] +lazy_static! { + pub static ref ORIGIN_TRANSIENT_GROUP: &'static str = unsafe{CStr::from_ptr(ffi::OSTREE_ORIGIN_TRANSIENT_GROUP).to_str().unwrap()}; +} +#[cfg(any(feature = "v2018_6", feature = "dox"))] +lazy_static! { + pub static ref REPO_METADATA_REF: &'static str = unsafe{CStr::from_ptr(ffi::OSTREE_REPO_METADATA_REF).to_str().unwrap()}; +} +lazy_static! { + pub static ref SUMMARY_GVARIANT_STRING: &'static str = unsafe{CStr::from_ptr(ffi::OSTREE_SUMMARY_GVARIANT_STRING).to_str().unwrap()}; +} +lazy_static! { + pub static ref SUMMARY_SIG_GVARIANT_STRING: &'static str = unsafe{CStr::from_ptr(ffi::OSTREE_SUMMARY_SIG_GVARIANT_STRING).to_str().unwrap()}; +} +lazy_static! { + pub static ref TREE_GVARIANT_STRING: &'static str = unsafe{CStr::from_ptr(ffi::OSTREE_TREE_GVARIANT_STRING).to_str().unwrap()}; +} +#[cfg(any(feature = "v2017_4", feature = "dox"))] +lazy_static! { + pub static ref VERSION_S: &'static str = unsafe{CStr::from_ptr(ffi::OSTREE_VERSION_S).to_str().unwrap()}; +} diff --git a/rust-bindings/rust/src/auto/enums.rs b/rust-bindings/rust/src/auto/enums.rs new file mode 100644 index 00000000..ef22ad0a --- /dev/null +++ b/rust-bindings/rust/src/auto/enums.rs @@ -0,0 +1,334 @@ +// This file was generated by gir (https://github.com/gtk-rs/gir @ ffda6f9) +// from gir-files (https://github.com/gtk-rs/gir-files @ ???) +// DO NOT EDIT + +use ffi; +use glib::translate::*; + +#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash)] +#[derive(Clone, Copy)] +pub enum GpgSignatureFormatFlags { + GpgSignatureFormatDefault, + #[doc(hidden)] + __Unknown(i32), +} + +#[doc(hidden)] +impl ToGlib for GpgSignatureFormatFlags { + type GlibType = ffi::OstreeGpgSignatureFormatFlags; + + fn to_glib(&self) -> ffi::OstreeGpgSignatureFormatFlags { + match *self { + GpgSignatureFormatFlags::GpgSignatureFormatDefault => ffi::OSTREE_GPG_SIGNATURE_FORMAT_DEFAULT, + GpgSignatureFormatFlags::__Unknown(value) => value + } + } +} + +#[doc(hidden)] +impl FromGlib for GpgSignatureFormatFlags { + fn from_glib(value: ffi::OstreeGpgSignatureFormatFlags) -> Self { + match value { + 0 => GpgSignatureFormatFlags::GpgSignatureFormatDefault, + value => GpgSignatureFormatFlags::__Unknown(value), + } + } +} + +#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash)] +#[derive(Clone, Copy)] +pub enum ObjectType { + File, + DirTree, + DirMeta, + Commit, + TombstoneCommit, + CommitMeta, + PayloadLink, + #[doc(hidden)] + __Unknown(i32), +} + +#[doc(hidden)] +impl ToGlib for ObjectType { + type GlibType = ffi::OstreeObjectType; + + fn to_glib(&self) -> ffi::OstreeObjectType { + match *self { + ObjectType::File => ffi::OSTREE_OBJECT_TYPE_FILE, + ObjectType::DirTree => ffi::OSTREE_OBJECT_TYPE_DIR_TREE, + ObjectType::DirMeta => ffi::OSTREE_OBJECT_TYPE_DIR_META, + ObjectType::Commit => ffi::OSTREE_OBJECT_TYPE_COMMIT, + ObjectType::TombstoneCommit => ffi::OSTREE_OBJECT_TYPE_TOMBSTONE_COMMIT, + ObjectType::CommitMeta => ffi::OSTREE_OBJECT_TYPE_COMMIT_META, + ObjectType::PayloadLink => ffi::OSTREE_OBJECT_TYPE_PAYLOAD_LINK, + ObjectType::__Unknown(value) => value + } + } +} + +#[doc(hidden)] +impl FromGlib for ObjectType { + fn from_glib(value: ffi::OstreeObjectType) -> Self { + match value { + 1 => ObjectType::File, + 2 => ObjectType::DirTree, + 3 => ObjectType::DirMeta, + 4 => ObjectType::Commit, + 5 => ObjectType::TombstoneCommit, + 6 => ObjectType::CommitMeta, + 7 => ObjectType::PayloadLink, + value => ObjectType::__Unknown(value), + } + } +} + +#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash)] +#[derive(Clone, Copy)] +pub enum RepoCheckoutMode { + None, + User, + #[doc(hidden)] + __Unknown(i32), +} + +#[doc(hidden)] +impl ToGlib for RepoCheckoutMode { + type GlibType = ffi::OstreeRepoCheckoutMode; + + fn to_glib(&self) -> ffi::OstreeRepoCheckoutMode { + match *self { + RepoCheckoutMode::None => ffi::OSTREE_REPO_CHECKOUT_MODE_NONE, + RepoCheckoutMode::User => ffi::OSTREE_REPO_CHECKOUT_MODE_USER, + RepoCheckoutMode::__Unknown(value) => value + } + } +} + +#[doc(hidden)] +impl FromGlib for RepoCheckoutMode { + fn from_glib(value: ffi::OstreeRepoCheckoutMode) -> Self { + match value { + 0 => RepoCheckoutMode::None, + 1 => RepoCheckoutMode::User, + value => RepoCheckoutMode::__Unknown(value), + } + } +} + +#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash)] +#[derive(Clone, Copy)] +pub enum RepoCheckoutOverwriteMode { + None, + UnionFiles, + AddFiles, + UnionIdentical, + #[doc(hidden)] + __Unknown(i32), +} + +#[doc(hidden)] +impl ToGlib for RepoCheckoutOverwriteMode { + type GlibType = ffi::OstreeRepoCheckoutOverwriteMode; + + fn to_glib(&self) -> ffi::OstreeRepoCheckoutOverwriteMode { + match *self { + RepoCheckoutOverwriteMode::None => ffi::OSTREE_REPO_CHECKOUT_OVERWRITE_NONE, + RepoCheckoutOverwriteMode::UnionFiles => ffi::OSTREE_REPO_CHECKOUT_OVERWRITE_UNION_FILES, + RepoCheckoutOverwriteMode::AddFiles => ffi::OSTREE_REPO_CHECKOUT_OVERWRITE_ADD_FILES, + RepoCheckoutOverwriteMode::UnionIdentical => ffi::OSTREE_REPO_CHECKOUT_OVERWRITE_UNION_IDENTICAL, + RepoCheckoutOverwriteMode::__Unknown(value) => value + } + } +} + +#[doc(hidden)] +impl FromGlib for RepoCheckoutOverwriteMode { + fn from_glib(value: ffi::OstreeRepoCheckoutOverwriteMode) -> Self { + match value { + 0 => RepoCheckoutOverwriteMode::None, + 1 => RepoCheckoutOverwriteMode::UnionFiles, + 2 => RepoCheckoutOverwriteMode::AddFiles, + 3 => RepoCheckoutOverwriteMode::UnionIdentical, + value => RepoCheckoutOverwriteMode::__Unknown(value), + } + } +} + +#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash)] +#[derive(Clone, Copy)] +pub enum RepoMode { + Bare, + Archive, + BareUser, + BareUserOnly, + #[doc(hidden)] + __Unknown(i32), +} + +#[doc(hidden)] +impl ToGlib for RepoMode { + type GlibType = ffi::OstreeRepoMode; + + fn to_glib(&self) -> ffi::OstreeRepoMode { + match *self { + RepoMode::Bare => ffi::OSTREE_REPO_MODE_BARE, + RepoMode::Archive => ffi::OSTREE_REPO_MODE_ARCHIVE, + RepoMode::BareUser => ffi::OSTREE_REPO_MODE_BARE_USER, + RepoMode::BareUserOnly => ffi::OSTREE_REPO_MODE_BARE_USER_ONLY, + RepoMode::__Unknown(value) => value + } + } +} + +#[doc(hidden)] +impl FromGlib for RepoMode { + fn from_glib(value: ffi::OstreeRepoMode) -> Self { + match value { + 0 => RepoMode::Bare, + 1 => RepoMode::Archive, + 2 => RepoMode::BareUser, + 3 => RepoMode::BareUserOnly, + value => RepoMode::__Unknown(value), + } + } +} + +#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash)] +#[derive(Clone, Copy)] +pub enum RepoPruneFlags { + None, + NoPrune, + RefsOnly, + #[doc(hidden)] + __Unknown(i32), +} + +#[doc(hidden)] +impl ToGlib for RepoPruneFlags { + type GlibType = ffi::OstreeRepoPruneFlags; + + fn to_glib(&self) -> ffi::OstreeRepoPruneFlags { + match *self { + RepoPruneFlags::None => ffi::OSTREE_REPO_PRUNE_FLAGS_NONE, + RepoPruneFlags::NoPrune => ffi::OSTREE_REPO_PRUNE_FLAGS_NO_PRUNE, + RepoPruneFlags::RefsOnly => ffi::OSTREE_REPO_PRUNE_FLAGS_REFS_ONLY, + RepoPruneFlags::__Unknown(value) => value + } + } +} + +#[doc(hidden)] +impl FromGlib for RepoPruneFlags { + fn from_glib(value: ffi::OstreeRepoPruneFlags) -> Self { + match value { + 0 => RepoPruneFlags::None, + 1 => RepoPruneFlags::NoPrune, + 2 => RepoPruneFlags::RefsOnly, + value => RepoPruneFlags::__Unknown(value), + } + } +} + +#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash)] +#[derive(Clone, Copy)] +pub enum RepoRemoteChange { + Add, + AddIfNotExists, + Delete, + DeleteIfExists, + #[doc(hidden)] + __Unknown(i32), +} + +#[doc(hidden)] +impl ToGlib for RepoRemoteChange { + type GlibType = ffi::OstreeRepoRemoteChange; + + fn to_glib(&self) -> ffi::OstreeRepoRemoteChange { + match *self { + RepoRemoteChange::Add => ffi::OSTREE_REPO_REMOTE_CHANGE_ADD, + RepoRemoteChange::AddIfNotExists => ffi::OSTREE_REPO_REMOTE_CHANGE_ADD_IF_NOT_EXISTS, + RepoRemoteChange::Delete => ffi::OSTREE_REPO_REMOTE_CHANGE_DELETE, + RepoRemoteChange::DeleteIfExists => ffi::OSTREE_REPO_REMOTE_CHANGE_DELETE_IF_EXISTS, + RepoRemoteChange::__Unknown(value) => value + } + } +} + +#[doc(hidden)] +impl FromGlib for RepoRemoteChange { + fn from_glib(value: ffi::OstreeRepoRemoteChange) -> Self { + match value { + 0 => RepoRemoteChange::Add, + 1 => RepoRemoteChange::AddIfNotExists, + 2 => RepoRemoteChange::Delete, + 3 => RepoRemoteChange::DeleteIfExists, + value => RepoRemoteChange::__Unknown(value), + } + } +} + +#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash)] +#[derive(Clone, Copy)] +pub enum RepoResolveRevExtFlags { + RepoResolveRevExtNone, + #[doc(hidden)] + __Unknown(i32), +} + +#[doc(hidden)] +impl ToGlib for RepoResolveRevExtFlags { + type GlibType = ffi::OstreeRepoResolveRevExtFlags; + + fn to_glib(&self) -> ffi::OstreeRepoResolveRevExtFlags { + match *self { + RepoResolveRevExtFlags::RepoResolveRevExtNone => ffi::OSTREE_REPO_RESOLVE_REV_EXT_NONE, + RepoResolveRevExtFlags::__Unknown(value) => value + } + } +} + +#[doc(hidden)] +impl FromGlib for RepoResolveRevExtFlags { + fn from_glib(value: ffi::OstreeRepoResolveRevExtFlags) -> Self { + match value { + 0 => RepoResolveRevExtFlags::RepoResolveRevExtNone, + value => RepoResolveRevExtFlags::__Unknown(value), + } + } +} + +#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash)] +#[derive(Clone, Copy)] +pub enum StaticDeltaGenerateOpt { + Lowlatency, + Major, + #[doc(hidden)] + __Unknown(i32), +} + +#[doc(hidden)] +impl ToGlib for StaticDeltaGenerateOpt { + type GlibType = ffi::OstreeStaticDeltaGenerateOpt; + + fn to_glib(&self) -> ffi::OstreeStaticDeltaGenerateOpt { + match *self { + StaticDeltaGenerateOpt::Lowlatency => ffi::OSTREE_STATIC_DELTA_GENERATE_OPT_LOWLATENCY, + StaticDeltaGenerateOpt::Major => ffi::OSTREE_STATIC_DELTA_GENERATE_OPT_MAJOR, + StaticDeltaGenerateOpt::__Unknown(value) => value + } + } +} + +#[doc(hidden)] +impl FromGlib for StaticDeltaGenerateOpt { + fn from_glib(value: ffi::OstreeStaticDeltaGenerateOpt) -> Self { + match value { + 0 => StaticDeltaGenerateOpt::Lowlatency, + 1 => StaticDeltaGenerateOpt::Major, + value => StaticDeltaGenerateOpt::__Unknown(value), + } + } +} + diff --git a/rust-bindings/rust/src/auto/flags.rs b/rust-bindings/rust/src/auto/flags.rs new file mode 100644 index 00000000..6e820f46 --- /dev/null +++ b/rust-bindings/rust/src/auto/flags.rs @@ -0,0 +1,108 @@ +// This file was generated by gir (https://github.com/gtk-rs/gir @ ffda6f9) +// from gir-files (https://github.com/gtk-rs/gir-files @ ???) +// DO NOT EDIT + +use ffi; +use glib::translate::*; + +#[cfg(any(feature = "v2015_7", feature = "dox"))] +bitflags! { + pub struct RepoCommitState: u32 { + const NORMAL = 0; + const PARTIAL = 1; + } +} + +#[cfg(any(feature = "v2015_7", feature = "dox"))] +#[doc(hidden)] +impl ToGlib for RepoCommitState { + type GlibType = ffi::OstreeRepoCommitState; + + fn to_glib(&self) -> ffi::OstreeRepoCommitState { + self.bits() + } +} + +#[cfg(any(feature = "v2015_7", feature = "dox"))] +#[doc(hidden)] +impl FromGlib for RepoCommitState { + fn from_glib(value: ffi::OstreeRepoCommitState) -> RepoCommitState { + RepoCommitState::from_bits_truncate(value) + } +} + +bitflags! { + pub struct RepoListRefsExtFlags: u32 { + const NONE = 0; + const ALIASES = 1; + const EXCLUDE_REMOTES = 2; + } +} + +#[doc(hidden)] +impl ToGlib for RepoListRefsExtFlags { + type GlibType = ffi::OstreeRepoListRefsExtFlags; + + fn to_glib(&self) -> ffi::OstreeRepoListRefsExtFlags { + self.bits() + } +} + +#[doc(hidden)] +impl FromGlib for RepoListRefsExtFlags { + fn from_glib(value: ffi::OstreeRepoListRefsExtFlags) -> RepoListRefsExtFlags { + RepoListRefsExtFlags::from_bits_truncate(value) + } +} + +bitflags! { + pub struct RepoPullFlags: u32 { + const NONE = 0; + const MIRROR = 1; + const COMMIT_ONLY = 2; + const UNTRUSTED = 4; + const BAREUSERONLY_FILES = 8; + const TRUSTED_HTTP = 16; + } +} + +#[doc(hidden)] +impl ToGlib for RepoPullFlags { + type GlibType = ffi::OstreeRepoPullFlags; + + fn to_glib(&self) -> ffi::OstreeRepoPullFlags { + self.bits() + } +} + +#[doc(hidden)] +impl FromGlib for RepoPullFlags { + fn from_glib(value: ffi::OstreeRepoPullFlags) -> RepoPullFlags { + RepoPullFlags::from_bits_truncate(value) + } +} + +bitflags! { + pub struct SePolicyRestoreconFlags: u32 { + const NONE = 0; + const ALLOW_NOLABEL = 1; + const KEEP_EXISTING = 2; + } +} + +#[doc(hidden)] +impl ToGlib for SePolicyRestoreconFlags { + type GlibType = ffi::OstreeSePolicyRestoreconFlags; + + fn to_glib(&self) -> ffi::OstreeSePolicyRestoreconFlags { + self.bits() + } +} + +#[doc(hidden)] +impl FromGlib for SePolicyRestoreconFlags { + fn from_glib(value: ffi::OstreeSePolicyRestoreconFlags) -> SePolicyRestoreconFlags { + SePolicyRestoreconFlags::from_bits_truncate(value) + } +} + diff --git a/rust-bindings/rust/src/auto/functions.rs b/rust-bindings/rust/src/auto/functions.rs new file mode 100644 index 00000000..df0af991 --- /dev/null +++ b/rust-bindings/rust/src/auto/functions.rs @@ -0,0 +1,376 @@ +// This file was generated by gir (https://github.com/gtk-rs/gir @ ffda6f9) +// from gir-files (https://github.com/gtk-rs/gir-files @ ???) +// DO NOT EDIT + +use Error; +use ObjectType; +use ffi; +use gio; +use glib; +use glib::object::IsA; +use glib::translate::*; +use std::mem; +use std::ptr; + + +#[cfg(any(feature = "v2017_15", feature = "dox"))] +pub fn break_hardlink<'a, P: Into>>(dfd: i32, path: &str, skip_xattrs: bool, cancellable: P) -> Result<(), Error> { + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut error = ptr::null_mut(); + let _ = ffi::ostree_break_hardlink(dfd, path.to_glib_none().0, skip_xattrs.to_glib(), cancellable.0, &mut error); + if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } + } +} + +pub fn check_version(required_year: u32, required_release: u32) -> bool { + unsafe { + from_glib(ffi::ostree_check_version(required_year, required_release)) + } +} + +//pub fn checksum_b64_from_bytes(csum: /*Unknown conversion*//*Unimplemented*/FixedArray TypeId { ns_id: 0, id: 3 }; 32) -> Option { +// unsafe { TODO: call ffi::ostree_checksum_b64_from_bytes() } +//} + +//pub fn checksum_b64_inplace_from_bytes(csum: /*Unknown conversion*//*Unimplemented*/FixedArray TypeId { ns_id: 0, id: 3 }; 32, buf: &str) { +// unsafe { TODO: call ffi::ostree_checksum_b64_inplace_from_bytes() } +//} + +//pub fn checksum_b64_inplace_to_bytes(checksum: /*Unknown conversion*//*Unimplemented*/FixedArray TypeId { ns_id: 0, id: 28 }; 32, buf: u8) { +// unsafe { TODO: call ffi::ostree_checksum_b64_inplace_to_bytes() } +//} + +//pub fn checksum_b64_to_bytes(checksum: &str) -> /*Unknown conversion*//*Unimplemented*/FixedArray TypeId { ns_id: 0, id: 3 }; 32 { +// unsafe { TODO: call ffi::ostree_checksum_b64_to_bytes() } +//} + +//pub fn checksum_bytes_peek(bytes: &glib::Variant) -> /*Unknown conversion*//*Unimplemented*/FixedArray TypeId { ns_id: 0, id: 3 }; 32 { +// unsafe { TODO: call ffi::ostree_checksum_bytes_peek() } +//} + +//pub fn checksum_bytes_peek_validate(bytes: &glib::Variant) -> Result { +// unsafe { TODO: call ffi::ostree_checksum_bytes_peek_validate() } +//} + +//pub fn checksum_file<'a, P: IsA, Q: Into>>(f: &P, objtype: ObjectType, out_csum: /*Unknown conversion*//*Unimplemented*/FixedArray TypeId { ns_id: 0, id: 3 }; 32, cancellable: Q) -> Result<(), Error> { +// unsafe { TODO: call ffi::ostree_checksum_file() } +//} + +//pub fn checksum_file_async<'a, P: IsA, Q: Into>, R: /*Ignored*/gio::AsyncReadyCallback>(f: &P, objtype: ObjectType, io_priority: i32, cancellable: Q, callback: R) { +// unsafe { TODO: call ffi::ostree_checksum_file_async() } +//} + +//#[cfg(any(feature = "v2017_13", feature = "dox"))] +//pub fn checksum_file_at<'a, P: Into>, Q: Into>>(dfd: i32, path: &str, stbuf: P, objtype: ObjectType, flags: /*Ignored*/ChecksumFlags, out_checksum: &str, cancellable: Q) -> Result<(), Error> { +// unsafe { TODO: call ffi::ostree_checksum_file_at() } +//} + +//pub fn checksum_file_from_input<'a, 'b, 'c, P: Into>, Q: IsA + 'b, R: Into>, S: Into>>(file_info: &gio::FileInfo, xattrs: P, in_: R, objtype: ObjectType, out_csum: /*Unknown conversion*//*Unimplemented*/FixedArray TypeId { ns_id: 0, id: 3 }; 32, cancellable: S) -> Result<(), Error> { +// unsafe { TODO: call ffi::ostree_checksum_file_from_input() } +//} + +//pub fn checksum_from_bytes(csum: /*Unknown conversion*//*Unimplemented*/FixedArray TypeId { ns_id: 0, id: 3 }; 32) -> Option { +// unsafe { TODO: call ffi::ostree_checksum_from_bytes() } +//} + +pub fn checksum_from_bytes_v(csum_v: &glib::Variant) -> Option { + unsafe { + from_glib_full(ffi::ostree_checksum_from_bytes_v(csum_v.to_glib_none().0)) + } +} + +//pub fn checksum_inplace_from_bytes(csum: /*Unknown conversion*//*Unimplemented*/FixedArray TypeId { ns_id: 0, id: 3 }; 32, buf: &str) { +// unsafe { TODO: call ffi::ostree_checksum_inplace_from_bytes() } +//} + +//pub fn checksum_to_bytes(checksum: &str) -> /*Unknown conversion*//*Unimplemented*/FixedArray TypeId { ns_id: 0, id: 3 }; 32 { +// unsafe { TODO: call ffi::ostree_checksum_to_bytes() } +//} + +pub fn checksum_to_bytes_v(checksum: &str) -> Option { + unsafe { + from_glib_full(ffi::ostree_checksum_to_bytes_v(checksum.to_glib_none().0)) + } +} + +//pub fn cmd__private__() -> /*Ignored*/Option { +// unsafe { TODO: call ffi::ostree_cmd__private__() } +//} + +pub fn commit_get_content_checksum(commit_variant: &glib::Variant) -> Option { + unsafe { + from_glib_full(ffi::ostree_commit_get_content_checksum(commit_variant.to_glib_none().0)) + } +} + +pub fn commit_get_parent(commit_variant: &glib::Variant) -> Option { + unsafe { + from_glib_full(ffi::ostree_commit_get_parent(commit_variant.to_glib_none().0)) + } +} + +pub fn commit_get_timestamp(commit_variant: &glib::Variant) -> u64 { + unsafe { + ffi::ostree_commit_get_timestamp(commit_variant.to_glib_none().0) + } +} + +pub fn content_file_parse<'a, P: IsA, Q: Into>>(compressed: bool, content_path: &P, trusted: bool, cancellable: Q) -> Result<(gio::InputStream, gio::FileInfo, glib::Variant), Error> { + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut out_input = ptr::null_mut(); + let mut out_file_info = ptr::null_mut(); + let mut out_xattrs = ptr::null_mut(); + let mut error = ptr::null_mut(); + let _ = ffi::ostree_content_file_parse(compressed.to_glib(), content_path.to_glib_none().0, trusted.to_glib(), &mut out_input, &mut out_file_info, &mut out_xattrs, cancellable.0, &mut error); + if error.is_null() { Ok((from_glib_full(out_input), from_glib_full(out_file_info), from_glib_full(out_xattrs))) } else { Err(from_glib_full(error)) } + } +} + +pub fn content_file_parse_at<'a, P: Into>>(compressed: bool, parent_dfd: i32, path: &str, trusted: bool, cancellable: P) -> Result<(gio::InputStream, gio::FileInfo, glib::Variant), Error> { + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut out_input = ptr::null_mut(); + let mut out_file_info = ptr::null_mut(); + let mut out_xattrs = ptr::null_mut(); + let mut error = ptr::null_mut(); + let _ = ffi::ostree_content_file_parse_at(compressed.to_glib(), parent_dfd, path.to_glib_none().0, trusted.to_glib(), &mut out_input, &mut out_file_info, &mut out_xattrs, cancellable.0, &mut error); + if error.is_null() { Ok((from_glib_full(out_input), from_glib_full(out_file_info), from_glib_full(out_xattrs))) } else { Err(from_glib_full(error)) } + } +} + +pub fn content_stream_parse<'a, P: IsA, Q: Into>>(compressed: bool, input: &P, input_length: u64, trusted: bool, cancellable: Q) -> Result<(gio::InputStream, gio::FileInfo, glib::Variant), Error> { + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut out_input = ptr::null_mut(); + let mut out_file_info = ptr::null_mut(); + let mut out_xattrs = ptr::null_mut(); + let mut error = ptr::null_mut(); + let _ = ffi::ostree_content_stream_parse(compressed.to_glib(), input.to_glib_none().0, input_length, trusted.to_glib(), &mut out_input, &mut out_file_info, &mut out_xattrs, cancellable.0, &mut error); + if error.is_null() { Ok((from_glib_full(out_input), from_glib_full(out_file_info), from_glib_full(out_xattrs))) } else { Err(from_glib_full(error)) } + } +} + +pub fn create_directory_metadata<'a, P: Into>>(dir_info: &gio::FileInfo, xattrs: P) -> Option { + let xattrs = xattrs.into(); + let xattrs = xattrs.to_glib_none(); + unsafe { + from_glib_full(ffi::ostree_create_directory_metadata(dir_info.to_glib_none().0, xattrs.0)) + } +} + +//pub fn diff_dirs<'a, P: IsA, Q: IsA, R: Into>>(flags: /*Ignored*/DiffFlags, a: &P, b: &Q, modified: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 1, id: 24 }, removed: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 4, id: 15 }, added: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 4, id: 15 }, cancellable: R) -> Result<(), Error> { +// unsafe { TODO: call ffi::ostree_diff_dirs() } +//} + +//pub fn diff_dirs_with_options<'a, 'b, P: IsA, Q: IsA, R: Into>, S: Into>>(flags: /*Ignored*/DiffFlags, a: &P, b: &Q, modified: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 1, id: 24 }, removed: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 4, id: 15 }, added: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 4, id: 15 }, options: R, cancellable: S) -> Result<(), Error> { +// unsafe { TODO: call ffi::ostree_diff_dirs_with_options() } +//} + +//pub fn diff_print, Q: IsA>(a: &P, b: &Q, modified: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 1, id: 24 }, removed: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 4, id: 15 }, added: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 4, id: 15 }) { +// unsafe { TODO: call ffi::ostree_diff_print() } +//} + +//pub fn gpg_error_quark() -> /*Ignored*/glib::Quark { +// unsafe { TODO: call ffi::ostree_gpg_error_quark() } +//} + +//pub fn hash_object_name>>(a: P) -> u32 { +// unsafe { TODO: call ffi::ostree_hash_object_name() } +//} + +//pub fn metadata_variant_type(objtype: ObjectType) -> /*Ignored*/Option { +// unsafe { TODO: call ffi::ostree_metadata_variant_type() } +//} + +pub fn object_from_string(str: &str) -> (String, ObjectType) { + unsafe { + let mut out_checksum = ptr::null_mut(); + let mut out_objtype = mem::uninitialized(); + ffi::ostree_object_from_string(str.to_glib_none().0, &mut out_checksum, &mut out_objtype); + (from_glib_full(out_checksum), from_glib(out_objtype)) + } +} + +pub fn object_name_deserialize(variant: &glib::Variant) -> (String, ObjectType) { + unsafe { + let mut out_checksum = ptr::null(); + let mut out_objtype = mem::uninitialized(); + ffi::ostree_object_name_deserialize(variant.to_glib_none().0, &mut out_checksum, &mut out_objtype); + (from_glib_none(out_checksum), from_glib(out_objtype)) + } +} + +pub fn object_name_serialize(checksum: &str, objtype: ObjectType) -> Option { + unsafe { + from_glib_none(ffi::ostree_object_name_serialize(checksum.to_glib_none().0, objtype.to_glib())) + } +} + +pub fn object_to_string(checksum: &str, objtype: ObjectType) -> Option { + unsafe { + from_glib_full(ffi::ostree_object_to_string(checksum.to_glib_none().0, objtype.to_glib())) + } +} + +pub fn object_type_from_string(str: &str) -> ObjectType { + unsafe { + from_glib(ffi::ostree_object_type_from_string(str.to_glib_none().0)) + } +} + +pub fn object_type_to_string(objtype: ObjectType) -> Option { + unsafe { + from_glib_none(ffi::ostree_object_type_to_string(objtype.to_glib())) + } +} + +pub fn parse_refspec(refspec: &str) -> Result<(Option, String), Error> { + unsafe { + let mut out_remote = ptr::null_mut(); + let mut out_ref = ptr::null_mut(); + let mut error = ptr::null_mut(); + let _ = ffi::ostree_parse_refspec(refspec.to_glib_none().0, &mut out_remote, &mut out_ref, &mut error); + if error.is_null() { Ok((from_glib_full(out_remote), from_glib_full(out_ref))) } else { Err(from_glib_full(error)) } + } +} + +pub fn raw_file_to_archive_z2_stream<'a, 'b, P: IsA, Q: Into>, R: Into>>(input: &P, file_info: &gio::FileInfo, xattrs: Q, cancellable: R) -> Result { + let xattrs = xattrs.into(); + let xattrs = xattrs.to_glib_none(); + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut out_input = ptr::null_mut(); + let mut error = ptr::null_mut(); + let _ = ffi::ostree_raw_file_to_archive_z2_stream(input.to_glib_none().0, file_info.to_glib_none().0, xattrs.0, &mut out_input, cancellable.0, &mut error); + if error.is_null() { Ok(from_glib_full(out_input)) } else { Err(from_glib_full(error)) } + } +} + +#[cfg(any(feature = "v2017_3", feature = "dox"))] +pub fn raw_file_to_archive_z2_stream_with_options<'a, 'b, 'c, P: IsA, Q: Into>, R: Into>, S: Into>>(input: &P, file_info: &gio::FileInfo, xattrs: Q, options: R, cancellable: S) -> Result { + let xattrs = xattrs.into(); + let xattrs = xattrs.to_glib_none(); + let options = options.into(); + let options = options.to_glib_none(); + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut out_input = ptr::null_mut(); + let mut error = ptr::null_mut(); + let _ = ffi::ostree_raw_file_to_archive_z2_stream_with_options(input.to_glib_none().0, file_info.to_glib_none().0, xattrs.0, options.0, &mut out_input, cancellable.0, &mut error); + if error.is_null() { Ok(from_glib_full(out_input)) } else { Err(from_glib_full(error)) } + } +} + +pub fn raw_file_to_content_stream<'a, 'b, P: IsA, Q: Into>, R: Into>>(input: &P, file_info: &gio::FileInfo, xattrs: Q, cancellable: R) -> Result<(gio::InputStream, u64), Error> { + let xattrs = xattrs.into(); + let xattrs = xattrs.to_glib_none(); + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut out_input = ptr::null_mut(); + let mut out_length = mem::uninitialized(); + let mut error = ptr::null_mut(); + let _ = ffi::ostree_raw_file_to_content_stream(input.to_glib_none().0, file_info.to_glib_none().0, xattrs.0, &mut out_input, &mut out_length, cancellable.0, &mut error); + if error.is_null() { Ok((from_glib_full(out_input), out_length)) } else { Err(from_glib_full(error)) } + } +} + +pub fn validate_checksum_string(sha256: &str) -> Result<(), Error> { + unsafe { + let mut error = ptr::null_mut(); + let _ = ffi::ostree_validate_checksum_string(sha256.to_glib_none().0, &mut error); + if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } + } +} + +#[cfg(any(feature = "v2018_6", feature = "dox"))] +pub fn validate_collection_id<'a, P: Into>>(collection_id: P) -> Result<(), Error> { + let collection_id = collection_id.into(); + let collection_id = collection_id.to_glib_none(); + unsafe { + let mut error = ptr::null_mut(); + let _ = ffi::ostree_validate_collection_id(collection_id.0, &mut error); + if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } + } +} + +#[cfg(any(feature = "v2017_8", feature = "dox"))] +pub fn validate_remote_name(remote_name: &str) -> Result<(), Error> { + unsafe { + let mut error = ptr::null_mut(); + let _ = ffi::ostree_validate_remote_name(remote_name.to_glib_none().0, &mut error); + if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } + } +} + +pub fn validate_rev(rev: &str) -> Result<(), Error> { + unsafe { + let mut error = ptr::null_mut(); + let _ = ffi::ostree_validate_rev(rev.to_glib_none().0, &mut error); + if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } + } +} + +pub fn validate_structureof_checksum_string(checksum: &str) -> Result<(), Error> { + unsafe { + let mut error = ptr::null_mut(); + let _ = ffi::ostree_validate_structureof_checksum_string(checksum.to_glib_none().0, &mut error); + if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } + } +} + +pub fn validate_structureof_commit(commit: &glib::Variant) -> Result<(), Error> { + unsafe { + let mut error = ptr::null_mut(); + let _ = ffi::ostree_validate_structureof_commit(commit.to_glib_none().0, &mut error); + if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } + } +} + +pub fn validate_structureof_csum_v(checksum: &glib::Variant) -> Result<(), Error> { + unsafe { + let mut error = ptr::null_mut(); + let _ = ffi::ostree_validate_structureof_csum_v(checksum.to_glib_none().0, &mut error); + if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } + } +} + +pub fn validate_structureof_dirmeta(dirmeta: &glib::Variant) -> Result<(), Error> { + unsafe { + let mut error = ptr::null_mut(); + let _ = ffi::ostree_validate_structureof_dirmeta(dirmeta.to_glib_none().0, &mut error); + if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } + } +} + +pub fn validate_structureof_dirtree(dirtree: &glib::Variant) -> Result<(), Error> { + unsafe { + let mut error = ptr::null_mut(); + let _ = ffi::ostree_validate_structureof_dirtree(dirtree.to_glib_none().0, &mut error); + if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } + } +} + +pub fn validate_structureof_file_mode(mode: u32) -> Result<(), Error> { + unsafe { + let mut error = ptr::null_mut(); + let _ = ffi::ostree_validate_structureof_file_mode(mode, &mut error); + if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } + } +} + +pub fn validate_structureof_objtype(objtype: u8) -> Result<(), Error> { + unsafe { + let mut error = ptr::null_mut(); + let _ = ffi::ostree_validate_structureof_objtype(objtype, &mut error); + if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } + } +} diff --git a/rust-bindings/rust/src/auto/gpg_verify_result.rs b/rust-bindings/rust/src/auto/gpg_verify_result.rs new file mode 100644 index 00000000..ec3e07c6 --- /dev/null +++ b/rust-bindings/rust/src/auto/gpg_verify_result.rs @@ -0,0 +1,96 @@ +// This file was generated by gir (https://github.com/gtk-rs/gir @ ffda6f9) +// from gir-files (https://github.com/gtk-rs/gir-files @ ???) +// DO NOT EDIT + +use Error; +use GpgSignatureFormatFlags; +use ffi; +use glib; +use glib::object::IsA; +use glib::translate::*; +use glib_ffi; +use gobject_ffi; +use std::mem; +use std::ptr; + +glib_wrapper! { + pub struct GpgVerifyResult(Object); + + match fn { + get_type => || ffi::ostree_gpg_verify_result_get_type(), + } +} + +impl GpgVerifyResult { + pub fn describe_variant<'a, P: Into>>(variant: &glib::Variant, output_buffer: &mut glib::String, line_prefix: P, flags: GpgSignatureFormatFlags) { + let line_prefix = line_prefix.into(); + let line_prefix = line_prefix.to_glib_none(); + unsafe { + ffi::ostree_gpg_verify_result_describe_variant(variant.to_glib_none().0, output_buffer.to_glib_none_mut().0, line_prefix.0, flags.to_glib()); + } + } +} + +pub trait GpgVerifyResultExt { + fn count_all(&self) -> u32; + + fn count_valid(&self) -> u32; + + fn describe<'a, P: Into>>(&self, signature_index: u32, output_buffer: &mut glib::String, line_prefix: P, flags: GpgSignatureFormatFlags); + + //fn get(&self, signature_index: u32, attrs: /*Unimplemented*/&CArray TypeId { ns_id: 1, id: 26 }) -> Option; + + fn get_all(&self, signature_index: u32) -> Option; + + fn lookup(&self, key_id: &str) -> Option; + + fn require_valid_signature(&self) -> Result<(), Error>; +} + +impl> GpgVerifyResultExt for O { + fn count_all(&self) -> u32 { + unsafe { + ffi::ostree_gpg_verify_result_count_all(self.to_glib_none().0) + } + } + + fn count_valid(&self) -> u32 { + unsafe { + ffi::ostree_gpg_verify_result_count_valid(self.to_glib_none().0) + } + } + + fn describe<'a, P: Into>>(&self, signature_index: u32, output_buffer: &mut glib::String, line_prefix: P, flags: GpgSignatureFormatFlags) { + let line_prefix = line_prefix.into(); + let line_prefix = line_prefix.to_glib_none(); + unsafe { + ffi::ostree_gpg_verify_result_describe(self.to_glib_none().0, signature_index, output_buffer.to_glib_none_mut().0, line_prefix.0, flags.to_glib()); + } + } + + //fn get(&self, signature_index: u32, attrs: /*Unimplemented*/&CArray TypeId { ns_id: 1, id: 26 }) -> Option { + // unsafe { TODO: call ffi::ostree_gpg_verify_result_get() } + //} + + fn get_all(&self, signature_index: u32) -> Option { + unsafe { + from_glib_full(ffi::ostree_gpg_verify_result_get_all(self.to_glib_none().0, signature_index)) + } + } + + fn lookup(&self, key_id: &str) -> Option { + unsafe { + let mut out_signature_index = mem::uninitialized(); + let ret = from_glib(ffi::ostree_gpg_verify_result_lookup(self.to_glib_none().0, key_id.to_glib_none().0, &mut out_signature_index)); + if ret { Some(out_signature_index) } else { None } + } + } + + fn require_valid_signature(&self) -> Result<(), Error> { + unsafe { + let mut error = ptr::null_mut(); + let _ = ffi::ostree_gpg_verify_result_require_valid_signature(self.to_glib_none().0, &mut error); + if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } + } + } +} diff --git a/rust-bindings/rust/src/auto/mod.rs b/rust-bindings/rust/src/auto/mod.rs new file mode 100644 index 00000000..59aaea84 --- /dev/null +++ b/rust-bindings/rust/src/auto/mod.rs @@ -0,0 +1,102 @@ +// This file was generated by gir (https://github.com/gtk-rs/gir @ ffda6f9) +// from gir-files (https://github.com/gtk-rs/gir-files @ ???) +// DO NOT EDIT + +mod async_progress; +pub use self::async_progress::AsyncProgress; +pub use self::async_progress::AsyncProgressExt; + +mod gpg_verify_result; +pub use self::gpg_verify_result::GpgVerifyResult; +pub use self::gpg_verify_result::GpgVerifyResultExt; + +mod mutable_tree; +pub use self::mutable_tree::MutableTree; +pub use self::mutable_tree::MutableTreeExt; + +mod repo; +pub use self::repo::Repo; +pub use self::repo::RepoExt; + +mod repo_file; +pub use self::repo_file::RepoFile; +pub use self::repo_file::RepoFileExt; + +mod se_policy; +pub use self::se_policy::SePolicy; +pub use self::se_policy::SePolicyExt; + +#[cfg(any(feature = "v2018_6", feature = "dox"))] +mod collection_ref; +#[cfg(any(feature = "v2018_6", feature = "dox"))] +pub use self::collection_ref::CollectionRef; + +#[cfg(any(feature = "v2018_6", feature = "dox"))] +mod remote; +#[cfg(any(feature = "v2018_6", feature = "dox"))] +pub use self::remote::Remote; + +mod repo_commit_modifier; +pub use self::repo_commit_modifier::RepoCommitModifier; + +mod repo_dev_ino_cache; +pub use self::repo_dev_ino_cache::RepoDevInoCache; + +mod repo_transaction_stats; +pub use self::repo_transaction_stats::RepoTransactionStats; + +mod enums; +pub use self::enums::GpgSignatureFormatFlags; +pub use self::enums::ObjectType; +pub use self::enums::RepoCheckoutMode; +pub use self::enums::RepoCheckoutOverwriteMode; +pub use self::enums::RepoMode; +pub use self::enums::RepoPruneFlags; +pub use self::enums::RepoRemoteChange; +pub use self::enums::RepoResolveRevExtFlags; +pub use self::enums::StaticDeltaGenerateOpt; + +mod flags; +#[cfg(any(feature = "v2015_7", feature = "dox"))] +pub use self::flags::RepoCommitState; +pub use self::flags::RepoListRefsExtFlags; +pub use self::flags::RepoPullFlags; +pub use self::flags::SePolicyRestoreconFlags; + +pub mod functions; + +mod constants; +pub use self::constants::COMMIT_GVARIANT_STRING; +#[cfg(any(feature = "v2018_6", feature = "dox"))] +pub use self::constants::COMMIT_META_KEY_COLLECTION_BINDING; +#[cfg(any(feature = "v2017_7", feature = "dox"))] +pub use self::constants::COMMIT_META_KEY_ENDOFLIFE; +#[cfg(any(feature = "v2017_7", feature = "dox"))] +pub use self::constants::COMMIT_META_KEY_ENDOFLIFE_REBASE; +#[cfg(any(feature = "v2017_9", feature = "dox"))] +pub use self::constants::COMMIT_META_KEY_REF_BINDING; +#[cfg(any(feature = "v2017_13", feature = "dox"))] +pub use self::constants::COMMIT_META_KEY_SOURCE_TITLE; +#[cfg(any(feature = "v2014_9", feature = "dox"))] +pub use self::constants::COMMIT_META_KEY_VERSION; +pub use self::constants::DIRMETA_GVARIANT_STRING; +pub use self::constants::FILEMETA_GVARIANT_STRING; +#[cfg(any(feature = "v2018_3", feature = "dox"))] +pub use self::constants::ORIGIN_TRANSIENT_GROUP; +#[cfg(any(feature = "v2018_6", feature = "dox"))] +pub use self::constants::REPO_METADATA_REF; +pub use self::constants::SUMMARY_GVARIANT_STRING; +pub use self::constants::SUMMARY_SIG_GVARIANT_STRING; +pub use self::constants::TREE_GVARIANT_STRING; +#[cfg(any(feature = "v2017_4", feature = "dox"))] +pub use self::constants::VERSION_S; + +#[doc(hidden)] +pub mod traits { + pub use super::AsyncProgressExt; + pub use super::GpgVerifyResultExt; + pub use super::MutableTreeExt; + pub use super::RepoExt; + pub use super::RepoFileExt; + pub use super::SePolicyExt; +} diff --git a/rust-bindings/rust/src/auto/mutable_tree.rs b/rust-bindings/rust/src/auto/mutable_tree.rs new file mode 100644 index 00000000..3e6cb5e2 --- /dev/null +++ b/rust-bindings/rust/src/auto/mutable_tree.rs @@ -0,0 +1,142 @@ +// This file was generated by gir (https://github.com/gtk-rs/gir @ ffda6f9) +// from gir-files (https://github.com/gtk-rs/gir-files @ ???) +// DO NOT EDIT + +use Error; +use Repo; +use ffi; +use glib::object::IsA; +use glib::translate::*; +use glib_ffi; +use gobject_ffi; +use std::mem; +use std::ptr; + +glib_wrapper! { + pub struct MutableTree(Object); + + match fn { + get_type => || ffi::ostree_mutable_tree_get_type(), + } +} + +impl MutableTree { + pub fn new() -> MutableTree { + unsafe { + from_glib_full(ffi::ostree_mutable_tree_new()) + } + } + + pub fn new_from_checksum(repo: &Repo, contents_checksum: &str, metadata_checksum: &str) -> MutableTree { + unsafe { + from_glib_full(ffi::ostree_mutable_tree_new_from_checksum(repo.to_glib_none().0, contents_checksum.to_glib_none().0, metadata_checksum.to_glib_none().0)) + } + } +} + +impl Default for MutableTree { + fn default() -> Self { + Self::new() + } +} + +pub trait MutableTreeExt { + #[cfg(any(feature = "v2018_7", feature = "dox"))] + fn check_error(&self) -> Result<(), Error>; + + fn ensure_dir(&self, name: &str) -> Result; + + //fn ensure_parent_dirs(&self, split_path: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 0, id: 28 }, metadata_checksum: &str) -> Result; + + fn fill_empty_from_dirtree(&self, repo: &Repo, contents_checksum: &str, metadata_checksum: &str) -> bool; + + fn get_contents_checksum(&self) -> Option; + + //fn get_files(&self) -> /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 28 }/TypeId { ns_id: 0, id: 28 }; + + fn get_metadata_checksum(&self) -> Option; + + //fn get_subdirs(&self) -> /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 28 }/TypeId { ns_id: 1, id: 37 }; + + fn replace_file(&self, name: &str, checksum: &str) -> Result<(), Error>; + + fn set_contents_checksum(&self, checksum: &str); + + fn set_metadata_checksum(&self, checksum: &str); + + //fn walk(&self, split_path: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 0, id: 28 }, start: u32) -> Result; +} + +impl> MutableTreeExt for O { + #[cfg(any(feature = "v2018_7", feature = "dox"))] + fn check_error(&self) -> Result<(), Error> { + unsafe { + let mut error = ptr::null_mut(); + let _ = ffi::ostree_mutable_tree_check_error(self.to_glib_none().0, &mut error); + if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } + } + } + + fn ensure_dir(&self, name: &str) -> Result { + unsafe { + let mut out_subdir = ptr::null_mut(); + let mut error = ptr::null_mut(); + let _ = ffi::ostree_mutable_tree_ensure_dir(self.to_glib_none().0, name.to_glib_none().0, &mut out_subdir, &mut error); + if error.is_null() { Ok(from_glib_full(out_subdir)) } else { Err(from_glib_full(error)) } + } + } + + //fn ensure_parent_dirs(&self, split_path: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 0, id: 28 }, metadata_checksum: &str) -> Result { + // unsafe { TODO: call ffi::ostree_mutable_tree_ensure_parent_dirs() } + //} + + fn fill_empty_from_dirtree(&self, repo: &Repo, contents_checksum: &str, metadata_checksum: &str) -> bool { + unsafe { + from_glib(ffi::ostree_mutable_tree_fill_empty_from_dirtree(self.to_glib_none().0, repo.to_glib_none().0, contents_checksum.to_glib_none().0, metadata_checksum.to_glib_none().0)) + } + } + + fn get_contents_checksum(&self) -> Option { + unsafe { + from_glib_none(ffi::ostree_mutable_tree_get_contents_checksum(self.to_glib_none().0)) + } + } + + //fn get_files(&self) -> /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 28 }/TypeId { ns_id: 0, id: 28 } { + // unsafe { TODO: call ffi::ostree_mutable_tree_get_files() } + //} + + fn get_metadata_checksum(&self) -> Option { + unsafe { + from_glib_none(ffi::ostree_mutable_tree_get_metadata_checksum(self.to_glib_none().0)) + } + } + + //fn get_subdirs(&self) -> /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 28 }/TypeId { ns_id: 1, id: 37 } { + // unsafe { TODO: call ffi::ostree_mutable_tree_get_subdirs() } + //} + + fn replace_file(&self, name: &str, checksum: &str) -> Result<(), Error> { + unsafe { + let mut error = ptr::null_mut(); + let _ = ffi::ostree_mutable_tree_replace_file(self.to_glib_none().0, name.to_glib_none().0, checksum.to_glib_none().0, &mut error); + if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } + } + } + + fn set_contents_checksum(&self, checksum: &str) { + unsafe { + ffi::ostree_mutable_tree_set_contents_checksum(self.to_glib_none().0, checksum.to_glib_none().0); + } + } + + fn set_metadata_checksum(&self, checksum: &str) { + unsafe { + ffi::ostree_mutable_tree_set_metadata_checksum(self.to_glib_none().0, checksum.to_glib_none().0); + } + } + + //fn walk(&self, split_path: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 0, id: 28 }, start: u32) -> Result { + // unsafe { TODO: call ffi::ostree_mutable_tree_walk() } + //} +} diff --git a/rust-bindings/rust/src/auto/remote.rs b/rust-bindings/rust/src/auto/remote.rs new file mode 100644 index 00000000..520f1cee --- /dev/null +++ b/rust-bindings/rust/src/auto/remote.rs @@ -0,0 +1,37 @@ +// This file was generated by gir (https://github.com/gtk-rs/gir @ ffda6f9) +// from gir-files (https://github.com/gtk-rs/gir-files @ ???) +// DO NOT EDIT + +use ffi; +use glib::translate::*; +use glib_ffi; +use gobject_ffi; +use std::mem; +use std::ptr; + +glib_wrapper! { + #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] + pub struct Remote(Shared); + + match fn { + ref => |ptr| ffi::ostree_remote_ref(ptr), + unref => |ptr| ffi::ostree_remote_unref(ptr), + get_type => || ffi::ostree_remote_get_type(), + } +} + +impl Remote { + #[cfg(any(feature = "v2018_6", feature = "dox"))] + pub fn get_name(&self) -> Option { + unsafe { + from_glib_none(ffi::ostree_remote_get_name(self.to_glib_none().0)) + } + } + + #[cfg(any(feature = "v2018_6", feature = "dox"))] + pub fn get_url(&self) -> Option { + unsafe { + from_glib_full(ffi::ostree_remote_get_url(self.to_glib_none().0)) + } + } +} diff --git a/rust-bindings/rust/src/auto/repo.rs b/rust-bindings/rust/src/auto/repo.rs new file mode 100644 index 00000000..d7bdd3da --- /dev/null +++ b/rust-bindings/rust/src/auto/repo.rs @@ -0,0 +1,1378 @@ +// This file was generated by gir (https://github.com/gtk-rs/gir @ ffda6f9) +// from gir-files (https://github.com/gtk-rs/gir-files @ ???) +// DO NOT EDIT + +use AsyncProgress; +#[cfg(any(feature = "v2018_6", feature = "dox"))] +use CollectionRef; +use Error; +use GpgVerifyResult; +use MutableTree; +use ObjectType; +#[cfg(any(feature = "v2018_6", feature = "dox"))] +use Remote; +use RepoCheckoutMode; +use RepoCheckoutOverwriteMode; +use RepoCommitModifier; +#[cfg(any(feature = "v2015_7", feature = "dox"))] +use RepoCommitState; +use RepoFile; +use RepoMode; +use RepoPruneFlags; +use RepoPullFlags; +use RepoRemoteChange; +use RepoResolveRevExtFlags; +use RepoTransactionStats; +use StaticDeltaGenerateOpt; +use ffi; +use gio; +use glib; +use glib::StaticType; +use glib::Value; +use glib::object::Downcast; +use glib::object::IsA; +use glib::signal::SignalHandlerId; +use glib::signal::connect; +use glib::translate::*; +use glib_ffi; +use gobject_ffi; +use libc; +use std::boxed::Box as Box_; +use std::mem; +use std::mem::transmute; +use std::ptr; + +glib_wrapper! { + pub struct Repo(Object); + + match fn { + get_type => || ffi::ostree_repo_get_type(), + } +} + +impl Repo { + pub fn new>(path: &P) -> Repo { + unsafe { + from_glib_full(ffi::ostree_repo_new(path.to_glib_none().0)) + } + } + + pub fn new_default() -> Repo { + unsafe { + from_glib_full(ffi::ostree_repo_new_default()) + } + } + + pub fn new_for_sysroot_path, Q: IsA>(repo_path: &P, sysroot_path: &Q) -> Repo { + unsafe { + from_glib_full(ffi::ostree_repo_new_for_sysroot_path(repo_path.to_glib_none().0, sysroot_path.to_glib_none().0)) + } + } + + pub fn create_at<'a, P: Into>>(dfd: i32, path: &str, mode: RepoMode, options: &glib::Variant, cancellable: P) -> Result { + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut error = ptr::null_mut(); + let ret = ffi::ostree_repo_create_at(dfd, path.to_glib_none().0, mode.to_glib(), options.to_glib_none().0, cancellable.0, &mut error); + if error.is_null() { Ok(from_glib_full(ret)) } else { Err(from_glib_full(error)) } + } + } + + pub fn open_at<'a, P: Into>>(dfd: i32, path: &str, cancellable: P) -> Result { + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut error = ptr::null_mut(); + let ret = ffi::ostree_repo_open_at(dfd, path.to_glib_none().0, cancellable.0, &mut error); + if error.is_null() { Ok(from_glib_full(ret)) } else { Err(from_glib_full(error)) } + } + } + + //pub fn pull_default_console_progress_changed>>(progress: &AsyncProgress, user_data: P) { + // unsafe { TODO: call ffi::ostree_repo_pull_default_console_progress_changed() } + //} + + //#[cfg(any(feature = "v2018_5", feature = "dox"))] + //pub fn traverse_new_parents() -> /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 2, id: 181 }/TypeId { ns_id: 2, id: 181 } { + // unsafe { TODO: call ffi::ostree_repo_traverse_new_parents() } + //} + + //pub fn traverse_new_reachable() -> /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 2, id: 181 }/TypeId { ns_id: 2, id: 181 } { + // unsafe { TODO: call ffi::ostree_repo_traverse_new_reachable() } + //} + + //#[cfg(any(feature = "v2018_5", feature = "dox"))] + //pub fn traverse_parents_get_commits(parents: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 25 }/TypeId { ns_id: 0, id: 25 }, object: &glib::Variant) -> Vec { + // unsafe { TODO: call ffi::ostree_repo_traverse_parents_get_commits() } + //} +} + +pub trait RepoExt { + fn abort_transaction<'a, P: Into>>(&self, cancellable: P) -> Result<(), Error>; + + fn add_gpg_signature_summary<'a, 'b, P: Into>, Q: Into>>(&self, key_id: &[&str], homedir: P, cancellable: Q) -> Result<(), Error>; + + fn append_gpg_signature<'a, P: Into>>(&self, commit_checksum: &str, signature_bytes: &glib::Bytes, cancellable: P) -> Result<(), Error>; + + //fn checkout_at<'a, 'b, P: Into>, Q: Into>>(&self, options: P, destination_dfd: i32, destination_path: &str, commit: &str, cancellable: Q) -> Result<(), Error>; + + fn checkout_gc<'a, P: Into>>(&self, cancellable: P) -> Result<(), Error>; + + fn checkout_tree<'a, P: IsA, Q: Into>>(&self, mode: RepoCheckoutMode, overwrite_mode: RepoCheckoutOverwriteMode, destination: &P, source: &RepoFile, source_info: &gio::FileInfo, cancellable: Q) -> Result<(), Error>; + + //fn checkout_tree_at<'a, 'b, P: Into>, Q: Into>>(&self, options: P, destination_dfd: i32, destination_path: &str, commit: &str, cancellable: Q) -> Result<(), Error>; + + fn commit_transaction<'a, P: Into>>(&self, cancellable: P) -> Result; + + fn copy_config(&self) -> Option; + + fn create<'a, P: Into>>(&self, mode: RepoMode, cancellable: P) -> Result<(), Error>; + + fn delete_object<'a, P: Into>>(&self, objtype: ObjectType, sha256: &str, cancellable: P) -> Result<(), Error>; + + #[cfg(any(feature = "v2017_12", feature = "dox"))] + fn equal(&self, b: &Repo) -> bool; + + //fn export_tree_to_archive<'a, P: Into>, Q: Into>>(&self, opts: /*Ignored*/&mut RepoExportArchiveOptions, root: &RepoFile, archive: P, cancellable: Q) -> Result<(), Error>; + + #[cfg(any(feature = "v2017_15", feature = "dox"))] + fn fsck_object<'a, P: Into>>(&self, objtype: ObjectType, sha256: &str, cancellable: P) -> Result<(), Error>; + + #[cfg(any(feature = "v2018_6", feature = "dox"))] + fn get_collection_id(&self) -> Option; + + fn get_config(&self) -> Option; + + fn get_dfd(&self) -> i32; + + fn get_disable_fsync(&self) -> bool; + + fn get_mode(&self) -> RepoMode; + + fn get_parent(&self) -> Option; + + fn get_path(&self) -> Option; + + fn get_remote_boolean_option(&self, remote_name: &str, option_name: &str, default_value: bool) -> Result; + + fn get_remote_list_option(&self, remote_name: &str, option_name: &str) -> Result, Error>; + + fn get_remote_option<'a, P: Into>>(&self, remote_name: &str, option_name: &str, default_value: P) -> Result; + + fn gpg_verify_data<'a, 'b, 'c, 'd, P: Into>, Q: IsA + 'b, R: Into>, S: IsA + 'c, T: Into>, U: Into>>(&self, remote_name: P, data: &glib::Bytes, signatures: &glib::Bytes, keyringdir: R, extra_keyring: T, cancellable: U) -> Result; + + fn has_object<'a, P: Into>>(&self, objtype: ObjectType, checksum: &str, cancellable: P) -> Result; + + #[cfg(any(feature = "v2017_12", feature = "dox"))] + fn hash(&self) -> u32; + + //fn import_archive_to_mtree<'a, 'b, P: Into>, Q: Into>, R: Into>>(&self, opts: /*Ignored*/&mut RepoImportArchiveOptions, archive: P, mtree: &MutableTree, modifier: Q, cancellable: R) -> Result<(), Error>; + + fn import_object_from<'a, P: Into>>(&self, source: &Repo, objtype: ObjectType, checksum: &str, cancellable: P) -> Result<(), Error>; + + fn import_object_from_with_trust<'a, P: Into>>(&self, source: &Repo, objtype: ObjectType, checksum: &str, trusted: bool, cancellable: P) -> Result<(), Error>; + + fn is_system(&self) -> bool; + + fn is_writable(&self) -> Result<(), Error>; + + //#[cfg(any(feature = "v2018_6", feature = "dox"))] + //fn list_collection_refs<'a, 'b, P: Into>, Q: Into>>(&self, match_collection_id: P, out_all_refs: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 1, id: 0 }/TypeId { ns_id: 0, id: 28 }, flags: RepoListRefsExtFlags, cancellable: Q) -> Result<(), Error>; + + //fn list_commit_objects_starting_with<'a, P: Into>>(&self, start: &str, out_commits: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 2, id: 181 }/TypeId { ns_id: 2, id: 181 }, cancellable: P) -> Result<(), Error>; + + //fn list_objects<'a, P: Into>>(&self, flags: /*Ignored*/RepoListObjectsFlags, out_objects: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 2, id: 181 }/TypeId { ns_id: 2, id: 181 }, cancellable: P) -> Result<(), Error>; + + //fn list_refs<'a, 'b, P: Into>, Q: Into>>(&self, refspec_prefix: P, out_all_refs: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 28 }/TypeId { ns_id: 0, id: 28 }, cancellable: Q) -> Result<(), Error>; + + //fn list_refs_ext<'a, 'b, P: Into>, Q: Into>>(&self, refspec_prefix: P, out_all_refs: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 28 }/TypeId { ns_id: 0, id: 28 }, flags: RepoListRefsExtFlags, cancellable: Q) -> Result<(), Error>; + + //fn list_static_delta_names<'a, P: Into>>(&self, out_deltas: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 0, id: 28 }, cancellable: P) -> Result<(), Error>; + + #[cfg(any(feature = "v2015_7", feature = "dox"))] + fn load_commit(&self, checksum: &str) -> Result<(glib::Variant, RepoCommitState), Error>; + + fn load_file<'a, P: Into>>(&self, checksum: &str, cancellable: P) -> Result<(Option, Option, Option), Error>; + + fn load_object_stream<'a, P: Into>>(&self, objtype: ObjectType, checksum: &str, cancellable: P) -> Result<(gio::InputStream, u64), Error>; + + fn load_variant(&self, objtype: ObjectType, sha256: &str) -> Result; + + fn load_variant_if_exists(&self, objtype: ObjectType, sha256: &str) -> Result; + + #[cfg(any(feature = "v2017_15", feature = "dox"))] + fn mark_commit_partial(&self, checksum: &str, is_partial: bool) -> Result<(), Error>; + + fn open<'a, P: Into>>(&self, cancellable: P) -> Result<(), Error>; + + fn prepare_transaction<'a, P: Into>>(&self, cancellable: P) -> Result; + + fn prune<'a, P: Into>>(&self, flags: RepoPruneFlags, depth: i32, cancellable: P) -> Result<(i32, i32, u64), Error>; + + //fn prune_from_reachable<'a, P: Into>>(&self, options: /*Ignored*/&mut RepoPruneOptions, cancellable: P) -> Result<(i32, i32, u64), Error>; + + fn prune_static_deltas<'a, 'b, P: Into>, Q: Into>>(&self, commit: P, cancellable: Q) -> Result<(), Error>; + + fn pull<'a, 'b, P: Into>, Q: Into>>(&self, remote_name: &str, refs_to_fetch: &[&str], flags: RepoPullFlags, progress: P, cancellable: Q) -> Result<(), Error>; + + fn pull_one_dir<'a, 'b, P: Into>, Q: Into>>(&self, remote_name: &str, dir_to_pull: &str, refs_to_fetch: &[&str], flags: RepoPullFlags, progress: P, cancellable: Q) -> Result<(), Error>; + + fn pull_with_options<'a, 'b, P: Into>, Q: Into>>(&self, remote_name_or_baseurl: &str, options: &glib::Variant, progress: P, cancellable: Q) -> Result<(), Error>; + + fn query_object_storage_size<'a, P: Into>>(&self, objtype: ObjectType, sha256: &str, cancellable: P) -> Result; + + fn read_commit<'a, P: Into>>(&self, ref_: &str, cancellable: P) -> Result<(gio::File, String), Error>; + + fn read_commit_detached_metadata<'a, P: Into>>(&self, checksum: &str, cancellable: P) -> Result; + + fn regenerate_summary<'a, 'b, P: Into>, Q: Into>>(&self, additional_metadata: P, cancellable: Q) -> Result<(), Error>; + + fn reload_config<'a, P: Into>>(&self, cancellable: P) -> Result<(), Error>; + + fn remote_add<'a, 'b, P: Into>, Q: Into>>(&self, name: &str, url: &str, options: P, cancellable: Q) -> Result<(), Error>; + + fn remote_change<'a, 'b, 'c, P: IsA + 'a, Q: Into>, R: Into>, S: Into>>(&self, sysroot: Q, changeop: RepoRemoteChange, name: &str, url: &str, options: R, cancellable: S) -> Result<(), Error>; + + fn remote_delete<'a, P: Into>>(&self, name: &str, cancellable: P) -> Result<(), Error>; + + fn remote_fetch_summary<'a, P: Into>>(&self, name: &str, cancellable: P) -> Result<(glib::Bytes, glib::Bytes), Error>; + + fn remote_fetch_summary_with_options<'a, 'b, P: Into>, Q: Into>>(&self, name: &str, options: P, cancellable: Q) -> Result<(glib::Bytes, glib::Bytes), Error>; + + fn remote_get_gpg_verify(&self, name: &str) -> Result; + + fn remote_get_gpg_verify_summary(&self, name: &str) -> Result; + + fn remote_get_url(&self, name: &str) -> Result; + + fn remote_list(&self) -> Vec; + + //#[cfg(any(feature = "v2018_6", feature = "dox"))] + //fn remote_list_collection_refs<'a, P: Into>>(&self, remote_name: &str, out_all_refs: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 1, id: 0 }/TypeId { ns_id: 0, id: 28 }, cancellable: P) -> Result<(), Error>; + + //fn remote_list_refs<'a, P: Into>>(&self, remote_name: &str, out_all_refs: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 28 }/TypeId { ns_id: 0, id: 28 }, cancellable: P) -> Result<(), Error>; + + #[cfg(any(feature = "v2018_6", feature = "dox"))] + fn resolve_collection_ref<'a, P: Into>>(&self, ref_: &CollectionRef, allow_noent: bool, flags: RepoResolveRevExtFlags, cancellable: P) -> Result, Error>; + + #[cfg(any(feature = "v2018_6", feature = "dox"))] + fn resolve_keyring_for_collection<'a, P: Into>>(&self, collection_id: &str, cancellable: P) -> Result; + + fn resolve_rev(&self, refspec: &str, allow_noent: bool) -> Result; + + fn resolve_rev_ext(&self, refspec: &str, allow_noent: bool, flags: RepoResolveRevExtFlags) -> Result; + + fn scan_hardlinks<'a, P: Into>>(&self, cancellable: P) -> Result<(), Error>; + + fn set_alias_ref_immediate<'a, 'b, 'c, P: Into>, Q: Into>, R: Into>>(&self, remote: P, ref_: &str, target: Q, cancellable: R) -> Result<(), Error>; + + fn set_cache_dir<'a, P: Into>>(&self, dfd: i32, path: &str, cancellable: P) -> Result<(), Error>; + + #[cfg(any(feature = "v2018_6", feature = "dox"))] + fn set_collection_id<'a, P: Into>>(&self, collection_id: P) -> Result<(), Error>; + + #[cfg(any(feature = "v2018_6", feature = "dox"))] + fn set_collection_ref_immediate<'a, 'b, P: Into>, Q: Into>>(&self, ref_: &CollectionRef, checksum: P, cancellable: Q) -> Result<(), Error>; + + fn set_disable_fsync(&self, disable_fsync: bool); + + fn set_ref_immediate<'a, 'b, 'c, P: Into>, Q: Into>, R: Into>>(&self, remote: P, ref_: &str, checksum: Q, cancellable: R) -> Result<(), Error>; + + fn sign_commit<'a, 'b, P: Into>, Q: Into>>(&self, commit_checksum: &str, key_id: &str, homedir: P, cancellable: Q) -> Result<(), Error>; + + fn sign_delta<'a, P: Into>>(&self, from_commit: &str, to_commit: &str, key_id: &str, homedir: &str, cancellable: P) -> Result<(), Error>; + + fn static_delta_execute_offline<'a, P: IsA, Q: Into>>(&self, dir_or_file: &P, skip_validation: bool, cancellable: Q) -> Result<(), Error>; + + fn static_delta_generate<'a, 'b, 'c, P: Into>, Q: Into>, R: Into>>(&self, opt: StaticDeltaGenerateOpt, from: &str, to: &str, metadata: P, params: Q, cancellable: R) -> Result<(), Error>; + + #[cfg(any(feature = "v2018_6", feature = "dox"))] + fn transaction_set_collection_ref<'a, P: Into>>(&self, ref_: &CollectionRef, checksum: P); + + fn transaction_set_ref<'a, 'b, P: Into>, Q: Into>>(&self, remote: P, ref_: &str, checksum: Q); + + fn transaction_set_refspec<'a, P: Into>>(&self, refspec: &str, checksum: P); + + //fn traverse_commit<'a, P: Into>>(&self, commit_checksum: &str, maxdepth: i32, out_reachable: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 2, id: 181 }/TypeId { ns_id: 2, id: 181 }, cancellable: P) -> Result<(), Error>; + + //fn traverse_commit_union<'a, P: Into>>(&self, commit_checksum: &str, maxdepth: i32, inout_reachable: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 25 }/TypeId { ns_id: 0, id: 25 }, cancellable: P) -> Result<(), Error>; + + //#[cfg(any(feature = "v2018_5", feature = "dox"))] + //fn traverse_commit_union_with_parents<'a, P: Into>>(&self, commit_checksum: &str, maxdepth: i32, inout_reachable: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 25 }/TypeId { ns_id: 0, id: 25 }, inout_parents: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 25 }/TypeId { ns_id: 0, id: 25 }, cancellable: P) -> Result<(), Error>; + + //#[cfg(any(feature = "v2018_6", feature = "dox"))] + //fn traverse_reachable_refs<'a, P: Into>>(&self, depth: u32, reachable: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 2, id: 181 }/TypeId { ns_id: 2, id: 181 }, cancellable: P) -> Result<(), Error>; + + fn verify_commit<'a, 'b, 'c, P: IsA + 'a, Q: Into>, R: IsA + 'b, S: Into>, T: Into>>(&self, commit_checksum: &str, keyringdir: Q, extra_keyring: S, cancellable: T) -> Result<(), Error>; + + fn verify_commit_ext<'a, 'b, 'c, P: IsA + 'a, Q: Into>, R: IsA + 'b, S: Into>, T: Into>>(&self, commit_checksum: &str, keyringdir: Q, extra_keyring: S, cancellable: T) -> Result; + + fn verify_commit_for_remote<'a, P: Into>>(&self, commit_checksum: &str, remote_name: &str, cancellable: P) -> Result; + + fn verify_summary<'a, P: Into>>(&self, remote_name: &str, summary: &glib::Bytes, signatures: &glib::Bytes, cancellable: P) -> Result; + + fn write_archive_to_mtree<'a, 'b, P: IsA, Q: Into>, R: Into>>(&self, archive: &P, mtree: &MutableTree, modifier: Q, autocreate_parents: bool, cancellable: R) -> Result<(), Error>; + + fn write_commit<'a, 'b, 'c, 'd, 'e, P: Into>, Q: Into>, R: Into>, S: Into>, T: Into>>(&self, parent: P, subject: Q, body: R, metadata: S, root: &RepoFile, cancellable: T) -> Result; + + fn write_commit_detached_metadata<'a, 'b, P: Into>, Q: Into>>(&self, checksum: &str, metadata: P, cancellable: Q) -> Result<(), Error>; + + fn write_commit_with_time<'a, 'b, 'c, 'd, 'e, P: Into>, Q: Into>, R: Into>, S: Into>, T: Into>>(&self, parent: P, subject: Q, body: R, metadata: S, root: &RepoFile, time: u64, cancellable: T) -> Result; + + fn write_config(&self, new_config: &glib::KeyFile) -> Result<(), Error>; + + //fn write_content<'a, 'b, P: Into>, Q: IsA, R: Into>>(&self, expected_checksum: P, object_input: &Q, length: u64, out_csum: /*Unknown conversion*//*Unimplemented*/FixedArray TypeId { ns_id: 0, id: 3 }; 32, cancellable: R) -> Result<(), Error>; + + fn write_content_trusted<'a, P: IsA, Q: Into>>(&self, checksum: &str, object_input: &P, length: u64, cancellable: Q) -> Result<(), Error>; + + fn write_dfd_to_mtree<'a, 'b, P: Into>, Q: Into>>(&self, dfd: i32, path: &str, mtree: &MutableTree, modifier: P, cancellable: Q) -> Result<(), Error>; + + fn write_directory_to_mtree<'a, 'b, P: IsA, Q: Into>, R: Into>>(&self, dir: &P, mtree: &MutableTree, modifier: Q, cancellable: R) -> Result<(), Error>; + + //fn write_metadata<'a, 'b, P: Into>, Q: Into>>(&self, objtype: ObjectType, expected_checksum: P, object: &glib::Variant, out_csum: /*Unknown conversion*//*Unimplemented*/FixedArray TypeId { ns_id: 0, id: 3 }; 32, cancellable: Q) -> Result<(), Error>; + + fn write_metadata_stream_trusted<'a, P: IsA, Q: Into>>(&self, objtype: ObjectType, checksum: &str, object_input: &P, length: u64, cancellable: Q) -> Result<(), Error>; + + fn write_metadata_trusted<'a, P: Into>>(&self, objtype: ObjectType, checksum: &str, variant: &glib::Variant, cancellable: P) -> Result<(), Error>; + + fn write_mtree<'a, P: Into>>(&self, mtree: &MutableTree, cancellable: P) -> Result; + + fn get_property_remotes_config_dir(&self) -> Option; + + fn get_property_sysroot_path(&self) -> Option; + + fn connect_gpg_verify_result(&self, f: F) -> SignalHandlerId; +} + +impl + IsA> RepoExt for O { + fn abort_transaction<'a, P: Into>>(&self, cancellable: P) -> Result<(), Error> { + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_abort_transaction(self.to_glib_none().0, cancellable.0, &mut error); + if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } + } + } + + fn add_gpg_signature_summary<'a, 'b, P: Into>, Q: Into>>(&self, key_id: &[&str], homedir: P, cancellable: Q) -> Result<(), Error> { + let homedir = homedir.into(); + let homedir = homedir.to_glib_none(); + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_add_gpg_signature_summary(self.to_glib_none().0, key_id.to_glib_none().0, homedir.0, cancellable.0, &mut error); + if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } + } + } + + fn append_gpg_signature<'a, P: Into>>(&self, commit_checksum: &str, signature_bytes: &glib::Bytes, cancellable: P) -> Result<(), Error> { + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_append_gpg_signature(self.to_glib_none().0, commit_checksum.to_glib_none().0, signature_bytes.to_glib_none().0, cancellable.0, &mut error); + if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } + } + } + + //fn checkout_at<'a, 'b, P: Into>, Q: Into>>(&self, options: P, destination_dfd: i32, destination_path: &str, commit: &str, cancellable: Q) -> Result<(), Error> { + // unsafe { TODO: call ffi::ostree_repo_checkout_at() } + //} + + fn checkout_gc<'a, P: Into>>(&self, cancellable: P) -> Result<(), Error> { + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_checkout_gc(self.to_glib_none().0, cancellable.0, &mut error); + if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } + } + } + + fn checkout_tree<'a, P: IsA, Q: Into>>(&self, mode: RepoCheckoutMode, overwrite_mode: RepoCheckoutOverwriteMode, destination: &P, source: &RepoFile, source_info: &gio::FileInfo, cancellable: Q) -> Result<(), Error> { + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_checkout_tree(self.to_glib_none().0, mode.to_glib(), overwrite_mode.to_glib(), destination.to_glib_none().0, source.to_glib_none().0, source_info.to_glib_none().0, cancellable.0, &mut error); + if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } + } + } + + //fn checkout_tree_at<'a, 'b, P: Into>, Q: Into>>(&self, options: P, destination_dfd: i32, destination_path: &str, commit: &str, cancellable: Q) -> Result<(), Error> { + // unsafe { TODO: call ffi::ostree_repo_checkout_tree_at() } + //} + + fn commit_transaction<'a, P: Into>>(&self, cancellable: P) -> Result { + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut out_stats = RepoTransactionStats::uninitialized(); + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_commit_transaction(self.to_glib_none().0, out_stats.to_glib_none_mut().0, cancellable.0, &mut error); + if error.is_null() { Ok(out_stats) } else { Err(from_glib_full(error)) } + } + } + + fn copy_config(&self) -> Option { + unsafe { + from_glib_full(ffi::ostree_repo_copy_config(self.to_glib_none().0)) + } + } + + fn create<'a, P: Into>>(&self, mode: RepoMode, cancellable: P) -> Result<(), Error> { + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_create(self.to_glib_none().0, mode.to_glib(), cancellable.0, &mut error); + if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } + } + } + + fn delete_object<'a, P: Into>>(&self, objtype: ObjectType, sha256: &str, cancellable: P) -> Result<(), Error> { + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_delete_object(self.to_glib_none().0, objtype.to_glib(), sha256.to_glib_none().0, cancellable.0, &mut error); + if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } + } + } + + #[cfg(any(feature = "v2017_12", feature = "dox"))] + fn equal(&self, b: &Repo) -> bool { + unsafe { + from_glib(ffi::ostree_repo_equal(self.to_glib_none().0, b.to_glib_none().0)) + } + } + + //fn export_tree_to_archive<'a, P: Into>, Q: Into>>(&self, opts: /*Ignored*/&mut RepoExportArchiveOptions, root: &RepoFile, archive: P, cancellable: Q) -> Result<(), Error> { + // unsafe { TODO: call ffi::ostree_repo_export_tree_to_archive() } + //} + + #[cfg(any(feature = "v2017_15", feature = "dox"))] + fn fsck_object<'a, P: Into>>(&self, objtype: ObjectType, sha256: &str, cancellable: P) -> Result<(), Error> { + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_fsck_object(self.to_glib_none().0, objtype.to_glib(), sha256.to_glib_none().0, cancellable.0, &mut error); + if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } + } + } + + #[cfg(any(feature = "v2018_6", feature = "dox"))] + fn get_collection_id(&self) -> Option { + unsafe { + from_glib_none(ffi::ostree_repo_get_collection_id(self.to_glib_none().0)) + } + } + + fn get_config(&self) -> Option { + unsafe { + from_glib_none(ffi::ostree_repo_get_config(self.to_glib_none().0)) + } + } + + fn get_dfd(&self) -> i32 { + unsafe { + ffi::ostree_repo_get_dfd(self.to_glib_none().0) + } + } + + fn get_disable_fsync(&self) -> bool { + unsafe { + from_glib(ffi::ostree_repo_get_disable_fsync(self.to_glib_none().0)) + } + } + + fn get_mode(&self) -> RepoMode { + unsafe { + from_glib(ffi::ostree_repo_get_mode(self.to_glib_none().0)) + } + } + + fn get_parent(&self) -> Option { + unsafe { + from_glib_none(ffi::ostree_repo_get_parent(self.to_glib_none().0)) + } + } + + fn get_path(&self) -> Option { + unsafe { + from_glib_none(ffi::ostree_repo_get_path(self.to_glib_none().0)) + } + } + + fn get_remote_boolean_option(&self, remote_name: &str, option_name: &str, default_value: bool) -> Result { + unsafe { + let mut out_value = mem::uninitialized(); + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_get_remote_boolean_option(self.to_glib_none().0, remote_name.to_glib_none().0, option_name.to_glib_none().0, default_value.to_glib(), &mut out_value, &mut error); + if error.is_null() { Ok(from_glib(out_value)) } else { Err(from_glib_full(error)) } + } + } + + fn get_remote_list_option(&self, remote_name: &str, option_name: &str) -> Result, Error> { + unsafe { + let mut out_value = ptr::null_mut(); + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_get_remote_list_option(self.to_glib_none().0, remote_name.to_glib_none().0, option_name.to_glib_none().0, &mut out_value, &mut error); + if error.is_null() { Ok(FromGlibPtrContainer::from_glib_full(out_value)) } else { Err(from_glib_full(error)) } + } + } + + fn get_remote_option<'a, P: Into>>(&self, remote_name: &str, option_name: &str, default_value: P) -> Result { + let default_value = default_value.into(); + let default_value = default_value.to_glib_none(); + unsafe { + let mut out_value = ptr::null_mut(); + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_get_remote_option(self.to_glib_none().0, remote_name.to_glib_none().0, option_name.to_glib_none().0, default_value.0, &mut out_value, &mut error); + if error.is_null() { Ok(from_glib_full(out_value)) } else { Err(from_glib_full(error)) } + } + } + + fn gpg_verify_data<'a, 'b, 'c, 'd, P: Into>, Q: IsA + 'b, R: Into>, S: IsA + 'c, T: Into>, U: Into>>(&self, remote_name: P, data: &glib::Bytes, signatures: &glib::Bytes, keyringdir: R, extra_keyring: T, cancellable: U) -> Result { + let remote_name = remote_name.into(); + let remote_name = remote_name.to_glib_none(); + let keyringdir = keyringdir.into(); + let keyringdir = keyringdir.to_glib_none(); + let extra_keyring = extra_keyring.into(); + let extra_keyring = extra_keyring.to_glib_none(); + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut error = ptr::null_mut(); + let ret = ffi::ostree_repo_gpg_verify_data(self.to_glib_none().0, remote_name.0, data.to_glib_none().0, signatures.to_glib_none().0, keyringdir.0, extra_keyring.0, cancellable.0, &mut error); + if error.is_null() { Ok(from_glib_full(ret)) } else { Err(from_glib_full(error)) } + } + } + + fn has_object<'a, P: Into>>(&self, objtype: ObjectType, checksum: &str, cancellable: P) -> Result { + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut out_have_object = mem::uninitialized(); + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_has_object(self.to_glib_none().0, objtype.to_glib(), checksum.to_glib_none().0, &mut out_have_object, cancellable.0, &mut error); + if error.is_null() { Ok(from_glib(out_have_object)) } else { Err(from_glib_full(error)) } + } + } + + #[cfg(any(feature = "v2017_12", feature = "dox"))] + fn hash(&self) -> u32 { + unsafe { + ffi::ostree_repo_hash(self.to_glib_none().0) + } + } + + //fn import_archive_to_mtree<'a, 'b, P: Into>, Q: Into>, R: Into>>(&self, opts: /*Ignored*/&mut RepoImportArchiveOptions, archive: P, mtree: &MutableTree, modifier: Q, cancellable: R) -> Result<(), Error> { + // unsafe { TODO: call ffi::ostree_repo_import_archive_to_mtree() } + //} + + fn import_object_from<'a, P: Into>>(&self, source: &Repo, objtype: ObjectType, checksum: &str, cancellable: P) -> Result<(), Error> { + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_import_object_from(self.to_glib_none().0, source.to_glib_none().0, objtype.to_glib(), checksum.to_glib_none().0, cancellable.0, &mut error); + if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } + } + } + + fn import_object_from_with_trust<'a, P: Into>>(&self, source: &Repo, objtype: ObjectType, checksum: &str, trusted: bool, cancellable: P) -> Result<(), Error> { + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_import_object_from_with_trust(self.to_glib_none().0, source.to_glib_none().0, objtype.to_glib(), checksum.to_glib_none().0, trusted.to_glib(), cancellable.0, &mut error); + if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } + } + } + + fn is_system(&self) -> bool { + unsafe { + from_glib(ffi::ostree_repo_is_system(self.to_glib_none().0)) + } + } + + fn is_writable(&self) -> Result<(), Error> { + unsafe { + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_is_writable(self.to_glib_none().0, &mut error); + if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } + } + } + + //#[cfg(any(feature = "v2018_6", feature = "dox"))] + //fn list_collection_refs<'a, 'b, P: Into>, Q: Into>>(&self, match_collection_id: P, out_all_refs: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 1, id: 0 }/TypeId { ns_id: 0, id: 28 }, flags: RepoListRefsExtFlags, cancellable: Q) -> Result<(), Error> { + // unsafe { TODO: call ffi::ostree_repo_list_collection_refs() } + //} + + //fn list_commit_objects_starting_with<'a, P: Into>>(&self, start: &str, out_commits: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 2, id: 181 }/TypeId { ns_id: 2, id: 181 }, cancellable: P) -> Result<(), Error> { + // unsafe { TODO: call ffi::ostree_repo_list_commit_objects_starting_with() } + //} + + //fn list_objects<'a, P: Into>>(&self, flags: /*Ignored*/RepoListObjectsFlags, out_objects: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 2, id: 181 }/TypeId { ns_id: 2, id: 181 }, cancellable: P) -> Result<(), Error> { + // unsafe { TODO: call ffi::ostree_repo_list_objects() } + //} + + //fn list_refs<'a, 'b, P: Into>, Q: Into>>(&self, refspec_prefix: P, out_all_refs: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 28 }/TypeId { ns_id: 0, id: 28 }, cancellable: Q) -> Result<(), Error> { + // unsafe { TODO: call ffi::ostree_repo_list_refs() } + //} + + //fn list_refs_ext<'a, 'b, P: Into>, Q: Into>>(&self, refspec_prefix: P, out_all_refs: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 28 }/TypeId { ns_id: 0, id: 28 }, flags: RepoListRefsExtFlags, cancellable: Q) -> Result<(), Error> { + // unsafe { TODO: call ffi::ostree_repo_list_refs_ext() } + //} + + //fn list_static_delta_names<'a, P: Into>>(&self, out_deltas: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 0, id: 28 }, cancellable: P) -> Result<(), Error> { + // unsafe { TODO: call ffi::ostree_repo_list_static_delta_names() } + //} + + #[cfg(any(feature = "v2015_7", feature = "dox"))] + fn load_commit(&self, checksum: &str) -> Result<(glib::Variant, RepoCommitState), Error> { + unsafe { + let mut out_commit = ptr::null_mut(); + let mut out_state = mem::uninitialized(); + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_load_commit(self.to_glib_none().0, checksum.to_glib_none().0, &mut out_commit, &mut out_state, &mut error); + if error.is_null() { Ok((from_glib_full(out_commit), from_glib(out_state))) } else { Err(from_glib_full(error)) } + } + } + + fn load_file<'a, P: Into>>(&self, checksum: &str, cancellable: P) -> Result<(Option, Option, Option), Error> { + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut out_input = ptr::null_mut(); + let mut out_file_info = ptr::null_mut(); + let mut out_xattrs = ptr::null_mut(); + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_load_file(self.to_glib_none().0, checksum.to_glib_none().0, &mut out_input, &mut out_file_info, &mut out_xattrs, cancellable.0, &mut error); + if error.is_null() { Ok((from_glib_full(out_input), from_glib_full(out_file_info), from_glib_full(out_xattrs))) } else { Err(from_glib_full(error)) } + } + } + + fn load_object_stream<'a, P: Into>>(&self, objtype: ObjectType, checksum: &str, cancellable: P) -> Result<(gio::InputStream, u64), Error> { + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut out_input = ptr::null_mut(); + let mut out_size = mem::uninitialized(); + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_load_object_stream(self.to_glib_none().0, objtype.to_glib(), checksum.to_glib_none().0, &mut out_input, &mut out_size, cancellable.0, &mut error); + if error.is_null() { Ok((from_glib_full(out_input), out_size)) } else { Err(from_glib_full(error)) } + } + } + + fn load_variant(&self, objtype: ObjectType, sha256: &str) -> Result { + unsafe { + let mut out_variant = ptr::null_mut(); + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_load_variant(self.to_glib_none().0, objtype.to_glib(), sha256.to_glib_none().0, &mut out_variant, &mut error); + if error.is_null() { Ok(from_glib_full(out_variant)) } else { Err(from_glib_full(error)) } + } + } + + fn load_variant_if_exists(&self, objtype: ObjectType, sha256: &str) -> Result { + unsafe { + let mut out_variant = ptr::null_mut(); + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_load_variant_if_exists(self.to_glib_none().0, objtype.to_glib(), sha256.to_glib_none().0, &mut out_variant, &mut error); + if error.is_null() { Ok(from_glib_full(out_variant)) } else { Err(from_glib_full(error)) } + } + } + + #[cfg(any(feature = "v2017_15", feature = "dox"))] + fn mark_commit_partial(&self, checksum: &str, is_partial: bool) -> Result<(), Error> { + unsafe { + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_mark_commit_partial(self.to_glib_none().0, checksum.to_glib_none().0, is_partial.to_glib(), &mut error); + if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } + } + } + + fn open<'a, P: Into>>(&self, cancellable: P) -> Result<(), Error> { + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_open(self.to_glib_none().0, cancellable.0, &mut error); + if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } + } + } + + fn prepare_transaction<'a, P: Into>>(&self, cancellable: P) -> Result { + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut out_transaction_resume = mem::uninitialized(); + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_prepare_transaction(self.to_glib_none().0, &mut out_transaction_resume, cancellable.0, &mut error); + if error.is_null() { Ok(from_glib(out_transaction_resume)) } else { Err(from_glib_full(error)) } + } + } + + fn prune<'a, P: Into>>(&self, flags: RepoPruneFlags, depth: i32, cancellable: P) -> Result<(i32, i32, u64), Error> { + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut out_objects_total = mem::uninitialized(); + let mut out_objects_pruned = mem::uninitialized(); + let mut out_pruned_object_size_total = mem::uninitialized(); + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_prune(self.to_glib_none().0, flags.to_glib(), depth, &mut out_objects_total, &mut out_objects_pruned, &mut out_pruned_object_size_total, cancellable.0, &mut error); + if error.is_null() { Ok((out_objects_total, out_objects_pruned, out_pruned_object_size_total)) } else { Err(from_glib_full(error)) } + } + } + + //fn prune_from_reachable<'a, P: Into>>(&self, options: /*Ignored*/&mut RepoPruneOptions, cancellable: P) -> Result<(i32, i32, u64), Error> { + // unsafe { TODO: call ffi::ostree_repo_prune_from_reachable() } + //} + + fn prune_static_deltas<'a, 'b, P: Into>, Q: Into>>(&self, commit: P, cancellable: Q) -> Result<(), Error> { + let commit = commit.into(); + let commit = commit.to_glib_none(); + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_prune_static_deltas(self.to_glib_none().0, commit.0, cancellable.0, &mut error); + if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } + } + } + + fn pull<'a, 'b, P: Into>, Q: Into>>(&self, remote_name: &str, refs_to_fetch: &[&str], flags: RepoPullFlags, progress: P, cancellable: Q) -> Result<(), Error> { + let progress = progress.into(); + let progress = progress.to_glib_none(); + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_pull(self.to_glib_none().0, remote_name.to_glib_none().0, refs_to_fetch.to_glib_none().0, flags.to_glib(), progress.0, cancellable.0, &mut error); + if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } + } + } + + fn pull_one_dir<'a, 'b, P: Into>, Q: Into>>(&self, remote_name: &str, dir_to_pull: &str, refs_to_fetch: &[&str], flags: RepoPullFlags, progress: P, cancellable: Q) -> Result<(), Error> { + let progress = progress.into(); + let progress = progress.to_glib_none(); + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_pull_one_dir(self.to_glib_none().0, remote_name.to_glib_none().0, dir_to_pull.to_glib_none().0, refs_to_fetch.to_glib_none().0, flags.to_glib(), progress.0, cancellable.0, &mut error); + if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } + } + } + + fn pull_with_options<'a, 'b, P: Into>, Q: Into>>(&self, remote_name_or_baseurl: &str, options: &glib::Variant, progress: P, cancellable: Q) -> Result<(), Error> { + let progress = progress.into(); + let progress = progress.to_glib_none(); + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_pull_with_options(self.to_glib_none().0, remote_name_or_baseurl.to_glib_none().0, options.to_glib_none().0, progress.0, cancellable.0, &mut error); + if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } + } + } + + fn query_object_storage_size<'a, P: Into>>(&self, objtype: ObjectType, sha256: &str, cancellable: P) -> Result { + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut out_size = mem::uninitialized(); + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_query_object_storage_size(self.to_glib_none().0, objtype.to_glib(), sha256.to_glib_none().0, &mut out_size, cancellable.0, &mut error); + if error.is_null() { Ok(out_size) } else { Err(from_glib_full(error)) } + } + } + + fn read_commit<'a, P: Into>>(&self, ref_: &str, cancellable: P) -> Result<(gio::File, String), Error> { + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut out_root = ptr::null_mut(); + let mut out_commit = ptr::null_mut(); + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_read_commit(self.to_glib_none().0, ref_.to_glib_none().0, &mut out_root, &mut out_commit, cancellable.0, &mut error); + if error.is_null() { Ok((from_glib_full(out_root), from_glib_full(out_commit))) } else { Err(from_glib_full(error)) } + } + } + + fn read_commit_detached_metadata<'a, P: Into>>(&self, checksum: &str, cancellable: P) -> Result { + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut out_metadata = ptr::null_mut(); + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_read_commit_detached_metadata(self.to_glib_none().0, checksum.to_glib_none().0, &mut out_metadata, cancellable.0, &mut error); + if error.is_null() { Ok(from_glib_full(out_metadata)) } else { Err(from_glib_full(error)) } + } + } + + fn regenerate_summary<'a, 'b, P: Into>, Q: Into>>(&self, additional_metadata: P, cancellable: Q) -> Result<(), Error> { + let additional_metadata = additional_metadata.into(); + let additional_metadata = additional_metadata.to_glib_none(); + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_regenerate_summary(self.to_glib_none().0, additional_metadata.0, cancellable.0, &mut error); + if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } + } + } + + fn reload_config<'a, P: Into>>(&self, cancellable: P) -> Result<(), Error> { + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_reload_config(self.to_glib_none().0, cancellable.0, &mut error); + if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } + } + } + + fn remote_add<'a, 'b, P: Into>, Q: Into>>(&self, name: &str, url: &str, options: P, cancellable: Q) -> Result<(), Error> { + let options = options.into(); + let options = options.to_glib_none(); + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_remote_add(self.to_glib_none().0, name.to_glib_none().0, url.to_glib_none().0, options.0, cancellable.0, &mut error); + if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } + } + } + + fn remote_change<'a, 'b, 'c, P: IsA + 'a, Q: Into>, R: Into>, S: Into>>(&self, sysroot: Q, changeop: RepoRemoteChange, name: &str, url: &str, options: R, cancellable: S) -> Result<(), Error> { + let sysroot = sysroot.into(); + let sysroot = sysroot.to_glib_none(); + let options = options.into(); + let options = options.to_glib_none(); + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_remote_change(self.to_glib_none().0, sysroot.0, changeop.to_glib(), name.to_glib_none().0, url.to_glib_none().0, options.0, cancellable.0, &mut error); + if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } + } + } + + fn remote_delete<'a, P: Into>>(&self, name: &str, cancellable: P) -> Result<(), Error> { + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_remote_delete(self.to_glib_none().0, name.to_glib_none().0, cancellable.0, &mut error); + if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } + } + } + + fn remote_fetch_summary<'a, P: Into>>(&self, name: &str, cancellable: P) -> Result<(glib::Bytes, glib::Bytes), Error> { + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut out_summary = ptr::null_mut(); + let mut out_signatures = ptr::null_mut(); + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_remote_fetch_summary(self.to_glib_none().0, name.to_glib_none().0, &mut out_summary, &mut out_signatures, cancellable.0, &mut error); + if error.is_null() { Ok((from_glib_full(out_summary), from_glib_full(out_signatures))) } else { Err(from_glib_full(error)) } + } + } + + fn remote_fetch_summary_with_options<'a, 'b, P: Into>, Q: Into>>(&self, name: &str, options: P, cancellable: Q) -> Result<(glib::Bytes, glib::Bytes), Error> { + let options = options.into(); + let options = options.to_glib_none(); + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut out_summary = ptr::null_mut(); + let mut out_signatures = ptr::null_mut(); + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_remote_fetch_summary_with_options(self.to_glib_none().0, name.to_glib_none().0, options.0, &mut out_summary, &mut out_signatures, cancellable.0, &mut error); + if error.is_null() { Ok((from_glib_full(out_summary), from_glib_full(out_signatures))) } else { Err(from_glib_full(error)) } + } + } + + fn remote_get_gpg_verify(&self, name: &str) -> Result { + unsafe { + let mut out_gpg_verify = mem::uninitialized(); + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_remote_get_gpg_verify(self.to_glib_none().0, name.to_glib_none().0, &mut out_gpg_verify, &mut error); + if error.is_null() { Ok(from_glib(out_gpg_verify)) } else { Err(from_glib_full(error)) } + } + } + + fn remote_get_gpg_verify_summary(&self, name: &str) -> Result { + unsafe { + let mut out_gpg_verify_summary = mem::uninitialized(); + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_remote_get_gpg_verify_summary(self.to_glib_none().0, name.to_glib_none().0, &mut out_gpg_verify_summary, &mut error); + if error.is_null() { Ok(from_glib(out_gpg_verify_summary)) } else { Err(from_glib_full(error)) } + } + } + + fn remote_get_url(&self, name: &str) -> Result { + unsafe { + let mut out_url = ptr::null_mut(); + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_remote_get_url(self.to_glib_none().0, name.to_glib_none().0, &mut out_url, &mut error); + if error.is_null() { Ok(from_glib_full(out_url)) } else { Err(from_glib_full(error)) } + } + } + + fn remote_list(&self) -> Vec { + unsafe { + let mut out_n_remotes = mem::uninitialized(); + let ret = FromGlibContainer::from_glib_full_num(ffi::ostree_repo_remote_list(self.to_glib_none().0, &mut out_n_remotes), out_n_remotes as usize); + ret + } + } + + //#[cfg(any(feature = "v2018_6", feature = "dox"))] + //fn remote_list_collection_refs<'a, P: Into>>(&self, remote_name: &str, out_all_refs: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 1, id: 0 }/TypeId { ns_id: 0, id: 28 }, cancellable: P) -> Result<(), Error> { + // unsafe { TODO: call ffi::ostree_repo_remote_list_collection_refs() } + //} + + //fn remote_list_refs<'a, P: Into>>(&self, remote_name: &str, out_all_refs: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 28 }/TypeId { ns_id: 0, id: 28 }, cancellable: P) -> Result<(), Error> { + // unsafe { TODO: call ffi::ostree_repo_remote_list_refs() } + //} + + #[cfg(any(feature = "v2018_6", feature = "dox"))] + fn resolve_collection_ref<'a, P: Into>>(&self, ref_: &CollectionRef, allow_noent: bool, flags: RepoResolveRevExtFlags, cancellable: P) -> Result, Error> { + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut out_rev = ptr::null_mut(); + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_resolve_collection_ref(self.to_glib_none().0, ref_.to_glib_none().0, allow_noent.to_glib(), flags.to_glib(), &mut out_rev, cancellable.0, &mut error); + if error.is_null() { Ok(from_glib_full(out_rev)) } else { Err(from_glib_full(error)) } + } + } + + #[cfg(any(feature = "v2018_6", feature = "dox"))] + fn resolve_keyring_for_collection<'a, P: Into>>(&self, collection_id: &str, cancellable: P) -> Result { + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut error = ptr::null_mut(); + let ret = ffi::ostree_repo_resolve_keyring_for_collection(self.to_glib_none().0, collection_id.to_glib_none().0, cancellable.0, &mut error); + if error.is_null() { Ok(from_glib_full(ret)) } else { Err(from_glib_full(error)) } + } + } + + fn resolve_rev(&self, refspec: &str, allow_noent: bool) -> Result { + unsafe { + let mut out_rev = ptr::null_mut(); + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_resolve_rev(self.to_glib_none().0, refspec.to_glib_none().0, allow_noent.to_glib(), &mut out_rev, &mut error); + if error.is_null() { Ok(from_glib_full(out_rev)) } else { Err(from_glib_full(error)) } + } + } + + fn resolve_rev_ext(&self, refspec: &str, allow_noent: bool, flags: RepoResolveRevExtFlags) -> Result { + unsafe { + let mut out_rev = ptr::null_mut(); + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_resolve_rev_ext(self.to_glib_none().0, refspec.to_glib_none().0, allow_noent.to_glib(), flags.to_glib(), &mut out_rev, &mut error); + if error.is_null() { Ok(from_glib_full(out_rev)) } else { Err(from_glib_full(error)) } + } + } + + fn scan_hardlinks<'a, P: Into>>(&self, cancellable: P) -> Result<(), Error> { + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_scan_hardlinks(self.to_glib_none().0, cancellable.0, &mut error); + if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } + } + } + + fn set_alias_ref_immediate<'a, 'b, 'c, P: Into>, Q: Into>, R: Into>>(&self, remote: P, ref_: &str, target: Q, cancellable: R) -> Result<(), Error> { + let remote = remote.into(); + let remote = remote.to_glib_none(); + let target = target.into(); + let target = target.to_glib_none(); + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_set_alias_ref_immediate(self.to_glib_none().0, remote.0, ref_.to_glib_none().0, target.0, cancellable.0, &mut error); + if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } + } + } + + fn set_cache_dir<'a, P: Into>>(&self, dfd: i32, path: &str, cancellable: P) -> Result<(), Error> { + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_set_cache_dir(self.to_glib_none().0, dfd, path.to_glib_none().0, cancellable.0, &mut error); + if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } + } + } + + #[cfg(any(feature = "v2018_6", feature = "dox"))] + fn set_collection_id<'a, P: Into>>(&self, collection_id: P) -> Result<(), Error> { + let collection_id = collection_id.into(); + let collection_id = collection_id.to_glib_none(); + unsafe { + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_set_collection_id(self.to_glib_none().0, collection_id.0, &mut error); + if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } + } + } + + #[cfg(any(feature = "v2018_6", feature = "dox"))] + fn set_collection_ref_immediate<'a, 'b, P: Into>, Q: Into>>(&self, ref_: &CollectionRef, checksum: P, cancellable: Q) -> Result<(), Error> { + let checksum = checksum.into(); + let checksum = checksum.to_glib_none(); + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_set_collection_ref_immediate(self.to_glib_none().0, ref_.to_glib_none().0, checksum.0, cancellable.0, &mut error); + if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } + } + } + + fn set_disable_fsync(&self, disable_fsync: bool) { + unsafe { + ffi::ostree_repo_set_disable_fsync(self.to_glib_none().0, disable_fsync.to_glib()); + } + } + + fn set_ref_immediate<'a, 'b, 'c, P: Into>, Q: Into>, R: Into>>(&self, remote: P, ref_: &str, checksum: Q, cancellable: R) -> Result<(), Error> { + let remote = remote.into(); + let remote = remote.to_glib_none(); + let checksum = checksum.into(); + let checksum = checksum.to_glib_none(); + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_set_ref_immediate(self.to_glib_none().0, remote.0, ref_.to_glib_none().0, checksum.0, cancellable.0, &mut error); + if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } + } + } + + fn sign_commit<'a, 'b, P: Into>, Q: Into>>(&self, commit_checksum: &str, key_id: &str, homedir: P, cancellable: Q) -> Result<(), Error> { + let homedir = homedir.into(); + let homedir = homedir.to_glib_none(); + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_sign_commit(self.to_glib_none().0, commit_checksum.to_glib_none().0, key_id.to_glib_none().0, homedir.0, cancellable.0, &mut error); + if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } + } + } + + fn sign_delta<'a, P: Into>>(&self, from_commit: &str, to_commit: &str, key_id: &str, homedir: &str, cancellable: P) -> Result<(), Error> { + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_sign_delta(self.to_glib_none().0, from_commit.to_glib_none().0, to_commit.to_glib_none().0, key_id.to_glib_none().0, homedir.to_glib_none().0, cancellable.0, &mut error); + if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } + } + } + + fn static_delta_execute_offline<'a, P: IsA, Q: Into>>(&self, dir_or_file: &P, skip_validation: bool, cancellable: Q) -> Result<(), Error> { + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_static_delta_execute_offline(self.to_glib_none().0, dir_or_file.to_glib_none().0, skip_validation.to_glib(), cancellable.0, &mut error); + if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } + } + } + + fn static_delta_generate<'a, 'b, 'c, P: Into>, Q: Into>, R: Into>>(&self, opt: StaticDeltaGenerateOpt, from: &str, to: &str, metadata: P, params: Q, cancellable: R) -> Result<(), Error> { + let metadata = metadata.into(); + let metadata = metadata.to_glib_none(); + let params = params.into(); + let params = params.to_glib_none(); + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_static_delta_generate(self.to_glib_none().0, opt.to_glib(), from.to_glib_none().0, to.to_glib_none().0, metadata.0, params.0, cancellable.0, &mut error); + if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } + } + } + + #[cfg(any(feature = "v2018_6", feature = "dox"))] + fn transaction_set_collection_ref<'a, P: Into>>(&self, ref_: &CollectionRef, checksum: P) { + let checksum = checksum.into(); + let checksum = checksum.to_glib_none(); + unsafe { + ffi::ostree_repo_transaction_set_collection_ref(self.to_glib_none().0, ref_.to_glib_none().0, checksum.0); + } + } + + fn transaction_set_ref<'a, 'b, P: Into>, Q: Into>>(&self, remote: P, ref_: &str, checksum: Q) { + let remote = remote.into(); + let remote = remote.to_glib_none(); + let checksum = checksum.into(); + let checksum = checksum.to_glib_none(); + unsafe { + ffi::ostree_repo_transaction_set_ref(self.to_glib_none().0, remote.0, ref_.to_glib_none().0, checksum.0); + } + } + + fn transaction_set_refspec<'a, P: Into>>(&self, refspec: &str, checksum: P) { + let checksum = checksum.into(); + let checksum = checksum.to_glib_none(); + unsafe { + ffi::ostree_repo_transaction_set_refspec(self.to_glib_none().0, refspec.to_glib_none().0, checksum.0); + } + } + + //fn traverse_commit<'a, P: Into>>(&self, commit_checksum: &str, maxdepth: i32, out_reachable: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 2, id: 181 }/TypeId { ns_id: 2, id: 181 }, cancellable: P) -> Result<(), Error> { + // unsafe { TODO: call ffi::ostree_repo_traverse_commit() } + //} + + //fn traverse_commit_union<'a, P: Into>>(&self, commit_checksum: &str, maxdepth: i32, inout_reachable: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 25 }/TypeId { ns_id: 0, id: 25 }, cancellable: P) -> Result<(), Error> { + // unsafe { TODO: call ffi::ostree_repo_traverse_commit_union() } + //} + + //#[cfg(any(feature = "v2018_5", feature = "dox"))] + //fn traverse_commit_union_with_parents<'a, P: Into>>(&self, commit_checksum: &str, maxdepth: i32, inout_reachable: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 25 }/TypeId { ns_id: 0, id: 25 }, inout_parents: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 25 }/TypeId { ns_id: 0, id: 25 }, cancellable: P) -> Result<(), Error> { + // unsafe { TODO: call ffi::ostree_repo_traverse_commit_union_with_parents() } + //} + + //#[cfg(any(feature = "v2018_6", feature = "dox"))] + //fn traverse_reachable_refs<'a, P: Into>>(&self, depth: u32, reachable: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 2, id: 181 }/TypeId { ns_id: 2, id: 181 }, cancellable: P) -> Result<(), Error> { + // unsafe { TODO: call ffi::ostree_repo_traverse_reachable_refs() } + //} + + fn verify_commit<'a, 'b, 'c, P: IsA + 'a, Q: Into>, R: IsA + 'b, S: Into>, T: Into>>(&self, commit_checksum: &str, keyringdir: Q, extra_keyring: S, cancellable: T) -> Result<(), Error> { + let keyringdir = keyringdir.into(); + let keyringdir = keyringdir.to_glib_none(); + let extra_keyring = extra_keyring.into(); + let extra_keyring = extra_keyring.to_glib_none(); + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_verify_commit(self.to_glib_none().0, commit_checksum.to_glib_none().0, keyringdir.0, extra_keyring.0, cancellable.0, &mut error); + if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } + } + } + + fn verify_commit_ext<'a, 'b, 'c, P: IsA + 'a, Q: Into>, R: IsA + 'b, S: Into>, T: Into>>(&self, commit_checksum: &str, keyringdir: Q, extra_keyring: S, cancellable: T) -> Result { + let keyringdir = keyringdir.into(); + let keyringdir = keyringdir.to_glib_none(); + let extra_keyring = extra_keyring.into(); + let extra_keyring = extra_keyring.to_glib_none(); + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut error = ptr::null_mut(); + let ret = ffi::ostree_repo_verify_commit_ext(self.to_glib_none().0, commit_checksum.to_glib_none().0, keyringdir.0, extra_keyring.0, cancellable.0, &mut error); + if error.is_null() { Ok(from_glib_full(ret)) } else { Err(from_glib_full(error)) } + } + } + + fn verify_commit_for_remote<'a, P: Into>>(&self, commit_checksum: &str, remote_name: &str, cancellable: P) -> Result { + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut error = ptr::null_mut(); + let ret = ffi::ostree_repo_verify_commit_for_remote(self.to_glib_none().0, commit_checksum.to_glib_none().0, remote_name.to_glib_none().0, cancellable.0, &mut error); + if error.is_null() { Ok(from_glib_full(ret)) } else { Err(from_glib_full(error)) } + } + } + + fn verify_summary<'a, P: Into>>(&self, remote_name: &str, summary: &glib::Bytes, signatures: &glib::Bytes, cancellable: P) -> Result { + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut error = ptr::null_mut(); + let ret = ffi::ostree_repo_verify_summary(self.to_glib_none().0, remote_name.to_glib_none().0, summary.to_glib_none().0, signatures.to_glib_none().0, cancellable.0, &mut error); + if error.is_null() { Ok(from_glib_full(ret)) } else { Err(from_glib_full(error)) } + } + } + + fn write_archive_to_mtree<'a, 'b, P: IsA, Q: Into>, R: Into>>(&self, archive: &P, mtree: &MutableTree, modifier: Q, autocreate_parents: bool, cancellable: R) -> Result<(), Error> { + let modifier = modifier.into(); + let modifier = modifier.to_glib_none(); + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_write_archive_to_mtree(self.to_glib_none().0, archive.to_glib_none().0, mtree.to_glib_none().0, modifier.0, autocreate_parents.to_glib(), cancellable.0, &mut error); + if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } + } + } + + fn write_commit<'a, 'b, 'c, 'd, 'e, P: Into>, Q: Into>, R: Into>, S: Into>, T: Into>>(&self, parent: P, subject: Q, body: R, metadata: S, root: &RepoFile, cancellable: T) -> Result { + let parent = parent.into(); + let parent = parent.to_glib_none(); + let subject = subject.into(); + let subject = subject.to_glib_none(); + let body = body.into(); + let body = body.to_glib_none(); + let metadata = metadata.into(); + let metadata = metadata.to_glib_none(); + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut out_commit = ptr::null_mut(); + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_write_commit(self.to_glib_none().0, parent.0, subject.0, body.0, metadata.0, root.to_glib_none().0, &mut out_commit, cancellable.0, &mut error); + if error.is_null() { Ok(from_glib_full(out_commit)) } else { Err(from_glib_full(error)) } + } + } + + fn write_commit_detached_metadata<'a, 'b, P: Into>, Q: Into>>(&self, checksum: &str, metadata: P, cancellable: Q) -> Result<(), Error> { + let metadata = metadata.into(); + let metadata = metadata.to_glib_none(); + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_write_commit_detached_metadata(self.to_glib_none().0, checksum.to_glib_none().0, metadata.0, cancellable.0, &mut error); + if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } + } + } + + fn write_commit_with_time<'a, 'b, 'c, 'd, 'e, P: Into>, Q: Into>, R: Into>, S: Into>, T: Into>>(&self, parent: P, subject: Q, body: R, metadata: S, root: &RepoFile, time: u64, cancellable: T) -> Result { + let parent = parent.into(); + let parent = parent.to_glib_none(); + let subject = subject.into(); + let subject = subject.to_glib_none(); + let body = body.into(); + let body = body.to_glib_none(); + let metadata = metadata.into(); + let metadata = metadata.to_glib_none(); + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut out_commit = ptr::null_mut(); + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_write_commit_with_time(self.to_glib_none().0, parent.0, subject.0, body.0, metadata.0, root.to_glib_none().0, time, &mut out_commit, cancellable.0, &mut error); + if error.is_null() { Ok(from_glib_full(out_commit)) } else { Err(from_glib_full(error)) } + } + } + + fn write_config(&self, new_config: &glib::KeyFile) -> Result<(), Error> { + unsafe { + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_write_config(self.to_glib_none().0, new_config.to_glib_none().0, &mut error); + if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } + } + } + + //fn write_content<'a, 'b, P: Into>, Q: IsA, R: Into>>(&self, expected_checksum: P, object_input: &Q, length: u64, out_csum: /*Unknown conversion*//*Unimplemented*/FixedArray TypeId { ns_id: 0, id: 3 }; 32, cancellable: R) -> Result<(), Error> { + // unsafe { TODO: call ffi::ostree_repo_write_content() } + //} + + fn write_content_trusted<'a, P: IsA, Q: Into>>(&self, checksum: &str, object_input: &P, length: u64, cancellable: Q) -> Result<(), Error> { + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_write_content_trusted(self.to_glib_none().0, checksum.to_glib_none().0, object_input.to_glib_none().0, length, cancellable.0, &mut error); + if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } + } + } + + fn write_dfd_to_mtree<'a, 'b, P: Into>, Q: Into>>(&self, dfd: i32, path: &str, mtree: &MutableTree, modifier: P, cancellable: Q) -> Result<(), Error> { + let modifier = modifier.into(); + let modifier = modifier.to_glib_none(); + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_write_dfd_to_mtree(self.to_glib_none().0, dfd, path.to_glib_none().0, mtree.to_glib_none().0, modifier.0, cancellable.0, &mut error); + if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } + } + } + + fn write_directory_to_mtree<'a, 'b, P: IsA, Q: Into>, R: Into>>(&self, dir: &P, mtree: &MutableTree, modifier: Q, cancellable: R) -> Result<(), Error> { + let modifier = modifier.into(); + let modifier = modifier.to_glib_none(); + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_write_directory_to_mtree(self.to_glib_none().0, dir.to_glib_none().0, mtree.to_glib_none().0, modifier.0, cancellable.0, &mut error); + if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } + } + } + + //fn write_metadata<'a, 'b, P: Into>, Q: Into>>(&self, objtype: ObjectType, expected_checksum: P, object: &glib::Variant, out_csum: /*Unknown conversion*//*Unimplemented*/FixedArray TypeId { ns_id: 0, id: 3 }; 32, cancellable: Q) -> Result<(), Error> { + // unsafe { TODO: call ffi::ostree_repo_write_metadata() } + //} + + fn write_metadata_stream_trusted<'a, P: IsA, Q: Into>>(&self, objtype: ObjectType, checksum: &str, object_input: &P, length: u64, cancellable: Q) -> Result<(), Error> { + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_write_metadata_stream_trusted(self.to_glib_none().0, objtype.to_glib(), checksum.to_glib_none().0, object_input.to_glib_none().0, length, cancellable.0, &mut error); + if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } + } + } + + fn write_metadata_trusted<'a, P: Into>>(&self, objtype: ObjectType, checksum: &str, variant: &glib::Variant, cancellable: P) -> Result<(), Error> { + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_write_metadata_trusted(self.to_glib_none().0, objtype.to_glib(), checksum.to_glib_none().0, variant.to_glib_none().0, cancellable.0, &mut error); + if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } + } + } + + fn write_mtree<'a, P: Into>>(&self, mtree: &MutableTree, cancellable: P) -> Result { + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut out_file = ptr::null_mut(); + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_write_mtree(self.to_glib_none().0, mtree.to_glib_none().0, &mut out_file, cancellable.0, &mut error); + if error.is_null() { Ok(from_glib_full(out_file)) } else { Err(from_glib_full(error)) } + } + } + + fn get_property_remotes_config_dir(&self) -> Option { + unsafe { + let mut value = Value::from_type(::static_type()); + gobject_ffi::g_object_get_property(self.to_glib_none().0, "remotes-config-dir".to_glib_none().0, value.to_glib_none_mut().0); + value.get() + } + } + + fn get_property_sysroot_path(&self) -> Option { + unsafe { + let mut value = Value::from_type(::static_type()); + gobject_ffi::g_object_get_property(self.to_glib_none().0, "sysroot-path".to_glib_none().0, value.to_glib_none_mut().0); + value.get() + } + } + + fn connect_gpg_verify_result(&self, f: F) -> SignalHandlerId { + unsafe { + let f: Box_> = Box_::new(Box_::new(f)); + connect(self.to_glib_none().0, "gpg-verify-result", + transmute(gpg_verify_result_trampoline:: as usize), Box_::into_raw(f) as *mut _) + } + } +} + +unsafe extern "C" fn gpg_verify_result_trampoline

(this: *mut ffi::OstreeRepo, checksum: *mut libc::c_char, result: *mut ffi::OstreeGpgVerifyResult, f: glib_ffi::gpointer) +where P: IsA { + let f: &&(Fn(&P, &str, &GpgVerifyResult) + 'static) = transmute(f); + f(&Repo::from_glib_borrow(this).downcast_unchecked(), &String::from_glib_none(checksum), &from_glib_borrow(result)) +} diff --git a/rust-bindings/rust/src/auto/repo_commit_modifier.rs b/rust-bindings/rust/src/auto/repo_commit_modifier.rs new file mode 100644 index 00000000..1b7dac28 --- /dev/null +++ b/rust-bindings/rust/src/auto/repo_commit_modifier.rs @@ -0,0 +1,49 @@ +// This file was generated by gir (https://github.com/gtk-rs/gir @ ffda6f9) +// from gir-files (https://github.com/gtk-rs/gir-files @ ???) +// DO NOT EDIT + +#[cfg(any(feature = "v2017_13", feature = "dox"))] +use RepoDevInoCache; +use SePolicy; +use ffi; +use glib::translate::*; +use glib_ffi; +use gobject_ffi; +use std::mem; +use std::ptr; + +glib_wrapper! { + #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] + pub struct RepoCommitModifier(Shared); + + match fn { + ref => |ptr| ffi::ostree_repo_commit_modifier_ref(ptr), + unref => |ptr| ffi::ostree_repo_commit_modifier_unref(ptr), + get_type => || ffi::ostree_repo_commit_modifier_get_type(), + } +} + +impl RepoCommitModifier { + //pub fn new<'a, P: Into>>(flags: /*Ignored*/RepoCommitModifierFlags, commit_filter: P, destroy_notify: /*Unknown conversion*//*Unimplemented*/DestroyNotify) -> RepoCommitModifier { + // unsafe { TODO: call ffi::ostree_repo_commit_modifier_new() } + //} + + #[cfg(any(feature = "v2017_13", feature = "dox"))] + pub fn set_devino_cache(&self, cache: &RepoDevInoCache) { + unsafe { + ffi::ostree_repo_commit_modifier_set_devino_cache(self.to_glib_none().0, cache.to_glib_none().0); + } + } + + pub fn set_sepolicy<'a, P: Into>>(&self, sepolicy: P) { + let sepolicy = sepolicy.into(); + let sepolicy = sepolicy.to_glib_none(); + unsafe { + ffi::ostree_repo_commit_modifier_set_sepolicy(self.to_glib_none().0, sepolicy.0); + } + } + + //pub fn set_xattr_callback(&self, callback: /*Unknown conversion*//*Unimplemented*/RepoCommitModifierXattrCallback, destroy: /*Unknown conversion*//*Unimplemented*/DestroyNotify) { + // unsafe { TODO: call ffi::ostree_repo_commit_modifier_set_xattr_callback() } + //} +} diff --git a/rust-bindings/rust/src/auto/repo_dev_ino_cache.rs b/rust-bindings/rust/src/auto/repo_dev_ino_cache.rs new file mode 100644 index 00000000..b12c3fd1 --- /dev/null +++ b/rust-bindings/rust/src/auto/repo_dev_ino_cache.rs @@ -0,0 +1,35 @@ +// This file was generated by gir (https://github.com/gtk-rs/gir @ ffda6f9) +// from gir-files (https://github.com/gtk-rs/gir-files @ ???) +// DO NOT EDIT + +use ffi; +use glib::translate::*; +use glib_ffi; +use gobject_ffi; +use std::mem; +use std::ptr; + +glib_wrapper! { + #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] + pub struct RepoDevInoCache(Shared); + + match fn { + ref => |ptr| ffi::ostree_repo_devino_cache_ref(ptr), + unref => |ptr| ffi::ostree_repo_devino_cache_unref(ptr), + get_type => || ffi::ostree_repo_devino_cache_get_type(), + } +} + +impl RepoDevInoCache { + pub fn new() -> RepoDevInoCache { + unsafe { + from_glib_full(ffi::ostree_repo_devino_cache_new()) + } + } +} + +impl Default for RepoDevInoCache { + fn default() -> Self { + Self::new() + } +} diff --git a/rust-bindings/rust/src/auto/repo_file.rs b/rust-bindings/rust/src/auto/repo_file.rs new file mode 100644 index 00000000..de648236 --- /dev/null +++ b/rust-bindings/rust/src/auto/repo_file.rs @@ -0,0 +1,104 @@ +// This file was generated by gir (https://github.com/gtk-rs/gir @ ffda6f9) +// from gir-files (https://github.com/gtk-rs/gir-files @ ???) +// DO NOT EDIT + +use Error; +use Repo; +use ffi; +use gio; +use gio_ffi; +use glib; +use glib::object::IsA; +use glib::translate::*; +use glib_ffi; +use gobject_ffi; +use std::mem; +use std::ptr; + +glib_wrapper! { + pub struct RepoFile(Object): [ + gio::File => gio_ffi::GFile, + ]; + + match fn { + get_type => || ffi::ostree_repo_file_get_type(), + } +} + +pub trait RepoFileExt { + fn ensure_resolved(&self) -> Result<(), Error>; + + fn get_checksum(&self) -> Option; + + fn get_repo(&self) -> Option; + + fn get_root(&self) -> Option; + + fn tree_get_contents(&self) -> Option; + + fn tree_get_contents_checksum(&self) -> Option; + + fn tree_get_metadata(&self) -> Option; + + fn tree_get_metadata_checksum(&self) -> Option; + + fn tree_set_metadata(&self, checksum: &str, metadata: &glib::Variant); +} + +impl> RepoFileExt for O { + fn ensure_resolved(&self) -> Result<(), Error> { + unsafe { + let mut error = ptr::null_mut(); + let _ = ffi::ostree_repo_file_ensure_resolved(self.to_glib_none().0, &mut error); + if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } + } + } + + fn get_checksum(&self) -> Option { + unsafe { + from_glib_none(ffi::ostree_repo_file_get_checksum(self.to_glib_none().0)) + } + } + + fn get_repo(&self) -> Option { + unsafe { + from_glib_none(ffi::ostree_repo_file_get_repo(self.to_glib_none().0)) + } + } + + fn get_root(&self) -> Option { + unsafe { + from_glib_none(ffi::ostree_repo_file_get_root(self.to_glib_none().0)) + } + } + + fn tree_get_contents(&self) -> Option { + unsafe { + from_glib_full(ffi::ostree_repo_file_tree_get_contents(self.to_glib_none().0)) + } + } + + fn tree_get_contents_checksum(&self) -> Option { + unsafe { + from_glib_none(ffi::ostree_repo_file_tree_get_contents_checksum(self.to_glib_none().0)) + } + } + + fn tree_get_metadata(&self) -> Option { + unsafe { + from_glib_full(ffi::ostree_repo_file_tree_get_metadata(self.to_glib_none().0)) + } + } + + fn tree_get_metadata_checksum(&self) -> Option { + unsafe { + from_glib_none(ffi::ostree_repo_file_tree_get_metadata_checksum(self.to_glib_none().0)) + } + } + + fn tree_set_metadata(&self, checksum: &str, metadata: &glib::Variant) { + unsafe { + ffi::ostree_repo_file_tree_set_metadata(self.to_glib_none().0, checksum.to_glib_none().0, metadata.to_glib_none().0); + } + } +} diff --git a/rust-bindings/rust/src/auto/repo_transaction_stats.rs b/rust-bindings/rust/src/auto/repo_transaction_stats.rs new file mode 100644 index 00000000..11369672 --- /dev/null +++ b/rust-bindings/rust/src/auto/repo_transaction_stats.rs @@ -0,0 +1,21 @@ +// This file was generated by gir (https://github.com/gtk-rs/gir @ ffda6f9) +// from gir-files (https://github.com/gtk-rs/gir-files @ ???) +// DO NOT EDIT + +use ffi; +use glib::translate::*; +use glib_ffi; +use gobject_ffi; +use std::mem; +use std::ptr; + +glib_wrapper! { + #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] + pub struct RepoTransactionStats(Boxed); + + match fn { + copy => |ptr| gobject_ffi::g_boxed_copy(ffi::ostree_repo_transaction_stats_get_type(), ptr as *mut _) as *mut ffi::OstreeRepoTransactionStats, + free => |ptr| gobject_ffi::g_boxed_free(ffi::ostree_repo_transaction_stats_get_type(), ptr as *mut _), + get_type => || ffi::ostree_repo_transaction_stats_get_type(), + } +} diff --git a/rust-bindings/rust/src/auto/se_policy.rs b/rust-bindings/rust/src/auto/se_policy.rs new file mode 100644 index 00000000..11b5b681 --- /dev/null +++ b/rust-bindings/rust/src/auto/se_policy.rs @@ -0,0 +1,127 @@ +// This file was generated by gir (https://github.com/gtk-rs/gir @ ffda6f9) +// from gir-files (https://github.com/gtk-rs/gir-files @ ???) +// DO NOT EDIT + +use Error; +use SePolicyRestoreconFlags; +use ffi; +use gio; +use glib; +use glib::StaticType; +use glib::Value; +use glib::object::IsA; +use glib::translate::*; +use glib_ffi; +use gobject_ffi; +use std::mem; +use std::ptr; + +glib_wrapper! { + pub struct SePolicy(Object); + + match fn { + get_type => || ffi::ostree_sepolicy_get_type(), + } +} + +impl SePolicy { + pub fn new<'a, P: IsA, Q: Into>>(path: &P, cancellable: Q) -> Result { + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut error = ptr::null_mut(); + let ret = ffi::ostree_sepolicy_new(path.to_glib_none().0, cancellable.0, &mut error); + if error.is_null() { Ok(from_glib_full(ret)) } else { Err(from_glib_full(error)) } + } + } + + pub fn new_at<'a, P: Into>>(rootfs_dfd: i32, cancellable: P) -> Result { + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut error = ptr::null_mut(); + let ret = ffi::ostree_sepolicy_new_at(rootfs_dfd, cancellable.0, &mut error); + if error.is_null() { Ok(from_glib_full(ret)) } else { Err(from_glib_full(error)) } + } + } + + //pub fn fscreatecon_cleanup>>(unused: P) { + // unsafe { TODO: call ffi::ostree_sepolicy_fscreatecon_cleanup() } + //} +} + +pub trait SePolicyExt { + fn get_csum(&self) -> Option; + + fn get_label<'a, P: Into>>(&self, relpath: &str, unix_mode: u32, cancellable: P) -> Result; + + fn get_name(&self) -> Option; + + fn get_path(&self) -> Option; + + fn restorecon<'a, 'b, P: Into>, Q: IsA, R: Into>>(&self, path: &str, info: P, target: &Q, flags: SePolicyRestoreconFlags, cancellable: R) -> Result; + + fn setfscreatecon(&self, path: &str, mode: u32) -> Result<(), Error>; + + fn get_property_rootfs_dfd(&self) -> i32; +} + +impl + IsA> SePolicyExt for O { + fn get_csum(&self) -> Option { + unsafe { + from_glib_none(ffi::ostree_sepolicy_get_csum(self.to_glib_none().0)) + } + } + + fn get_label<'a, P: Into>>(&self, relpath: &str, unix_mode: u32, cancellable: P) -> Result { + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut out_label = ptr::null_mut(); + let mut error = ptr::null_mut(); + let _ = ffi::ostree_sepolicy_get_label(self.to_glib_none().0, relpath.to_glib_none().0, unix_mode, &mut out_label, cancellable.0, &mut error); + if error.is_null() { Ok(from_glib_full(out_label)) } else { Err(from_glib_full(error)) } + } + } + + fn get_name(&self) -> Option { + unsafe { + from_glib_none(ffi::ostree_sepolicy_get_name(self.to_glib_none().0)) + } + } + + fn get_path(&self) -> Option { + unsafe { + from_glib_none(ffi::ostree_sepolicy_get_path(self.to_glib_none().0)) + } + } + + fn restorecon<'a, 'b, P: Into>, Q: IsA, R: Into>>(&self, path: &str, info: P, target: &Q, flags: SePolicyRestoreconFlags, cancellable: R) -> Result { + let info = info.into(); + let info = info.to_glib_none(); + let cancellable = cancellable.into(); + let cancellable = cancellable.to_glib_none(); + unsafe { + let mut out_new_label = ptr::null_mut(); + let mut error = ptr::null_mut(); + let _ = ffi::ostree_sepolicy_restorecon(self.to_glib_none().0, path.to_glib_none().0, info.0, target.to_glib_none().0, flags.to_glib(), &mut out_new_label, cancellable.0, &mut error); + if error.is_null() { Ok(from_glib_full(out_new_label)) } else { Err(from_glib_full(error)) } + } + } + + fn setfscreatecon(&self, path: &str, mode: u32) -> Result<(), Error> { + unsafe { + let mut error = ptr::null_mut(); + let _ = ffi::ostree_sepolicy_setfscreatecon(self.to_glib_none().0, path.to_glib_none().0, mode, &mut error); + if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) } + } + } + + fn get_property_rootfs_dfd(&self) -> i32 { + unsafe { + let mut value = Value::from_type(::static_type()); + gobject_ffi::g_object_get_property(self.to_glib_none().0, "rootfs-dfd".to_glib_none().0, value.to_glib_none_mut().0); + value.get().unwrap() + } + } +} diff --git a/rust-bindings/rust/src/lib.rs b/rust-bindings/rust/src/lib.rs new file mode 100644 index 00000000..a32a211a --- /dev/null +++ b/rust-bindings/rust/src/lib.rs @@ -0,0 +1,31 @@ +extern crate gio_sys as gio_ffi; +extern crate glib_sys as glib_ffi; +extern crate gobject_sys as gobject_ffi; +extern crate libostree_sys as ffi; +#[macro_use] +extern crate glib; +extern crate gio; +extern crate libc; +#[macro_use] +extern crate bitflags; +#[macro_use] +extern crate lazy_static; + +use glib::Error; + +// re-exports +#[cfg_attr(feature = "cargo-clippy", allow(clippy))] +mod auto; +pub use auto::functions::*; +pub use auto::*; + +mod repo; + +mod object_name; +pub use object_name::ObjectName; + +// public modules +pub mod prelude { + pub use auto::traits::*; + pub use repo::RepoExtManual; +} diff --git a/rust-bindings/rust/src/object_name.rs b/rust-bindings/rust/src/object_name.rs new file mode 100644 index 00000000..e6494923 --- /dev/null +++ b/rust-bindings/rust/src/object_name.rs @@ -0,0 +1,74 @@ +use ffi; +use functions::{object_name_deserialize, object_name_serialize, object_to_string}; +use glib; +use glib::translate::*; +use glib_ffi; +use std::fmt::Display; +use std::fmt::Error; +use std::fmt::Formatter; +use std::hash::Hash; +use std::hash::Hasher; +use ObjectType; + +fn hash_object_name(v: &glib::Variant) -> u32 { + unsafe { ffi::ostree_hash_object_name(v.to_glib_none().0 as glib_ffi::gconstpointer) } +} + +#[derive(Eq, Debug)] +pub struct ObjectName { + variant: glib::Variant, + checksum: String, + object_type: ObjectType, +} + +impl ObjectName { + pub fn new_from_variant(variant: glib::Variant) -> ObjectName { + let deserialize = object_name_deserialize(&variant); + ObjectName { + variant, + checksum: deserialize.0, + object_type: deserialize.1, + } + } + + pub fn new>(checksum: S, object_type: ObjectType) -> ObjectName { + let checksum = checksum.into(); + let variant = object_name_serialize(checksum.as_str(), object_type).unwrap(); + ObjectName { + variant, + checksum, + object_type, + } + } + + pub fn checksum(&self) -> &str { + self.checksum.as_ref() + } + + pub fn object_type(&self) -> ObjectType { + self.object_type + } + + pub fn name(&self) -> String { + object_to_string(self.checksum(), self.object_type()) + .expect("type checks should make this safe") + } +} + +impl Display for ObjectName { + fn fmt(&self, f: &mut Formatter) -> Result<(), Error> { + write!(f, "{}", self.name()) + } +} + +impl Hash for ObjectName { + fn hash(&self, state: &mut H) { + state.write_u32(hash_object_name(&self.variant)); + } +} + +impl PartialEq for ObjectName { + fn eq(&self, other: &ObjectName) -> bool { + self.checksum == other.checksum && self.object_type == other.object_type + } +} diff --git a/rust-bindings/rust/src/repo.rs b/rust-bindings/rust/src/repo.rs new file mode 100644 index 00000000..279fe8f3 --- /dev/null +++ b/rust-bindings/rust/src/repo.rs @@ -0,0 +1,138 @@ +use auto::{Repo, RepoListRefsExtFlags}; +use ffi; +use gio; +use glib; +use glib::translate::*; +use glib::Error; +use glib::IsA; +use glib_ffi; +use std::collections::{HashMap, HashSet}; +use std::path::Path; +use std::ptr; +use ObjectName; + +unsafe extern "C" fn read_variant_table( + _key: glib_ffi::gpointer, + value: glib_ffi::gpointer, + hash_set: glib_ffi::gpointer, +) { + let value: glib::Variant = from_glib_none(value as *const glib_ffi::GVariant); + let set: &mut HashSet = &mut *(hash_set as *mut HashSet); + set.insert(ObjectName::new_from_variant(value)); +} + +unsafe fn from_glib_container_variant_set(ptr: *mut glib_ffi::GHashTable) -> HashSet { + let mut set = HashSet::new(); + glib_ffi::g_hash_table_foreach( + ptr, + Some(read_variant_table), + &mut set as *mut HashSet as *mut _, + ); + glib_ffi::g_hash_table_unref(ptr); + set +} + +pub trait RepoExtManual { + fn new_for_path>(path: P) -> Repo; + + fn traverse_commit<'a, P: Into>>( + &self, + commit_checksum: &str, + maxdepth: i32, + cancellable: P, + ) -> Result, Error>; + + fn list_refs<'a, 'b, P: Into>, Q: Into>>( + &self, + refspec_prefix: P, + cancellable: Q, + ) -> Result, Error>; + + fn list_refs_ext<'a, 'b, P: Into>, Q: Into>>( + &self, + refspec_prefix: P, + flags: RepoListRefsExtFlags, + cancellable: Q, + ) -> Result, Error>; +} + +impl + IsA + Clone + 'static> RepoExtManual for O { + fn new_for_path>(path: P) -> Repo { + Repo::new(&gio::File::new_for_path(path.as_ref())) + } + + fn traverse_commit<'a, P: Into>>( + &self, + commit_checksum: &str, + maxdepth: i32, + cancellable: P, + ) -> Result, Error> { + unsafe { + let mut error = ptr::null_mut(); + let mut hashtable = ptr::null_mut(); + let _ = ffi::ostree_repo_traverse_commit( + self.to_glib_none().0, + commit_checksum.to_glib_none().0, + maxdepth, + &mut hashtable, + cancellable.into().to_glib_none().0, + &mut error, + ); + if error.is_null() { + Ok(from_glib_container_variant_set(hashtable)) + } else { + Err(from_glib_full(error)) + } + } + } + + fn list_refs<'a, 'b, P: Into>, Q: Into>>( + &self, + refspec_prefix: P, + cancellable: Q, + ) -> Result, Error> { + unsafe { + let mut error = ptr::null_mut(); + let mut hashtable = ptr::null_mut(); + let _ = ffi::ostree_repo_list_refs( + self.to_glib_none().0, + refspec_prefix.into().to_glib_none().0, + &mut hashtable, + cancellable.into().to_glib_none().0, + &mut error, + ); + + if error.is_null() { + Ok(FromGlibPtrContainer::from_glib_container(hashtable)) + } else { + Err(from_glib_full(error)) + } + } + } + + fn list_refs_ext<'a, 'b, P: Into>, Q: Into>>( + &self, + refspec_prefix: P, + flags: RepoListRefsExtFlags, + cancellable: Q, + ) -> Result, Error> { + unsafe { + let mut error = ptr::null_mut(); + let mut hashtable = ptr::null_mut(); + let _ = ffi::ostree_repo_list_refs_ext( + self.to_glib_none().0, + refspec_prefix.into().to_glib_none().0, + &mut hashtable, + flags.to_glib(), + cancellable.into().to_glib_none().0, + &mut error, + ); + + if error.is_null() { + Ok(FromGlibPtrContainer::from_glib_container(hashtable)) + } else { + Err(from_glib_full(error)) + } + } + } +} diff --git a/rust-bindings/rust/tests/roundtrip.rs b/rust-bindings/rust/tests/roundtrip.rs new file mode 100644 index 00000000..d8bdbed2 --- /dev/null +++ b/rust-bindings/rust/tests/roundtrip.rs @@ -0,0 +1,66 @@ +extern crate gio; +extern crate glib; +extern crate libostree; +extern crate tempfile; + +use glib::prelude::*; +use libostree::prelude::*; +use std::fs; +use std::io; +use std::io::Write; + +fn create_repo(repodir: &tempfile::TempDir) -> Result { + let repo = libostree::Repo::new_for_path(repodir.path()); + repo.create(libostree::RepoMode::Archive, None)?; + Ok(repo) +} + +fn create_test_file(treedir: &tempfile::TempDir) -> Result<(), io::Error> { + let mut testfile = fs::File::create(treedir.path().join("test.txt"))?; + write!(testfile, "test")?; + Ok(()) +} + +fn create_mtree( + treedir: &tempfile::TempDir, + repo: &libostree::Repo, +) -> Result { + let gfile = gio::File::new_for_path(treedir.path()); + let mtree = libostree::MutableTree::new(); + repo.write_directory_to_mtree(&gfile, &mtree, None, None)?; + Ok(mtree) +} + +fn commit_mtree( + repo: &libostree::Repo, + mtree: &libostree::MutableTree, +) -> Result { + repo.prepare_transaction(None)?; + let repo_file = repo.write_mtree(mtree, None)?.downcast().unwrap(); + let checksum = repo.write_commit(None, "Test Commit", None, None, &repo_file, None)?; + repo.transaction_set_ref(None, "test", checksum.as_str()); + repo.commit_transaction(None)?; + Ok(checksum) +} + +fn open_repo(repodir: &tempfile::TempDir) -> Result { + let repo = libostree::Repo::new_for_path(repodir.path()); + repo.open(None)?; + Ok(repo) +} + +#[test] +fn should_commit_content_to_repo_and_list_refs_again() { + let repodir = tempfile::tempdir().unwrap(); + let treedir = tempfile::tempdir().unwrap(); + + let repo = create_repo(&repodir).expect("failed to create repo"); + create_test_file(&treedir).expect("failed to create test file"); + let mtree = create_mtree(&treedir, &repo).expect("failed to build mtree"); + let checksum = commit_mtree(&repo, &mtree).expect("failed to commit mtree"); + + let repo = open_repo(&repodir).expect("failed to open repo"); + let refs = repo.list_refs(None, None).expect("failed to list refs"); + assert_eq!(refs.len(), 1); + assert_eq!(refs["test"], checksum); +}