From a7bc03c275e179d8acfc888227664692dd1f9e0d Mon Sep 17 00:00:00 2001 From: Tristan Sloughter Date: Mon, 2 Sep 2024 03:23:45 -0600 Subject: [PATCH] fix: languages command to print all languages Added strum as a dep to iterate over enums. less important for languages where we have only 3 but may be more useful when it comes to components and not leaving any of those out. --- Cargo.lock | 29 +++++++++++++++++++++++++++++ Cargo.toml | 1 + src/languages.rs | 12 +++++++++--- src/main.rs | 8 ++++++-- 4 files changed, 45 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0abeb10..33309cc 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -180,6 +180,7 @@ dependencies = [ "octocrab", "serde", "shell-words", + "strum", "tar", "tempdir", "tokio", @@ -1563,6 +1564,12 @@ dependencies = [ "untrusted", ] +[[package]] +name = "rustversion" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" + [[package]] name = "ryu" version = "1.0.18" @@ -1775,6 +1782,28 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" +[[package]] +name = "strum" +version = "0.26.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" +dependencies = [ + "strum_macros", +] + +[[package]] +name = "strum_macros" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "rustversion", + "syn", +] + [[package]] name = "subtle" version = "2.6.1" diff --git a/Cargo.toml b/Cargo.toml index ae261d0..4a580c2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -31,6 +31,7 @@ console = "0.15.8" num_cpus = "1.8.0" shell-words = "1.0.0" octocrab = "0.38.0" +strum = { version = "0.26", features = ["derive"] } tokio = { version = "1.17.0", features = ["macros", "rt-multi-thread"] } bytes = { version = "1.6.1", features = [] } flate2 = "1.0.30" diff --git a/src/languages.rs b/src/languages.rs index b27a8ea..0d1d944 100644 --- a/src/languages.rs +++ b/src/languages.rs @@ -2,7 +2,7 @@ use crate::github::GithubRepo; use crate::languages; use clap::ValueEnum; use color_eyre::{eyre::eyre, eyre::Result}; - +use strum::IntoEnumIterator; pub mod elixir; pub mod erlang; pub mod gleam; @@ -55,11 +55,17 @@ pub const BIN_MAP: &[(&str, languages::Language)] = &[ ("mix.ps1", languages::Language::Elixir), ]; -#[derive(ValueEnum, Debug, Clone, PartialEq)] +#[derive(ValueEnum, Debug, Clone, PartialEq, EnumIter)] pub enum Language { + Elixir, Erlang, Gleam, - Elixir, +} + +pub fn print() { + for l in Language::iter() { + println!("{:?}", l); + } } impl std::fmt::Display for Language { diff --git a/src/main.rs b/src/main.rs index 7b5a20b..26ab448 100644 --- a/src/main.rs +++ b/src/main.rs @@ -2,6 +2,9 @@ extern crate clap; #[macro_use] extern crate log; +#[macro_use] +extern crate strum; + use clap::{Args, Command, CommandFactory, Parser, Subcommand}; use clap_complete::{generate, Generator, Shell}; use console::style; @@ -11,7 +14,9 @@ use std::io::Write; use std::path::Path; use std::path::PathBuf; use std::process; + mod config; + use color_eyre::{eyre::eyre, eyre::Report, eyre::Result}; mod git; @@ -253,8 +258,7 @@ fn handle_command(_bin_path: PathBuf) -> Result<(), Report> { SubCommands::Languages => { debug!("running list"); println!("Languages:\n"); - println!("erlang"); - println!("gleam"); + languages::print(); Ok(()) } SubCommands::List => {