create_new_project_dir/
create_new_project_dir.rs

1/*
2SPDX-License-Identifier: GPL-3.0-or-later
3Copyright © 2024 Mike Robeson [dijksterhuis]
4*/
5
6use ot_tools_io::{
7    ArrangementFile, BankFile, MarkersFile, OctatrackFileIO, OtToolsIoError, ProjectFile,
8};
9use std::path::PathBuf;
10
11fn bank_fname_from_id(id: usize) -> String {
12    format!["bank{id:0>2}.work"].to_string()
13}
14
15fn arr_fname_from_id(id: usize) -> String {
16    format!["arr{id:0>2}.work"].to_string()
17}
18
19fn main() -> Result<(), OtToolsIoError> {
20    let project_dirpath = PathBuf::from("example-new-project");
21
22    std::fs::create_dir_all(&project_dirpath)?;
23
24    let proj_fpath = project_dirpath.join("project.work");
25    ProjectFile::default().to_data_file(&proj_fpath)?;
26
27    let markers_fpath = project_dirpath.join("markers.work");
28    MarkersFile::default().to_data_file(&markers_fpath)?;
29
30    for i in 1..=16 {
31        let bank_fpath = project_dirpath.join(bank_fname_from_id(i));
32        BankFile::default().to_data_file(&bank_fpath)?;
33    }
34
35    for i in 1..=8 {
36        let arr_fpath = project_dirpath.join(arr_fname_from_id(i));
37        ArrangementFile::default().to_data_file(&arr_fpath)?;
38    }
39
40    println!("New project created: {project_dirpath:?}");
41    Ok(())
42}