ruwebframe 0.1.3

a simple webframe for rust actix-web, based on rudi and rbatis.
Documentation
use crate::rubase::rutils::fileutils;
use crate::rubase::{BaseEntity, BaseEntitySingle, ruenc};
use crate::rudi::difactroy;
use crate::{rucfg, rulog};
use serde::{Deserialize, Serialize};
use crate::rubase::rudto::FileDto;

const HELP: &str = r#"rucmd - ruwebframe 命令行工具

用法:
  rucmd <command> [args]

可用命令:
  enc  <text>       加密文本
  dec  <text>       解密文本
  cfg               查看当前配置(JSON格式)
  rudi list         列出所有结构体
  rudi all          为所有结构体生成DI注入代码
  rudi <name>       为指定结构体生成DI注入代码
  help              显示帮助信息
  version           显示版本信息
  i|inst            安装依赖
  i|inst cmd        安装命令
  i|inst data       安装数据
  i|inst config     安装配置
  i|inst web        安装web服务
  i|inst all        安装所有依赖
"#;

#[derive(Debug, Default, Serialize, Clone, Deserialize)]
pub struct RuCmd {}

impl BaseEntitySingle for RuCmd {}

impl RuCmd {
    pub fn new(&self) -> Self {
        Self {
            ..Default::default()
        }
    }

    pub fn help(&self) {
        println!("{}", HELP);
    }
    pub fn version(&self) {
        rulog::info("rucmd version 0.1.3");
    }
    pub fn dec(&self, args: &Vec<String>) {
        let result = ruenc::find_bean_ruenc().unwrap().dec(&args[2]);
        println!("{}", result);
    }
    pub fn enc(&self, args: &Vec<String>) {
        let result = ruenc::find_bean_ruenc().unwrap().enc(&args[2]);
        println!("{}", result);
        return;
    }
    pub fn rudi(&self, args: &Vec<String>) {
        rulog::info("rucmd help_cmd");
        if args.len() == 2 || args[2] == "list" {
            difactroy::find_bean_difactroy().unwrap().list_di();
            return;
        }
        if args.len() == 3 && args[2] == "all" {
            difactroy::find_bean_difactroy().unwrap().make_di();
            return;
        }
        if args.len() == 3 && args[2] != "all" {
            difactroy::find_bean_difactroy()
                .unwrap()
                .make_di_one(&args[2]);
            return;
        }
    }
    pub fn inst(&self, args: &Vec<String>) {
        println!("inst {}", args[1]);
    }

    pub fn list_config(&self, args: &Vec<String>) {
        let cfg = rucfg::find_bean_ruconfig().unwrap().read2json();
        if args.len() == 3 && args[2] == "env" {
            println!(
                "{}",
                rucfg::find_bean_ruconfig()
                    .unwrap()
                    .read()
                    .software
                    .to_json()
            );
            return;
        }
        if args.len() == 3 && args[2] == "db" {
            println!(
                "{}",
                rucfg::find_bean_ruconfig()
                    .unwrap()
                    .read()
                    .datasource
                    .to_json()
            );
            return;
        }
        if args.len() == 3 && args[2] == "redis" {
            println!(
                "{}",
                rucfg::find_bean_ruconfig().unwrap().read().redis.to_json()
            );
            return;
        }
        if args.len() == 3 && args[2] == "web" {
            println!(
                "{}",
                rucfg::find_bean_ruconfig().unwrap().read().web.to_json()
            );
            return;
        } else {
            rulog::info2("cmd ruconfig:", cfg.as_str());
        }
    }

    //register command

    pub fn execute(&self, args: &Vec<String>) {
        if args.len() >= 2 {
            match args[1].as_str() {
                "enc" => {
                    self.enc(&args);
                    return;
                }
                "dec" => {
                    self.dec(&args);
                    return;
                }
                "cfg" => {
                    self.list_config(&args);
                    return;
                }
                "rudi" => {
                    self.rudi(&args);
                    return;
                }
                "version" | "v" => {
                    self.version();
                    return;
                }
                "h" | "help" => {
                    self.help();
                    return;
                }
                "i" | "inst" => {
                    self.inst(&args);
                    return;
                }
                "list" => {

                    self.list_log(args);
                    return;
                }
                _ => {}
            }
        }
    }
    fn list_log(&self, args: &Vec<String>) {
        let mut dto = FileDto::new();
        if args.len() >= 2 {
             dto.set_dir( args[2].as_str().to_string());
        }
        let files = fileutils::list_files( &dto );
        for file in files {
            rulog::info2("log files:", file.as_str());
        }
    }
}