MCPcopy Create free account
hub / github.com/EpicGames/lore / build_commit_metadata

Function build_commit_metadata

lore-revision/src/commit.rs:932–980  ·  view source on GitHub ↗

Converts interface metadata args and prepares the commit metadata object.

(
    repository: Arc<RepositoryContext>,
    state_staged: &Arc<State>,
    branch: BranchId,
    message: String,
    keys: LoreArray<LoreString>,
    values: LoreArray<LoreString>,
    formats: Lor

Source from the content-addressed store, hash-verified

930
931/// Converts interface metadata args and prepares the commit metadata object.
932async fn build_commit_metadata(
933 repository: Arc<RepositoryContext>,
934 state_staged: &Arc<State>,
935 branch: BranchId,
936 message: String,
937 keys: LoreArray<LoreString>,
938 values: LoreArray<LoreString>,
939 formats: LoreArray<LoreMetadataType>,
940) -> Result<Arc<Metadata>, CommitError> {
941 let metadata_keys = keys
942 .as_slice()
943 .iter()
944 .map(|k| String::from(k.as_str()))
945 .collect();
946 let metadata_values = values
947 .as_slice()
948 .iter()
949 .map(|v| String::from(v.as_str()))
950 .collect();
951 let metadata_formats = formats
952 .as_slice()
953 .iter()
954 .map(|format| match format {
955 LoreMetadataType::Binary => MetadataType::Binary,
956 LoreMetadataType::Numeric => MetadataType::Numeric,
957 LoreMetadataType::String => MetadataType::String,
958 })
959 .collect();
960
961 let metadata_hash = state_staged.metadata_hash();
962 let original_metadata = if metadata_hash.is_zero() {
963 Metadata::new()
964 } else {
965 Metadata::deserialize(repository.clone(), metadata_hash)
966 .await
967 .forward::<CommitError>("Failed to deserialize metadata")?
968 };
969
970 prepare_commit_metadata(
971 repository,
972 original_metadata,
973 branch,
974 message,
975 Some(metadata_keys),
976 Some(metadata_values),
977 Some(metadata_formats),
978 )
979 .await
980}
981
982/// Stores branch latest, deletes staged anchor, updates last sync if merge,
983/// and emits the revision commit event.

Callers 3

commit_implFunction · 0.85
commit_layer_onlyFunction · 0.85
commit_link_onlyFunction · 0.85

Calls 9

deserializeFunction · 0.85
prepare_commit_metadataFunction · 0.85
mapMethod · 0.80
metadata_hashMethod · 0.80
iterMethod · 0.45
as_sliceMethod · 0.45
as_strMethod · 0.45
is_zeroMethod · 0.45
cloneMethod · 0.45

Tested by

no test coverage detected