create-platon-plugin 0.1.0

A quick way to scaffold a new Platon Plugin
extern crate fs_extra;
use clap::Parser;
use fs_extra::dir::{self, TransitProcess, copy_with_progress as copy_directory};

#[derive(Parser, Debug)]
#[command(version, about, long_about = None)]
struct Cli {
    /// The name of the plugin
    #[arg(long)]
    plugin_name: String,
    /// The port number in which the plugin will be running
    #[arg(long, default_value_t = 8080)]
    port: u16,
}

fn main() {
    let args = Cli::parse();

    let plugin_name = args.plugin_name;

    let port = args.port;

    println!(
        "Plugin: {:?} will be running on port: {:?}",
        plugin_name, port
    );

    let mut copy_options = dir::CopyOptions::new();
    copy_options.copy_inside = true;
    copy_options.overwrite = true;

    let from = "template";
    let to = "target";

    let progress_handler = |process_info: TransitProcess| {
        println!("{}", process_info.total_bytes);
        fs_extra::dir::TransitProcessResult::ContinueOrAbort
    };
    copy_directory(from, to, &copy_options, progress_handler)
        .expect("Error when calling copy directory!");
}