summaryrefslogtreecommitdiff
path: root/src/bin/git-clean-autosaves.rs
blob: 5b5c61b3d9519b27c3d4e43be34e115e720fefd2 (plain)
use chrono::Utc;
use git_autosave::Autosave;
use git2::Repository;

const THREE_MONTHS: i64 = 60 * 60 * 24 * 30 * 3;

fn main() -> Result<(), anyhow::Error> {
	let repository = Repository::discover(".")?;
	for reference in repository.references()? {
		let Ok(mut reference) = reference else {
			continue;
		};
		let Ok(autosave): Result<Autosave, git2::Error> = (&reference).try_into() else {
			continue;
		};

		if Utc::now().timestamp() - autosave.time.seconds() > THREE_MONTHS {
			reference.delete()?;
		}
	}

	Ok(())
}