changepacks_cli/options/
language_options.rs1use 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}
11
12impl From<CliLanguage> for Language {
13 fn from(value: CliLanguage) -> Self {
14 match value {
15 CliLanguage::Python => Language::Python,
16 CliLanguage::Node => Language::Node,
17 CliLanguage::Rust => Language::Rust,
18 CliLanguage::Dart => Language::Dart,
19 }
20 }
21}
22
23#[cfg(test)]
24mod tests {
25 use super::*;
26 use rstest::rstest;
27
28 #[rstest]
29 #[case(CliLanguage::Python, Language::Python)]
30 #[case(CliLanguage::Node, Language::Node)]
31 #[case(CliLanguage::Rust, Language::Rust)]
32 #[case(CliLanguage::Dart, Language::Dart)]
33 fn test_cli_language_to_language(#[case] cli_lang: CliLanguage, #[case] expected: Language) {
34 let result: Language = cli_lang.into();
35 assert_eq!(result, expected);
36 }
37}