summaryrefslogtreecommitdiffstats
path: root/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs23
1 files changed, 18 insertions, 5 deletions
diff --git a/src/main.rs b/src/main.rs
index 527c2f2..2158e50 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -10,7 +10,18 @@ use std::path::Path;
use types::*;
+use clap::Clap;
+
+#[derive(Clap)]
+#[clap(version = clap::crate_version!())]
+struct Opts {
+ #[clap(name = "task", required = true)]
+ tasks: Vec<String>,
+}
+
fn main() {
+ let opts: Opts = Opts::parse();
+
let runner = unsafe { runner::runc::RuncRunner::new() }.unwrap();
let recipes = recipe::read_recipes(Path::new("examples")).unwrap();
@@ -25,12 +36,14 @@ fn main() {
let mut rsv = resolve::Resolver::new(&tasks);
- let errors = rsv.add_goal(&"ls:build".to_string());
- if !errors.is_empty() {
- for error in errors {
- eprintln!("{}", error);
+ for task in opts.tasks {
+ let errors = rsv.add_goal(&task);
+ if !errors.is_empty() {
+ for error in errors {
+ eprintln!("{}", error);
+ }
+ std::process::exit(1);
}
- std::process::exit(1);
}
let taskset = rsv.to_taskset();
let mut exc = executor::Executor::new(&tasks, taskset).unwrap();