cpclib_runner/runner/disassembler/
disark.rs

1use std::sync::OnceLock;
2
3use crate::delegated::{
4    DownloadableInformation, ExecutableInformation, InternetStaticCompiledApplication,
5    MutiplatformUrls, StaticInformation
6};
7
8pub const DISARK_CMD: &str = "disark";
9
10#[derive(Clone, Debug, PartialEq, Eq, Hash, Default)]
11pub enum DisarkVersion {
12    #[default]
13    V1_0_0
14}
15
16impl StaticInformation for DisarkVersion {
17    fn static_download_urls(&self) -> &'static crate::delegated::MutiplatformUrls {
18        static URL: OnceLock<MutiplatformUrls> = OnceLock::new();
19
20        URL.get_or_init(|| {
21            MutiplatformUrls::builder()
22                .linux("https://bitbucket.org/JulienNevo/disark/downloads/Disark-linux64-1.0.0.zip")
23                .windows(
24                    "https://bitbucket.org/JulienNevo/disark/downloads/Disark-windows-1.0.0.zip"
25                )
26                .macos("https://bitbucket.org/JulienNevo/disark/downloads/Disark-macos-1.0.0.zip")
27                .build()
28        })
29    }
30}
31
32impl DownloadableInformation for DisarkVersion {
33    fn target_os_archive_format(&self) -> crate::delegated::ArchiveFormat {
34        crate::delegated::ArchiveFormat::Zip
35    }
36}
37
38impl ExecutableInformation for DisarkVersion {
39    fn target_os_folder(&self) -> &'static str {
40        "disark"
41    }
42
43    fn target_os_exec_fname(&self) -> &'static str {
44        #[cfg(not(target_os = "windows"))]
45        return "disark";
46        #[cfg(target_os = "windows")]
47        return "disark.exe";
48    }
49}
50
51impl InternetStaticCompiledApplication for DisarkVersion {}