mod release_state;
mod manager;
pub use release_state::{
ReleaseState, ReleasePhase, ReleaseCheckpoint, VersionState, GitState, PublishState,
ReleaseError, ReleaseConfig, VersionUpdateInfo, GitCommitInfo, GitTagInfo, GitPushInfo,
PublishPackageInfo, FileBackup, STATE_FORMAT_VERSION,
};
pub use manager::{
StateManager, StateConfig, LoadStateResult, SaveStateResult, StateFileInfo, FileInfo,
};
use crate::error::Result;
use std::path::Path;
pub fn create_state_manager() -> Result<StateManager> {
StateManager::new(".cyrup_release_state.json")
}
pub fn create_state_manager_at<P: AsRef<Path>>(path: P) -> Result<StateManager> {
StateManager::new(path)
}
pub fn create_state_manager_with_config<P: AsRef<Path>>(
path: P,
config: StateConfig,
) -> Result<StateManager> {
StateManager::with_config(path, config)
}
pub fn has_active_release() -> bool {
std::path::Path::new(".cyrup_release_state.json").exists()
}
pub fn has_active_release_at<P: AsRef<Path>>(path: P) -> bool {
path.as_ref().exists()
}
pub fn load_release_state() -> Result<LoadStateResult> {
let mut manager = create_state_manager()?;
manager.load_state()
}
pub fn load_release_state_from<P: AsRef<Path>>(path: P) -> Result<LoadStateResult> {
let mut manager = StateManager::new(path)?;
manager.load_state()
}
pub fn save_release_state(state: &ReleaseState) -> Result<SaveStateResult> {
let mut manager = create_state_manager()?;
manager.save_state(state)
}
pub fn save_release_state_to<P: AsRef<Path>>(path: P, state: &ReleaseState) -> Result<SaveStateResult> {
let mut manager = StateManager::new(path)?;
manager.save_state(state)
}
pub fn cleanup_release_state() -> Result<()> {
let manager = create_state_manager()?;
manager.cleanup_state()
}
pub fn cleanup_release_state_at<P: AsRef<Path>>(path: P) -> Result<()> {
let manager = StateManager::new(path)?;
manager.cleanup_state()
}