cli: add dev command for enums experiment

This commit is contained in:
Schrottkatze 2024-02-19 18:07:09 +01:00
parent 33a1d85318
commit 3af262258e
Signed by: schrottkatze
SSH key fingerprint: SHA256:hXb3t1vINBFCiDCmhRABHX5ocdbLiKyCdKI4HK2Rbbc
4 changed files with 43 additions and 4 deletions

1
Cargo.lock generated
View file

@ -66,6 +66,7 @@ dependencies = [
"eval",
"ir",
"owo-colors",
"prowocessing",
"ron",
"serde",
"serde_json",

View file

@ -11,6 +11,7 @@ clap = { workspace = true, features = [ "derive", "env" ] }
dirs = "5"
eval = { path = "../eval" }
ir = { path = "../ir" }
prowocessing = { path = "../prowocessing"}
owo-colors = "4"
ron = "0.8"
serde = { workspace = true, features = [ "derive" ] }

View file

@ -2,6 +2,7 @@ use std::{fs, path::PathBuf};
use clap::{Parser, Subcommand};
use config::{CliConfigs, Config};
use dev::DevCommands;
use welcome_msg::print_startup_msg;
mod config;
@ -24,7 +25,10 @@ enum Commands {
/// What file contains the pipeline to evaluate.
source: PathBuf,
},
Dev,
Dev {
#[command(subcommand)]
dev_command: DevCommands,
},
}
fn main() {
@ -46,8 +50,34 @@ fn main() {
machine.feed(ir);
machine.eval_full();
}
Commands::Dev => {
println!("Hello world!");
Commands::Dev { dev_command } => dev_command.run(),
}
}
mod dev {
use clap::Subcommand;
use prowocessing::experimental::enum_based::{Pipeline, PipelineBuilder};
#[derive(Subcommand)]
pub(crate) enum DevCommands {
Enums { test_str: String },
}
impl DevCommands {
pub fn run(self) {
match self {
DevCommands::Enums { test_str } => {
let upr = PipelineBuilder::new()
.insert(prowocessing::experimental::enum_based::Instruction::Uppercase)
.build();
let lwr = PipelineBuilder::new()
.insert(prowocessing::experimental::enum_based::Instruction::Lowercase)
.build();
println!("Upr: {}", upr.run(test_str.clone()));
println!("Lwr: {}", lwr.run(test_str.clone()));
}
}
}
}
}

View file

@ -7,7 +7,7 @@ use experimental::enum_based::{Instruction, PipelineBuilder};
/// just some experiments, to test whether the architecture i want is even possible (or how to do it). probably temporary.
/// Gonna first try string processing...
mod experimental {
pub mod experimental {
pub mod enum_based {
pub enum Instruction {
Uppercase,
@ -41,6 +41,7 @@ mod experimental {
}
}
#[must_use]
pub fn insert(mut self, instr: Instruction) -> Self {
self.pipeline.push(instr);
self
@ -66,6 +67,12 @@ mod experimental {
Pipeline { pipeline: res }
}
}
impl Default for PipelineBuilder {
fn default() -> Self {
Self::new()
}
}
}
}