cpclib_runner/runner/tracker/
mod.rs

1use at3::extra::*;
2use at3::{AT_CMD, At3Version};
3use chipnsfx::{CHIPNSFX_CMD, ChipnsfxVersion};
4use cpclib_common::event::EventObserver;
5
6use crate::delegated::{DelegateApplicationDescription, InternetStaticCompiledApplication};
7
8pub mod at3;
9pub mod chipnsfx;
10
11#[derive(Clone, Debug, PartialEq, Eq, Hash)]
12pub enum Tracker {
13    At3(At3Version),
14    Chipnsfx(ChipnsfxVersion)
15}
16
17impl Tracker {
18    pub fn get_command(&self) -> &str {
19        match self {
20            Tracker::At3(_) => AT_CMD,
21            Tracker::Chipnsfx(_) => CHIPNSFX_CMD
22        }
23    }
24
25    pub fn configuration<E: EventObserver>(&self) -> DelegateApplicationDescription<E> {
26        match self {
27            Tracker::At3(v) => v.configuration(),
28            Tracker::Chipnsfx(v) => v.configuration()
29        }
30    }
31}
32
33#[derive(Clone, Debug, PartialEq, Eq, Hash)]
34pub enum SongConverter {
35    SongToAkm(SongToAkm),
36    SongToAkg(SongToAkg),
37    SongToAky(SongToAky),
38    SongToEvents(SongToEvents),
39    SongToRaw(SongToRaw),
40    SongToSoundEffects(SongToSoundEffects),
41    SongToVgm(SongToVgm),
42    SongToWav(SongToWav),
43    SongToYm(SongToYm)
44}
45
46impl SongConverter {
47    pub fn get_command(&self) -> &str {
48        match self {
49            Self::SongToAkg(_) => SongToAkg::CMD,
50            Self::SongToAkm(_) => SongToAkm::CMD,
51            Self::SongToAky(_) => SongToAky::CMD,
52            Self::SongToEvents(_) => SongToEvents::CMD,
53            Self::SongToRaw(_) => SongToRaw::CMD,
54            Self::SongToSoundEffects(_) => SongToSoundEffects::CMD,
55            Self::SongToVgm(_) => SongToVgm::CMD,
56            Self::SongToWav(_) => SongToWav::CMD,
57            Self::SongToYm(_) => SongToYm::CMD
58        }
59    }
60
61    pub fn configuration<E: EventObserver>(&self) -> DelegateApplicationDescription<E> {
62        match self {
63            Self::SongToAkg(v) => v.configuration(),
64            Self::SongToAkm(v) => v.configuration(),
65            Self::SongToAky(v) => v.configuration(),
66            Self::SongToEvents(v) => v.configuration(),
67            Self::SongToRaw(v) => v.configuration(),
68            Self::SongToSoundEffects(v) => v.configuration(),
69            Self::SongToVgm(v) => v.configuration(),
70            Self::SongToWav(v) => v.configuration(),
71            Self::SongToYm(v) => v.configuration()
72        }
73    }
74}
75
76#[cfg(test)]
77mod test {
78    use crate::delegated::{StaticInformation, cpclib_download};
79    use crate::runner::tracker::at3::At3Version;
80    use crate::runner::tracker::chipnsfx::ChipnsfxVersion;
81
82    #[test]
83    fn test_download_at3() {
84        let urls = At3Version::default().static_download_urls();
85        assert!(cpclib_download(dbg!(urls.linux.as_ref().unwrap())).is_ok());
86        assert!(cpclib_download(dbg!(urls.windows.as_ref().unwrap())).is_ok());
87    }
88
89    #[test]
90    #[ignore]
91    fn test_download_chipnsfx() {
92        let urls = ChipnsfxVersion::default().static_download_urls();
93        assert!(cpclib_download(dbg!(urls.linux.as_ref().unwrap())).is_ok());
94        assert!(cpclib_download(dbg!(urls.windows.as_ref().unwrap())).is_ok());
95    }
96}