Skip to content

Commit

Permalink
Re-organize the package using lib.rs
Browse files Browse the repository at this point in the history
  • Loading branch information
cuducos committed Sep 21, 2023
1 parent 284ca54 commit b29ca32
Show file tree
Hide file tree
Showing 8 changed files with 75 additions and 53 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- run: cargo fmt --check
- uses: dtolnay/rust-toolchain@nightly
- run: cargo +nightly fmt --check
clippy:
runs-on: ubuntu-latest
steps:
Expand Down
2 changes: 2 additions & 0 deletions .rustfmt.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
reorder_imports = true
group_imports = "StdExternalCrate"
2 changes: 1 addition & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 1 addition & 3 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
[package]
name = "createnv"
version = "0.1.0"
version = "0.0.3"
edition = "2021"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
anyhow = "1.0.71"
rand = "0.8.5"
63 changes: 63 additions & 0 deletions src/lib.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
mod model;
mod parser;
mod reader;
mod tokenizer;

use std::path::PathBuf;

use anyhow::Result;

use crate::parser::Parser;
use crate::{
model::{
AutoGeneratedVariable, Block, Comment, SimpleVariable, VariableType,
VariableWithRandomValue,
},
tokenizer::Tokenizer,
};

pub fn tokenize(path: &String) -> Result<()> {
let mut tokenizer = Tokenizer::new(PathBuf::from(path))?;
for token in tokenizer.tokenize()? {
println!("{}: {:?}", token.error_prefix(path), token);
}

Ok(())
}

pub fn parse(path: &String) -> Result<()> {
let mut parser = Parser::new(PathBuf::from(path))?;
for block in parser.parse()? {
println!("{block}");
}

Ok(())
}

pub fn model_to_text() -> Result<()> {
let title = Comment::new("42");
let description = Some(Comment::new("Fourty-two"));

let mut variable1 = SimpleVariable::new("ANSWER", None, None);
variable1.user_input("42");
let mut variable2 = SimpleVariable::new("AS_TEXT", None, None);
variable2.user_input("fourty two");
let variable3 = SimpleVariable::new("DEFAULT_VALUE_ONE", Some("default value"), None);
let mut variable4 = SimpleVariable::new("DEFAULT_VALUE_TWO", Some("default"), None);
variable4.user_input("custom");
let variable5 = VariableWithRandomValue::new("SECRET_KEY", None);
let variable6 = AutoGeneratedVariable::new("AUTO_GENERATED", "{ANSWER}-{DEFAULT_VALUE_ONE}");

let variables = vec![
VariableType::Input(variable1),
VariableType::Input(variable2),
VariableType::Input(variable3),
VariableType::Input(variable4),
VariableType::Random(variable5),
VariableType::AutoGenerated(variable6),
];
let block = Block::new(title, description, variables);
println!("{block}");

Ok(())
}
49 changes: 4 additions & 45 deletions src/main.rs
Original file line number Diff line number Diff line change
@@ -1,56 +1,15 @@
use std::env::args;
use std::path::PathBuf;

use anyhow::Result;

use crate::model::{
AutoGeneratedVariable, Block, Comment, SimpleVariable, VariableType, VariableWithRandomValue,
};
use crate::parser::Parser;
use crate::tokenizer::Tokenizer;

mod model;
mod parser;
mod reader;
mod tokenizer;
use createnv::{model_to_text, parse, tokenize};

fn main() -> Result<()> {
if let Some(path) = args().nth(1) {
let mut parser = Parser::new(PathBuf::from(&path))?;
for block in parser.parse()? {
println!("{block}");
}
parse(&path)?;
tokenize(&path)?;

let mut tokenizer = Tokenizer::new(PathBuf::from(&path))?;
let tokens = tokenizer.tokenize()?;
for token in &tokens {
println!("{}: {:?}", token.error_prefix(&path), token);
}
return Ok(());
}

let title = Comment::new("42");
let description = Some(Comment::new("Fourty-two"));

let mut variable1 = SimpleVariable::new("ANSWER", None, None);
variable1.user_input("42");
let mut variable2 = SimpleVariable::new("AS_TEXT", None, None);
variable2.user_input("fourty two");
let variable3 = SimpleVariable::new("DEFAULT_VALUE_ONE", Some("default value"), None);
let mut variable4 = SimpleVariable::new("DEFAULT_VALUE_TWO", Some("default"), None);
variable4.user_input("custom");
let variable5 = VariableWithRandomValue::new("SECRET_KEY", None);
let variable6 = AutoGeneratedVariable::new("AUTO_GENERATED", "{ANSWER}-{DEFAULT_VALUE_ONE}");

let variables = vec![
VariableType::Input(variable1),
VariableType::Input(variable2),
VariableType::Input(variable3),
VariableType::Input(variable4),
VariableType::Random(variable5),
VariableType::AutoGenerated(variable6),
];
let block = Block::new(title, description, variables);
println!("{block}");
Ok(())
model_to_text()
}
3 changes: 2 additions & 1 deletion src/model.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
use rand::{thread_rng, Rng};
use std::collections::HashMap;
use std::fmt;

use rand::{thread_rng, Rng};

const DEFAULT_RANDOM_CHARS: &str =
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*(-_=+)";

Expand Down
1 change: 0 additions & 1 deletion src/tokenizer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,6 @@ impl Tokenizer {
}
}

// TODO: move to tests/ as integration test?
#[cfg(test)]
mod tests {
use super::*;
Expand Down

0 comments on commit b29ca32

Please sign in to comment.