changepacks_cli/options/
language_options.rs

1use changepacks_core::Language;
2use clap::ValueEnum;
3
4#[derive(ValueEnum, Debug, Clone, Copy, PartialEq, Eq)]
5pub enum CliLanguage {
6    Python,
7    Node,
8    Rust,
9    Dart,
10    Java,
11}
12
13impl From<CliLanguage> for Language {
14    fn from(value: CliLanguage) -> Self {
15        match value {
16            CliLanguage::Python => Language::Python,
17            CliLanguage::Node => Language::Node,
18            CliLanguage::Rust => Language::Rust,
19            CliLanguage::Dart => Language::Dart,
20            CliLanguage::Java => Language::Java,
21        }
22    }
23}
24
25#[cfg(test)]
26mod tests {
27    use super::*;
28    use rstest::rstest;
29
30    #[rstest]
31    #[case(CliLanguage::Python, Language::Python)]
32    #[case(CliLanguage::Node, Language::Node)]
33    #[case(CliLanguage::Rust, Language::Rust)]
34    #[case(CliLanguage::Dart, Language::Dart)]
35    #[case(CliLanguage::Java, Language::Java)]
36    fn test_cli_language_to_language(#[case] cli_lang: CliLanguage, #[case] expected: Language) {
37        let result: Language = cli_lang.into();
38        assert_eq!(result, expected);
39    }
40}