summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorolivia <olivia@fastmail.com>2018-11-14 20:12:20 +0100
committerolivia <olivia@fastmail.com>2018-11-14 20:12:20 +0100
commit6baac88574f8a0774d536db9998c51176620e51b (patch)
tree1a3ac1486b7b9a45eb9667e8bd8cf883e318edd0
parentb8789f09e012e7635d2e618179d4e085456393f1 (diff)
fmt
-rw-r--r--src/main.rs235
1 files changed, 124 insertions, 111 deletions
diff --git a/src/main.rs b/src/main.rs
index 0bb2fc0..8e7172c 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -1,129 +1,142 @@
#[macro_use]
extern crate clap;
-extern crate indicatif;
extern crate console;
+extern crate indicatif;
use clap::{App, SubCommand};
-use indicatif::{ProgressBar};
use console::{style, Emoji};
-use std::process::Command;
+use indicatif::ProgressBar;
use std::fs::remove_file;
+use std::process::Command;
fn main() {
- let matches = App::new("r2")
- .version(crate_version!())
- .author("Olivia Hugger")
- .about("Test")
- .subcommand(SubCommand::with_name("verify").alias("v"))
- .get_matches();
-
- println!(r#" _ _ _ "#);
- println!(r#" _ __ _ _ ___| |_| (_)_ __ __ _ ___ "#);
- println!(r#" | '__| | | / __| __| | | '_ \ / _` / __| "#);
- println!(r#" | | | |_| \__ \ |_| | | | | | (_| \__ \ "#);
- println!(r#" |_| \__,_|___/\__|_|_|_| |_|\__, |___/ "#);
- println!(r#" |___/ "#);
- println!("");
-
- if let Some(_) = matches.subcommand_matches("verify") {
- compile_only("exercises/ex1.rs");
- compile_only("exercises/ex2.rs");
- compile_only("exercises/ex3.rs");
- compile_only("exercises/ex4.rs");
- compile_only("exercises/ex5.rs");
-
- compile_only("exercises/variables/variables1.rs");
- compile_only("exercises/variables/variables2.rs");
- compile_only("exercises/variables/variables3.rs");
- compile_only("exercises/variables/variables4.rs");
-
- compile_only("exercises/functions/functions1.rs");
- compile_only("exercises/functions/functions2.rs");
- compile_only("exercises/functions/functions3.rs");
- compile_only("exercises/functions/functions4.rs");
- compile_only("exercises/functions/functions5.rs");
-
- compile_only("exercises/primitive_types/primitive_types1.rs");
- compile_only("exercises/primitive_types/primitive_types2.rs");
- compile_only("exercises/primitive_types/primitive_types3.rs");
- compile_only("exercises/primitive_types/primitive_types4.rs");
- compile_only("exercises/primitive_types/primitive_types5.rs");
- compile_only("exercises/primitive_types/primitive_types6.rs");
-
- test("exercises/tests/tests1.rs");
- test("exercises/tests/tests2.rs");
- test("exercises/tests/tests3.rs");
- test("exercises/tests/tests4.rs");
-
- test("exercises/if/if1.rs");
-
- compile_only("exercises/strings/strings1.rs");
- compile_only("exercises/strings/strings2.rs");
- compile_only("exercises/strings/strings3.rs");
-
- compile_only("exercises/move_semantics/move_semantics1.rs");
- compile_only("exercises/move_semantics/move_semantics2.rs");
- compile_only("exercises/move_semantics/move_semantics3.rs");
- compile_only("exercises/move_semantics/move_semantics4.rs");
-
- compile_only("exercises/modules/modules1.rs");
- compile_only("exercises/modules/modules2.rs");
-
- compile_only("exercises/macros/macros1.rs");
- compile_only("exercises/macros/macros2.rs");
- compile_only("exercises/macros/macros3.rs");
- compile_only("exercises/macros/macros4.rs");
-
- test("exercises/error_handling/errors1.rs");
- test("exercises/error_handling/errors2.rs");
- test("exercises/error_handling/errors3.rs");
- test("exercises/error_handling/errorsn.rs");
- compile_only("exercises/error_handling/option1.rs");
- test("exercises/error_handling/result1.rs");
- }
+ let matches = App::new("r2")
+ .version(crate_version!())
+ .author("Olivia Hugger")
+ .about("Test")
+ .subcommand(SubCommand::with_name("verify").alias("v"))
+ .subcommand(SubCommand::with_name("run").alias("r"))
+ .get_matches();
+
+ println!(r#" _ _ _ "#);
+ println!(r#" _ __ _ _ ___| |_| (_)_ __ __ _ ___ "#);
+ println!(r#" | '__| | | / __| __| | | '_ \ / _` / __| "#);
+ println!(r#" | | | |_| \__ \ |_| | | | | | (_| \__ \ "#);
+ println!(r#" |_| \__,_|___/\__|_|_|_| |_|\__, |___/ "#);
+ println!(r#" |___/ "#);
+ println!("");
+
+ if let Some(_) = matches.subcommand_matches("verify") {
+ compile_only("exercises/ex1.rs");
+ compile_only("exercises/ex2.rs");
+ compile_only("exercises/ex3.rs");
+ compile_only("exercises/ex4.rs");
+ compile_only("exercises/ex5.rs");
+
+ compile_only("exercises/variables/variables1.rs");
+ compile_only("exercises/variables/variables2.rs");
+ compile_only("exercises/variables/variables3.rs");
+ compile_only("exercises/variables/variables4.rs");
+
+ compile_only("exercises/functions/functions1.rs");
+ compile_only("exercises/functions/functions2.rs");
+ compile_only("exercises/functions/functions3.rs");
+ compile_only("exercises/functions/functions4.rs");
+ compile_only("exercises/functions/functions5.rs");
+
+ compile_only("exercises/primitive_types/primitive_types1.rs");
+ compile_only("exercises/primitive_types/primitive_types2.rs");
+ compile_only("exercises/primitive_types/primitive_types3.rs");
+ compile_only("exercises/primitive_types/primitive_types4.rs");
+ compile_only("exercises/primitive_types/primitive_types5.rs");
+ compile_only("exercises/primitive_types/primitive_types6.rs");
+
+ test("exercises/tests/tests1.rs");
+ test("exercises/tests/tests2.rs");
+ test("exercises/tests/tests3.rs");
+ test("exercises/tests/tests4.rs");
+
+ test("exercises/if/if1.rs");
+
+ compile_only("exercises/strings/strings1.rs");
+ compile_only("exercises/strings/strings2.rs");
+ compile_only("exercises/strings/strings3.rs");
+
+ compile_only("exercises/move_semantics/move_semantics1.rs");
+ compile_only("exercises/move_semantics/move_semantics2.rs");
+ compile_only("exercises/move_semantics/move_semantics3.rs");
+ compile_only("exercises/move_semantics/move_semantics4.rs");
+
+ compile_only("exercises/modules/modules1.rs");
+ compile_only("exercises/modules/modules2.rs");
+
+ compile_only("exercises/macros/macros1.rs");
+ compile_only("exercises/macros/macros2.rs");
+ compile_only("exercises/macros/macros3.rs");
+ compile_only("exercises/macros/macros4.rs");
+
+ test("exercises/error_handling/errors1.rs");
+ test("exercises/error_handling/errors2.rs");
+ test("exercises/error_handling/errors3.rs");
+ test("exercises/error_handling/errorsn.rs");
+ compile_only("exercises/error_handling/option1.rs");
+ test("exercises/error_handling/result1.rs");
+ }
}
fn compile_only(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() {
- let formatstr = format!("{} Successfully compiled {}!", Emoji("✅", "✓"), filename);
- println!("{}", style(formatstr).green());
- clean().unwrap();
- } else {
- let formatstr = format!("{} Compilation of {} failed! Compiler error message:\n", Emoji("⚠️ ", "!"), filename);
- println!("{}", style(formatstr).red());
- println!("{}", String::from_utf8_lossy(&compilecmd.stderr));
- clean().unwrap();
- std::process::exit(1);
- }
+ 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() {
+ let formatstr = format!(
+ "{} Successfully compiled {}!",
+ Emoji("✅", "✓"),
+ filename
+ );
+ println!("{}", style(formatstr).green());
+ clean().unwrap();
+ } else {
+ let formatstr = format!(
+ "{} Compilation of {} failed! Compiler error message:\n",
+ Emoji("⚠️ ", "!"),
+ filename
+ );
+ println!("{}", style(formatstr).red());
+ println!("{}", String::from_utf8_lossy(&compilecmd.stderr));
+ clean().unwrap();
+ std::process::exit(1);
+ }
}
fn test(filename: &str) {
- let bar = ProgressBar::new_spinner();
- bar.set_message(format!("Testing {}...", filename).as_str());
- bar.enable_steady_tick(100);
- let testcmd = Command::new("rustc")
- .args(&["--test", filename, "-o", "temp"])
- .output()
- .expect("fail");
- bar.finish_and_clear();
- if testcmd.status.success() {
- let formatstr = format!("{} Successfully tested {}!", Emoji("✅", "✓"), filename);
- println!("{}", style(formatstr).green());
- clean().unwrap();
- } else {
- let formatstr = format!("{} Testing of {} failed! Please try again.", Emoji("⚠️ ", "!"), filename);
- println!("{}", style(formatstr).red());
- clean().unwrap();
- std::process::exit(1);
- }
+ let bar = ProgressBar::new_spinner();
+ bar.set_message(format!("Testing {}...", filename).as_str());
+ bar.enable_steady_tick(100);
+ let testcmd = Command::new("rustc")
+ .args(&["--test", filename, "-o", "temp"])
+ .output()
+ .expect("fail");
+ bar.finish_and_clear();
+ if testcmd.status.success() {
+ let formatstr = format!("{} Successfully tested {}!", Emoji("✅", "✓"), filename);
+ println!("{}", style(formatstr).green());
+ clean().unwrap();
+ } else {
+ let formatstr = format!(
+ "{} Testing of {} failed! Please try again.",
+ Emoji("⚠️ ", "!"),
+ filename
+ );
+ println!("{}", style(formatstr).red());
+ clean().unwrap();
+ std::process::exit(1);
+ }
}
fn clean() -> Result<(), std::io::Error> {