read_project_files/
read_project_files.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
11#[derive(Debug)]
12#[allow(dead_code)]
13struct Metadata {
14    header: String,
15    datatype_version: u8,
16}
17
18// read different data files and print some metadata
19fn main() -> Result<(), OtToolsIoError> {
20    let blank_project_dirpath = PathBuf::from("test-data").join("blank-project");
21
22    let arr_fpath = blank_project_dirpath.join("arr01.work");
23    let bank_fpath = blank_project_dirpath.join("bank01.work");
24    let markers_fpath = blank_project_dirpath.join("markers.work");
25    let project_fpath = blank_project_dirpath.join("project.work");
26
27    let arr = ArrangementFile::from_data_file(&arr_fpath)?;
28    let bank = BankFile::from_data_file(&bank_fpath)?;
29    let markers = MarkersFile::from_data_file(&markers_fpath)?;
30    let project = ProjectFile::from_data_file(&project_fpath)?;
31
32    let arr_meta = Metadata {
33        header: String::from_utf8_lossy(&arr.header)
34            .to_string()
35            .replace("\0", "."),
36        datatype_version: arr.datatype_version,
37    };
38
39    let bank_meta = Metadata {
40        header: String::from_utf8_lossy(&bank.header)
41            .to_string()
42            .replace("\0", "."),
43        datatype_version: bank.datatype_version,
44    };
45
46    let markers_meta = Metadata {
47        header: String::from_utf8_lossy(&markers.header)
48            .to_string()
49            .replace("\0", "."),
50        datatype_version: markers.datatype_version,
51    };
52
53    println!("===================================");
54    println!("| Printing example files metadata |");
55    println!("===================================");
56    println!();
57    println!("project: {:#?}", project.metadata);
58    println!();
59    println!("arrangement: {arr_meta:#?}");
60    println!();
61    println!("bank: {bank_meta:#?}");
62    println!();
63    println!("markers: {markers_meta:#?}");
64    Ok(())
65}