use std::collections::HashMap;
use std::path::PathBuf;
use serde::Serialize;
use crate::config::{EnvVar, ModuleSpec, ShellAlias};
mod git;
mod loader;
mod lockfile;
mod registry;
mod resolve;
pub use git::{
GitSource, TagSignatureStatus, check_tag_signature, default_module_cache_dir, fetch_git_source,
get_head_commit_sha, git_cache_dir, is_git_source, parse_git_source,
};
pub use loader::{load_module, load_modules, resolve_dependency_order};
pub use lockfile::{
diff_module_specs, hash_module_contents, load_all_modules, load_locked_modules, load_lockfile,
save_lockfile, verify_lockfile_integrity,
};
pub use registry::{
FetchedRemoteModule, RegistryModule, RegistryRef, extract_registry_name,
fetch_registry_modules, fetch_remote_module, is_registry_ref, latest_module_version,
parse_registry_ref, resolve_profile_module_name,
};
pub use resolve::{
resolve_module_files, resolve_module_packages, resolve_modules, resolve_package,
};
#[derive(Debug, Clone, Serialize)]
pub struct ResolvedPackage {
pub canonical_name: String,
pub resolved_name: String,
pub manager: String,
pub version: Option<String>,
pub script: Option<String>,
}
#[derive(Debug, Clone, Serialize)]
pub struct ResolvedFile {
pub source: PathBuf,
pub target: PathBuf,
pub is_git_source: bool,
pub strategy: Option<crate::config::FileStrategy>,
pub encryption: Option<crate::config::EncryptionSpec>,
}
#[derive(Debug, Clone, Serialize)]
pub struct ResolvedModule {
pub name: String,
pub packages: Vec<ResolvedPackage>,
pub files: Vec<ResolvedFile>,
pub env: Vec<EnvVar>,
pub aliases: Vec<ShellAlias>,
pub system: HashMap<String, serde_yaml::Value>,
pub pre_apply_scripts: Vec<crate::config::ScriptEntry>,
pub post_apply_scripts: Vec<crate::config::ScriptEntry>,
pub pre_reconcile_scripts: Vec<crate::config::ScriptEntry>,
pub post_reconcile_scripts: Vec<crate::config::ScriptEntry>,
pub on_change_scripts: Vec<crate::config::ScriptEntry>,
pub depends: Vec<String>,
pub dir: PathBuf,
}
#[derive(Debug, Clone, Serialize)]
pub struct LoadedModule {
pub name: String,
pub spec: ModuleSpec,
pub dir: PathBuf,
}
#[cfg(test)]
mod tests;