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}