summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Schiffer <mschiffer@universe-factory.net>2024-04-20 16:38:35 +0200
committerMatthias Schiffer <mschiffer@universe-factory.net>2024-04-20 16:42:14 +0200
commit334f764cbffa8d591a007f0fec962f58cf0efde4 (patch)
tree3e6c4227b107693cd5d2298cd51cdaa015dda675
parentedf1d5a5cea4bfb662696f3b5c24dbd95e1733c1 (diff)
downloadrebel-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.lock15
-rw-r--r--crates/rebel-resolve/Cargo.toml16
-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.toml6
-rw-r--r--crates/rebel/src/driver.rs11
-rw-r--r--crates/rebel/src/main.rs20
-rw-r--r--crates/rebel/src/recipe.rs3
-rw-r--r--crates/rebel/src/template.rs3
13 files changed, 60 insertions, 36 deletions
diff --git a/Cargo.lock b/Cargo.lock
index df7f3f3..540988e 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -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('\'', "'\\''"))