Skip to content

Commit

Permalink
Add pretty menu
Browse files Browse the repository at this point in the history
  • Loading branch information
emi2k01 committed Jun 21, 2022
1 parent 261e887 commit 160cc0e
Show file tree
Hide file tree
Showing 3 changed files with 254 additions and 7 deletions.
226 changes: 226 additions & 0 deletions Cargo.lock

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

1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ edition = "2021"
anyhow = "1.0.58"
clap = { version = "3.2.6", features = ["derive"] }
colorize = "0.1.0"
inquire = "0.1.0"
regex = "1.5.6"
serde = { version = "1.0.137", features = ["derive"] }
temp-file = "0.1.7"
Expand Down
34 changes: 27 additions & 7 deletions src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,11 @@ use std::{collections::HashMap, path::PathBuf};
use anyhow::Context;
use clap::Parser;
use colorize::AnsiColor;
use inquire::{Select, Text};
use regex::Regex;
use serde::Deserialize;

#[derive(Deserialize)]
#[derive(Default, Deserialize)]
struct Template {
#[allow(unused)]
label: String,
Expand All @@ -20,29 +21,48 @@ struct Template {

#[derive(Parser)]
struct App {
#[clap(short)]
template: String,
/// Pass variables to template using the syntax `var=value`
#[clap(short)]
vars: Vec<String>,
}

fn main() -> anyhow::Result<()> {
let app = App::parse();
let templates = read_templates_file()?;

let template = if let Some(template) = templates.get(&app.template) {
template
let app = App::try_parse();

let template;
let mut vars = vec![];
if let Ok(app) = app {
if let Some(t) = templates.get(&app.template) {
template = t;
} else {
print_error("template does not exist");
std::process::exit(1);
}
vars = app.vars;
} else {
print_error(format!("{} does not exist", app.template));
std::process::exit(1);
let template_key = Select::new("Choose a template:", templates.keys().collect()).prompt()?;
if let Some(t) = templates.get(template_key) {
template = t;
} else {
print_error("template does not exist");
std::process::exit(1);
}
for var in &template.vars {
let value = Text::new(&format!("Value for `{var}`:")).prompt()?;
vars.push(format!("{var}={value}"));
}
};

let mut title = template.title.clone();
let mut body = template.body.clone();
let mut branch_pattern = template.branch_pattern.clone();

for template_var in &template.vars {
for var_pair in &app.vars {
for var_pair in &vars {
let mut var_pair = var_pair.split('=');
let var = var_pair
.next()
Expand Down

0 comments on commit 160cc0e

Please sign in to comment.