gitdataai/libs/git/description/mod.rs
2026-04-15 09:08:09 +08:00

40 lines
1.3 KiB
Rust

//! Description domain — repository description file read/write (used by GitWeb).
use std::path::PathBuf;
use crate::{GitDomain, GitError, GitResult};
impl GitDomain {
/// Path to the description file.
fn description_path(&self) -> PathBuf {
PathBuf::from(self.repo().path()).join("description")
}
/// Read the repository description.
/// Returns "Unnamed repository" if the file does not exist.
pub fn description_get(&self) -> GitResult<String> {
let path = self.description_path();
if !path.exists() {
return Ok("Unnamed repository".to_string());
}
let content =
std::fs::read_to_string(&path).map_err(|e| GitError::IoError(e.to_string()))?;
Ok(content.trim().to_string())
}
/// Write the repository description.
pub fn description_set(&self, description: &str) -> GitResult<()> {
let path = self.description_path();
std::fs::write(&path, description.trim()).map_err(|e| GitError::IoError(e.to_string()))
}
pub fn description_exists(&self) -> bool {
self.description_path().exists()
}
/// Reset description to the default "Unnamed repository".
pub fn description_reset(&self) -> GitResult<()> {
self.description_set("Unnamed repository")
}
}