summaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
authorolivia <olivia@fastmail.com>2018-11-09 20:31:14 +0100
committerolivia <olivia@fastmail.com>2018-11-09 20:31:14 +0100
commitf7846af7ac388652a6f80a2bbce926ba8f053062 (patch)
tree954ee36257047ac612654c5f35e18ed27deda97f /src/main.rs
parent850a13e9133fedb2fce27884902e0aab94da9692 (diff)
right let's try this one again
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs55
1 files changed, 39 insertions, 16 deletions
diff --git a/src/main.rs b/src/main.rs
index 02f0227..cf2eddd 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -1,21 +1,44 @@
#[macro_use]
-extern crate quicli;
-extern crate ansi_term;
+extern crate clap;
+extern crate indicatif;
+extern crate console;
-use ansi_term::Color::Yellow;
-use quicli::prelude::*;
+use clap::{App, SubCommand};
+use indicatif::{ProgressBar};
+use console::{style, Emoji};
+use std::process::Command;
-mod helpers;
-mod about_variables;
-
-#[derive(Debug, StructOpt)]
-struct Cli {
- exercise: Option<String>,
+fn main() {
+ let matches = App::new("r2")
+ .version(crate_version!())
+ .author("Olivia Hugger")
+ .about("Test")
+ .subcommand(SubCommand::with_name("verify").alias("v"))
+ .get_matches();
+
+ if let Some(_) = matches.subcommand_matches("verify") {
+ execute("exercises/ex1.rs");
+ execute("exercises/ex2.rs");
+ execute("exercises/ex3.rs");
+ execute("exercises/ex4.rs");
+ execute("exercises/ex5.rs");
+ }
}
-main!(|args: Cli| if let Some(e) = args.exercise {
- println!("selected {}", e);
-} else {
- println!("Welcome to {}!\n", Yellow.paint("Rustlings"));
- about_variables::exec();
-});
+fn execute(filename: &str) {
+ let bar = ProgressBar::new_spinner();
+ bar.set_message(format!("Compiling {}...", filename).as_str());
+ bar.enable_steady_tick(100);
+ let compilecmd = Command::new("rustc")
+ .args(&[filename, "-o", "temp"])
+ .output()
+ .expect("fail");
+ bar.finish_and_clear();
+ if compilecmd.status.success() {
+ println!("{} Successfully compiled {}!", Emoji("✅", "✓"), style(filename).italic());
+ } else {
+ println!("{} Compilation of {} failed! Compiler error message:\n", Emoji("⚠️ ", "!"), style(filename).italic());
+ println!("{}", String::from_utf8_lossy(&compilecmd.stderr));
+ std::process::exit(1);
+ }
+}