Skip to main content

harn_cli/package/
mod.rs

1use std::collections::{BTreeMap, BTreeSet, HashMap, HashSet};
2use std::ffi::OsStr;
3use std::fs::File;
4use std::path::{Path, PathBuf};
5use std::sync::{Arc, OnceLock};
6use std::time::{Duration, SystemTime, UNIX_EPOCH};
7use std::{fs, process};
8
9use chrono_tz::Tz;
10use fs2::FileExt;
11use regex::Regex;
12use serde::{Deserialize, Serialize};
13use sha2::{Digest, Sha256};
14use std::str::FromStr;
15use url::Url;
16
17const CONTENT_HASH_FILE: &str = harn_modules::package_execution::CONTENT_HASH_FILE;
18const CACHE_METADATA_FILE: &str = harn_modules::package_execution::CACHE_METADATA_FILE;
19const HARN_CACHE_DIR_ENV: &str = "HARN_CACHE_DIR";
20const HARN_PACKAGE_REGISTRY_ENV: &str = "HARN_PACKAGE_REGISTRY";
21const HARN_PACKAGE_REGISTRY_TOKEN_ENV: &str = "HARN_PACKAGE_REGISTRY_TOKEN";
22const DEFAULT_PACKAGE_REGISTRY_URL: &str = "https://packages.harnlang.com/harn-package-index.toml";
23const CACHE_METADATA_VERSION: u32 = 1;
24const LOCK_FILE_VERSION: u32 = 4;
25const REGISTRY_INDEX_VERSION: u32 = 1;
26const PACKAGE_ARCHIVE_MAX_BYTES: u64 = 64 * 1024 * 1024;
27const PACKAGE_ARCHIVE_MAX_UNPACKED_BYTES: u64 = 64 * 1024 * 1024;
28const MANIFEST: &str = "harn.toml";
29const LOCK_FILE: &str = "harn.lock";
30const TRIGGER_RETRY_MAX_LIMIT: u32 = 100;
31
32pub(crate) mod errors;
33mod extensions;
34mod generations;
35mod lockfile;
36mod manifest;
37mod maturity;
38mod mutation;
39mod package_ops;
40mod persona_activation;
41mod persona_runtime;
42mod registry;
43mod skills;
44mod validation;
45
46#[allow(unused_imports)]
47pub use errors::{PackageError, PackageResult};
48
49pub use extensions::*;
50pub(crate) use generations::*;
51#[cfg(test)]
52pub use lockfile::add_package;
53pub(crate) use lockfile::*;
54pub use lockfile::{
55    add_package_with_registry, ensure_dependencies_materialized, install_packages, lock_packages,
56    remove_package, update_packages, PackageLockExport, PackageLockExports,
57};
58pub use manifest::*;
59pub use maturity::{
60    artifacts_check, artifacts_manifest, audit_packages, outdated_packages, ArtifactDriftReport,
61    AuditCode, AuditFinding, AuditReport, AuditSeverity, OutdatedEntry, OutdatedReport,
62    OutdatedStatus,
63};
64pub(crate) use mutation::*;
65pub use package_ops::*;
66pub use persona_activation::*;
67pub(crate) use persona_runtime::*;
68pub(crate) use registry::*;
69pub use registry::{
70    clean_package_cache, list_package_cache, search_package_registry, search_rule_package_registry,
71    show_package_registry_info, verify_package_cache,
72};
73pub use skills::*;
74pub(crate) use validation::*;
75
76#[cfg(test)]
77pub(crate) mod test_support;