From 9b82ec7acd7abc63a8449ff4e18879992a332f4d Mon Sep 17 00:00:00 2001 From: sim1222 Date: Wed, 24 Apr 2024 13:12:33 +0900 Subject: [PATCH] rider open --- src/main.rs | 44 +++++++++++++++++++++++++++++++++++++++----- 1 file changed, 39 insertions(+), 5 deletions(-) diff --git a/src/main.rs b/src/main.rs index 45472e4..9c290fb 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,5 +1,5 @@ -use std::env; use clap::Parser; +use std::env; extern crate dirs; @@ -7,6 +7,12 @@ extern crate dirs; #[command(author, version, about, long_about = None)] struct Args { name: String, + + #[arg(short, long)] + no_vs: bool, + + #[arg(short, long)] + rider: bool, } fn main() { @@ -63,8 +69,19 @@ fn main() { .unwrap(); println!("Project {} created", project_name); - println!("Opening in Visual Studio..."); + if !args.no_vs { + println!("Opening in Visual Studio..."); + open_vs(&format!("{}/{}.sln", project_name, project_name)); + } + + if args.rider { + println!("Opening in Rider..."); + open_rider(&format!("{}/{}.sln", project_name, project_name)); + } +} + +fn open_vs(proj: &str) { let devenv_paths = [ r#"C:\Program Files\Microsoft Visual Studio\2022\Professional\Common7\IDE\devenv.exe"#, r#"C:\Program Files (x86)\Microsoft Visual Studio\2022\Professional\Common7\IDE\devenv.exe"#, @@ -75,11 +92,28 @@ fn main() { devenv_paths.iter().for_each(|path| { if std::fs::metadata(path).is_ok() { std::process::Command::new(path) - .arg(format!("{}/{}.sln", project_name, project_name)) + .arg(proj) .spawn() .expect("Failed to open Visual Studio"); - - std::process::exit(0); + } + }); +} + +fn open_rider(proj: &str) { + let home_dir = dirs::home_dir().unwrap(); + let appdata_path = format!( + "{}/AppData/Local/Programs/Rider/bin/rider64.exe", + home_dir.to_str().unwrap() + ); + + let rider_paths = ["rider64.exe", &appdata_path]; + + rider_paths.iter().for_each(|path| { + if std::fs::metadata(path).is_ok() { + std::process::Command::new(path) + .arg(proj) + .spawn() + .expect("Failed to open Rider"); } }); }