zoi/pkg/utils.rs
1use sha2::{Digest, Sha512};
2
3/// Generates a unique ID for a package based on its origin.
4/// The format for the hash is `#{registry-handle}@{repo/path/to/package}`.
5pub fn generate_package_id(registry_handle: &str, repo_path: &str) -> String {
6 let format_string = format!("#{}@{}", registry_handle, repo_path);
7 let mut hasher = Sha512::new();
8 hasher.update(format_string.as_bytes());
9 let result = hasher.finalize();
10 let hex_string = hex::encode(result);
11 hex_string[..32].to_string()
12}
13
14/// Creates the directory name for the package in the store.
15/// Format: `{hash}-{name}`
16pub fn get_package_dir_name(package_id: &str, package_name: &str) -> String {
17 format!("{}-{}", package_id, package_name)
18}