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());
}
}
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());
}
}
}