cpclib_runner/runner/tracker/
mod.rs1use 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}