MCPcopy Create free account
hub / github.com/bootc-dev/bootc / commit_filedefs

Method commit_filedefs

crates/ostree-ext/src/fixture.rs:708–780  ·  view source on GitHub ↗
(&self, defs: impl IntoIterator<Item = Result<FileDef>>)

Source from the content-addressed store, hash-verified

706 }
707
708 pub fn commit_filedefs(&self, defs: impl IntoIterator<Item = Result<FileDef>>) -> Result<()> {
709 let root = ostree::MutableTree::new();
710 let cancellable = gio::Cancellable::NONE;
711 let tx = self.srcrepo.auto_transaction(cancellable)?;
712 for def in defs {
713 let def = def?;
714 self.write_filedef(&root, &def)?;
715 }
716 let root = self.srcrepo.write_mtree(&root, cancellable)?;
717 let root = root.downcast_ref::<ostree::RepoFile>().unwrap();
718 // You win internet points if you understand this date reference
719 let ts = chrono::DateTime::parse_from_rfc2822("Fri, 29 Aug 1997 10:30:42 PST")?.timestamp();
720 // Some default metadata fixtures
721 let metadata = glib::VariantDict::new(None);
722 metadata.insert(
723 "buildsys.checksum",
724 &"41af286dc0b172ed2f1ca934fd2278de4a1192302ffa07087cea2682e7d372e3",
725 );
726 metadata.insert("ostree.container-cmd", &vec!["/usr/bin/bash"]);
727 metadata.insert("version", &"42.0");
728 #[allow(clippy::explicit_auto_deref)]
729 if self.bootable {
730 metadata.insert(ostree::METADATA_KEY_BOOTABLE, &true);
731 }
732 let metadata = metadata.to_variant();
733 let commit = self.srcrepo.write_commit_with_time(
734 None,
735 None,
736 None,
737 Some(&metadata),
738 root,
739 ts as u64,
740 cancellable,
741 )?;
742 self.srcrepo
743 .transaction_set_ref(None, self.testref(), Some(commit.as_str()));
744 tx.commit(cancellable)?;
745
746 // Add detached metadata so we can verify it makes it through
747 let detached = glib::VariantDict::new(None);
748 detached.insert("my-detached-key", &"my-detached-value");
749 let detached = detached.to_variant();
750 self.srcrepo.write_commit_detached_metadata(
751 commit.as_str(),
752 Some(&detached),
753 gio::Cancellable::NONE,
754 )?;
755
756 let gpghome = self.path.join("src/gpghome");
757 self.srcrepo.sign_commit(
758 &commit,
759 TEST_GPG_KEYID_1,
760 Some(gpghome.as_str()),
761 gio::Cancellable::NONE,
762 )?;
763
764 // Verify that this is what is expected.
765 let commit_object = self.srcrepo.load_commit(&commit)?.0;

Callers 2

new_v1Method · 0.80

Calls 5

write_filedefMethod · 0.80
testrefMethod · 0.80
run_capture_stderrMethod · 0.80
argsMethod · 0.80
argMethod · 0.80

Tested by 1