pre_commit_sort/
pre_commit.rs

1use std::{fs::File, path::Path};
2
3use crate::Result;
4
5pub trait PreCommit: serde::de::DeserializeOwned + serde::Serialize {
6    const PATH: &'static str;
7
8    fn process(&mut self, install: bool);
9
10    fn main(install: bool) -> Result<()> {
11        if Path::new(Self::PATH).exists() {
12            let input = File::open(Self::PATH)?;
13            let mut pre_commit: Self = serde_yaml::from_reader(input)?;
14
15            pre_commit.process(install);
16
17            let output = File::create(Self::PATH)?;
18            serde_yaml::to_writer(output, &pre_commit)?;
19        }
20        Ok(())
21    }
22}