about summary refs log tree commit diff
path: root/src/actions/create.rs
blob: 472cbe3f1047c7dcf31d073de47dc56296933f90 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
use std::fs::{self, File};

use anyhow::Result;

use crate::{actions::update, files::Locations, history::RepositoryHistory};

use super::ActionOptions;

pub fn create(command_options: ActionOptions) -> Result<()> {
    let locations = Locations::from(&command_options);

    if locations.ka_path.exists() {
        fs::remove_dir_all(locations.ka_path.as_path())?;
    }

    fs::create_dir(&locations.ka_path)?;
    fs::create_dir(&locations.ka_files_path)?;

    let mut index_file = File::create(locations.get_repository_index())?;
    let empty_history = RepositoryHistory::default();
    empty_history.write_to_file(&mut index_file)?;

    update(command_options)?;

    Ok(())
}