@@ -1,8 +1,11 @@
|
||||
use plan::Plan;
|
||||
use plan::{ClonedPlan, Plan};
|
||||
use project::ProjectPlan;
|
||||
use state::ValidatedState;
|
||||
|
||||
mod plan;
|
||||
mod project;
|
||||
mod schema_validator;
|
||||
mod state;
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() -> anyhow::Result<()> {
|
||||
@@ -13,6 +16,8 @@ async fn main() -> anyhow::Result<()> {
|
||||
.prepare_project()
|
||||
.await?
|
||||
.prepare_plan()
|
||||
.await?
|
||||
.build_state()
|
||||
.await?;
|
||||
|
||||
Ok(())
|
||||
@@ -25,7 +30,7 @@ struct PrepareProject {
|
||||
|
||||
struct PreparePlan {
|
||||
project: Option<ProjectPlan>,
|
||||
plan: Option<Plan>,
|
||||
plan: Option<ClonedPlan>,
|
||||
}
|
||||
|
||||
struct Cuddle<S = Start> {
|
||||
@@ -54,13 +59,32 @@ impl Cuddle<Start> {
|
||||
|
||||
impl Cuddle<PrepareProject> {
|
||||
pub async fn prepare_plan(&self) -> anyhow::Result<Cuddle<PreparePlan>> {
|
||||
if let Some(project) = &self.state.project {
|
||||
match Plan::new().clone_from_project(project).await? {
|
||||
Some(plan) => todo!(),
|
||||
None => todo!(),
|
||||
}
|
||||
}
|
||||
let plan = if let Some(project) = &self.state.project {
|
||||
Plan::new().clone_from_project(project).await?
|
||||
} else {
|
||||
None
|
||||
};
|
||||
|
||||
todo!()
|
||||
Ok(Cuddle {
|
||||
state: PreparePlan {
|
||||
project: self.state.project.clone(),
|
||||
plan,
|
||||
},
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
impl Cuddle<PreparePlan> {
|
||||
pub async fn build_state(&self) -> anyhow::Result<Cuddle<ValidatedState>> {
|
||||
let state = if let Some(project) = &self.state.project {
|
||||
let state = state::State::new();
|
||||
let raw_state = state.build_state(project, &self.state.plan).await?;
|
||||
|
||||
state.validate_state(&raw_state).await?
|
||||
} else {
|
||||
ValidatedState {}
|
||||
};
|
||||
|
||||
Ok(Cuddle { state })
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user