diff options
author | Matthias Schiffer <mschiffer@universe-factory.net> | 2024-04-20 16:38:35 +0200 |
---|---|---|
committer | Matthias Schiffer <mschiffer@universe-factory.net> | 2024-04-20 16:42:14 +0200 |
commit | 334f764cbffa8d591a007f0fec962f58cf0efde4 (patch) | |
tree | 3e6c4227b107693cd5d2298cd51cdaa015dda675 | |
parent | edf1d5a5cea4bfb662696f3b5c24dbd95e1733c1 (diff) | |
download | rebel-334f764cbffa8d591a007f0fec962f58cf0efde4.tar rebel-334f764cbffa8d591a007f0fec962f58cf0efde4.zip |
Introduce rebel-resolve module
It would be nice to reduce the dependencies of the driver on the context
further, so more of rebel-resolve can become private.
-rw-r--r-- | Cargo.lock | 15 | ||||
-rw-r--r-- | crates/rebel-resolve/Cargo.toml | 16 | ||||
-rw-r--r-- | crates/rebel-resolve/src/args.rs (renamed from crates/rebel/src/args.rs) | 0 | ||||
-rw-r--r-- | crates/rebel-resolve/src/context.rs (renamed from crates/rebel/src/context.rs) | 0 | ||||
-rw-r--r-- | crates/rebel-resolve/src/lib.rs (renamed from crates/rebel/src/resolve.rs) | 10 | ||||
-rw-r--r-- | crates/rebel-resolve/src/paths.rs (renamed from crates/rebel/src/paths.rs) | 0 | ||||
-rw-r--r-- | crates/rebel-resolve/src/pin.rs (renamed from crates/rebel/src/pin.rs) | 12 | ||||
-rw-r--r-- | crates/rebel-resolve/src/task.rs (renamed from crates/rebel/src/task.rs) | 0 | ||||
-rw-r--r-- | crates/rebel/Cargo.toml | 6 | ||||
-rw-r--r-- | crates/rebel/src/driver.rs | 11 | ||||
-rw-r--r-- | crates/rebel/src/main.rs | 20 | ||||
-rw-r--r-- | crates/rebel/src/recipe.rs | 3 | ||||
-rw-r--r-- | crates/rebel/src/template.rs | 3 |
13 files changed, 60 insertions, 36 deletions
@@ -483,14 +483,12 @@ name = "rebel" version = "0.1.0" dependencies = [ "clap", - "deb-version", - "enum-kinds", "handlebars", "indoc", "lazy_static", "nix", "rebel-common", - "rebel-parse", + "rebel-resolve", "rebel-runner", "serde", "serde_yaml", @@ -513,6 +511,17 @@ dependencies = [ ] [[package]] +name = "rebel-resolve" +version = "0.1.0" +dependencies = [ + "deb-version", + "enum-kinds", + "rebel-common", + "rebel-parse", + "serde", +] + +[[package]] name = "rebel-runner" version = "0.1.0" dependencies = [ diff --git a/crates/rebel-resolve/Cargo.toml b/crates/rebel-resolve/Cargo.toml new file mode 100644 index 0000000..65eae78 --- /dev/null +++ b/crates/rebel-resolve/Cargo.toml @@ -0,0 +1,16 @@ +[package] +name = "rebel-resolve" +version = "0.1.0" +authors = ["Matthias Schiffer <mschiffer@universe-factory.net>"] +license = "MIT" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +rebel-common = { path = "../rebel-common" } +rebel-parse = { path = "../rebel-parse" } + +deb-version = "0.1.1" +enum-kinds = "0.5.1" +serde = { version = "1", features = ["derive", "rc"] } diff --git a/crates/rebel/src/args.rs b/crates/rebel-resolve/src/args.rs index 805646a..805646a 100644 --- a/crates/rebel/src/args.rs +++ b/crates/rebel-resolve/src/args.rs diff --git a/crates/rebel/src/context.rs b/crates/rebel-resolve/src/context.rs index b8090d1..b8090d1 100644 --- a/crates/rebel/src/context.rs +++ b/crates/rebel-resolve/src/context.rs diff --git a/crates/rebel/src/resolve.rs b/crates/rebel-resolve/src/lib.rs index a57263a..cc44de8 100644 --- a/crates/rebel/src/resolve.rs +++ b/crates/rebel-resolve/src/lib.rs @@ -1,11 +1,17 @@ +pub mod args; +pub mod context; +pub mod paths; +pub mod pin; +pub mod task; + use std::collections::{HashMap, HashSet}; use std::fmt; use std::rc::Rc; use rebel_common::types::TaskIDRef; -use crate::args::TaskArgs; -use crate::context::{self, Context, OutputRef, TaskRef}; +use args::TaskArgs; +use context::{Context, OutputRef, TaskRef}; #[derive(Debug, Default)] pub struct DepChain<'ctx>(pub Vec<TaskRef<'ctx>>); diff --git a/crates/rebel/src/paths.rs b/crates/rebel-resolve/src/paths.rs index 274dda1..274dda1 100644 --- a/crates/rebel/src/paths.rs +++ b/crates/rebel-resolve/src/paths.rs diff --git a/crates/rebel/src/pin.rs b/crates/rebel-resolve/src/pin.rs index bb98e2e..bffc940 100644 --- a/crates/rebel/src/pin.rs +++ b/crates/rebel-resolve/src/pin.rs @@ -1,8 +1,8 @@ -use std::{collections::HashMap, fs::File, path::Path}; +use std::collections::HashMap; use serde::{Deserialize, Serialize}; -use rebel_common::{error::*, string_hash::*}; +use rebel_common::string_hash::*; #[derive(Clone, Debug, Deserialize, Serialize)] pub struct Args { @@ -29,11 +29,3 @@ pub struct Pin { } pub type Pins = HashMap<String, Pin>; - -pub fn read_pins<P: AsRef<Path>>(path: P) -> Result<Pins> { - let f = File::open(path)?; - let pins: Pins = serde_yaml::from_reader(f) - .map_err(Error::new) - .context("YAML error")?; - Ok(pins) -} diff --git a/crates/rebel/src/task.rs b/crates/rebel-resolve/src/task.rs index 1220d45..1220d45 100644 --- a/crates/rebel/src/task.rs +++ b/crates/rebel-resolve/src/task.rs diff --git a/crates/rebel/Cargo.toml b/crates/rebel/Cargo.toml index 18f85e1..e9a399e 100644 --- a/crates/rebel/Cargo.toml +++ b/crates/rebel/Cargo.toml @@ -9,16 +9,14 @@ edition = "2021" [dependencies] rebel-common = { path = "../rebel-common" } -rebel-parse = { path = "../rebel-parse" } +rebel-resolve = { path = "../rebel-resolve" } rebel-runner = { path = "../rebel-runner" } clap = { version = "4.0.0", features = ["derive"] } -deb-version = "0.1.1" -enum-kinds = "0.5.1" handlebars = "5.1.2" indoc = "2.0.4" lazy_static = "1.4.0" nix = { version = "0.28.0", features = ["poll", "signal"] } -serde = { version = "1", features = ["derive", "rc"] } +serde = { version = "1", features = ["derive"] } serde_yaml = "0.9" walkdir = "2" diff --git a/crates/rebel/src/driver.rs b/crates/rebel/src/driver.rs index 61ac06e..e4de2a7 100644 --- a/crates/rebel/src/driver.rs +++ b/crates/rebel/src/driver.rs @@ -14,14 +14,15 @@ use nix::{ }; use rebel_common::{error::*, string_hash::*, types::*}; -use rebel_runner::Runner; - -use crate::{ +use rebel_resolve::{ + self as resolve, context::{Context, OutputRef, TaskRef}, - paths, resolve, + paths, task::*, - template, }; +use rebel_runner::Runner; + +use crate::template; #[derive(Debug)] pub struct CompletionState<'ctx> { diff --git a/crates/rebel/src/main.rs b/crates/rebel/src/main.rs index 76b4551..fe0671b 100644 --- a/crates/rebel/src/main.rs +++ b/crates/rebel/src/main.rs @@ -1,17 +1,13 @@ -mod args; -mod context; mod driver; -mod paths; -mod pin; mod recipe; -mod resolve; -mod task; mod template; -use std::collections::HashSet; +use std::{collections::HashSet, fs::File, path::Path}; use clap::Parser; +use rebel_common::error::*; +use rebel_resolve::{self as resolve, context, pin}; use rebel_runner::{self as runner, Runner}; #[derive(Parser)] @@ -29,6 +25,14 @@ struct Opts { tasks: Vec<String>, } +fn read_pins<P: AsRef<Path>>(path: P) -> Result<pin::Pins> { + let f = File::open(path)?; + let pins: pin::Pins = serde_yaml::from_reader(f) + .map_err(Error::new) + .context("YAML error")?; + Ok(pins) +} + fn main() { let opts: Opts = Opts::parse(); @@ -36,7 +40,7 @@ fn main() { let ctx = context::Context::new( recipe::read_recipes("examples/recipes").unwrap(), - pin::read_pins("examples/pins.yml").unwrap(), + read_pins("examples/pins.yml").unwrap(), ) .unwrap(); diff --git a/crates/rebel/src/recipe.rs b/crates/rebel/src/recipe.rs index d0bb47e..28cc84c 100644 --- a/crates/rebel/src/recipe.rs +++ b/crates/rebel/src/recipe.rs @@ -4,8 +4,7 @@ use serde::{de::DeserializeOwned, Deserialize}; use walkdir::WalkDir; use rebel_common::error::*; - -use crate::task::{TaskDef, TaskMeta}; +use rebel_resolve::task::{TaskDef, TaskMeta}; #[derive(Clone, Debug, Deserialize, Default)] pub struct RecipeMeta { diff --git a/crates/rebel/src/template.rs b/crates/rebel/src/template.rs index 7c30508..50fb334 100644 --- a/crates/rebel/src/template.rs +++ b/crates/rebel/src/template.rs @@ -2,8 +2,7 @@ use handlebars::Handlebars; use lazy_static::lazy_static; use rebel_common::error::*; - -use crate::args::TaskArgs; +use rebel_resolve::args::TaskArgs; fn escape_sh(s: &str) -> String { format!("'{}'", s.replace('\'', "'\\''")) |