add: rewriter logic and tests
This commit is contained in:
51
src/main.rs
Normal file
51
src/main.rs
Normal file
@@ -0,0 +1,51 @@
|
||||
use clap::Parser;
|
||||
|
||||
mod rewriter;
|
||||
|
||||
use env_logger::Env;
|
||||
use log::info;
|
||||
use rewriter::Rewriter;
|
||||
|
||||
/// Implements a HTTP server which allows clients to 'register'
|
||||
/// themselves. Their IP address will be used to replace a
|
||||
/// needle in a set of config files. This is intended to be
|
||||
/// used as a low-cost way of enabling Kubernetes ingress
|
||||
/// using nginx running on a machine that has a public port.
|
||||
///
|
||||
/// The needle is expected to be a dummy IP address; something
|
||||
/// fairly unique. The goal is to replace nginx files, where
|
||||
/// we often repeat lines if we want nginx to load balance between
|
||||
/// multiple destination IPs.
|
||||
#[derive(Parser, Debug)]
|
||||
#[command(version, about, long_about = None)]
|
||||
struct Args {
|
||||
/// The needle that will be replaced. Anytime a line
|
||||
/// is encountered with this needle, the line is dropped
|
||||
/// and instead N lines (one per replacement) is added to
|
||||
/// the output.
|
||||
#[arg(short, long)]
|
||||
rewrite_string: String,
|
||||
|
||||
/// The folder which contains the templates that
|
||||
/// will be be searched for the needle.
|
||||
#[arg(short, long)]
|
||||
source_folder: String,
|
||||
|
||||
/// Where to write the replaced lines.
|
||||
#[arg(short, long)]
|
||||
dest_folder: String,
|
||||
}
|
||||
|
||||
fn main() {
|
||||
// Log info and above by default
|
||||
env_logger::Builder::from_env(Env::default().default_filter_or("info")).init();
|
||||
let args = Args::parse();
|
||||
|
||||
let mut rewriter = Rewriter::new(args.rewrite_string);
|
||||
|
||||
rewriter.add_replacement(String::from("abc"));
|
||||
rewriter
|
||||
.rewrite_folder(&args.source_folder, &args.dest_folder)
|
||||
.unwrap();
|
||||
info!("Finished writing new config to {}", args.dest_folder);
|
||||
}
|
||||
Reference in New Issue
Block a user