网站首页 行业快讯 > 正文
插件清理(用Rust清理eclipse自动升级后的重复插件)
eclipse自动升级版本之后,在/eclipse/plugins目录仍然会保留旧版本的插件,想要写一个脚本清理插件,正好最近刚学习rust编程,便用rust开发了一个eclipse插件清理工具eclean。
本文简单介绍清理工具的开发过程,详细源代码可以在github下载并自行编译:
gitclonehttps://github.com/leexgone/ecleaner.gitcd./ecleanercargobuild--release
工具支持清理eclipse升级后plugins目录下的冗余插件。
清理eclipse插件目录并将清理插件备份:
ecleanc:\eclipsee:\backup\eclipse
检测eclipse目录下是否含有可清理的插件:
eclean-tc:\eclipse
更多命令可以查阅:
eclean--help创建工程
使用cargo new elean创建工程,调整Cargo.toml内容并在src目录下创建lib.rs文件。
命令行参数解析eclean是一个命令行工具,首先我们需要支持命令行参数的解析。
rust的clap库是一套功能强大的命令行参数解析库,这里我们使用clap解析命令行参数。
1 引用clap库在Cargo.toml里加入clap依赖:
[dependencies]clap="33"2 创建Config结构
编辑lib.rs代码,定义Config结构存储命令配置信息,使用clap解析命令参数:
usestd::{collections::HashMap,error::Error,fs,io::{self,ErrorKind},path::{Path,PathBuf},usize};usestd::fmt::Display;useclap::{App,Arg};pubstructConfig{dir:String,backup:String,verbose:bool,test:bool,force:bool,}implDisplayforConfig{fnfmt(&self,f:&mutstd::fmt::Formatter<'_>)->std::fmt::Result{write!(f,"[dir={},backup={},verbose={},test={},force={}]",self.dir,self.backup,self.verbose,self.test,self.force)}}implConfig{pubfnnew()->Result<Config,String>{letmatches=App::new("eclean").version("0").author("StevenLee<leexgone@16com>").about("Cleanuptheduplicatedpluginsineclipsepluginsdirectory.").arg(Arg::with_name("DIR").help("Theeclipserootdirectorytobecleaned.The`/plugins`directoryshouldbeunderthisdirectory.").required(true).index(1)).arg(Arg::with_name("BACKUP").help("Specifyabackupdirectorytostoretheremovedplugins.").required_unless("test").index(2)).arg(Arg::with_name("verbose").short("v").long("verbose").help("Useverboseoutput")).arg(Arg::with_name("test").short("t").long("test").help("Scanandfindtheduplicatedplugins,butdonothing")).arg(Arg::with_name("force").short("f").long("force").help("Cleanuptheduplicatedpluginsautomatically.Neverprompt.")).get_matches();letdir=matches.value_of("DIR").unwrap();letbackup=matches.value_of("BACKUP").unwrap_or("");letverbose=matches.is_present("verbose");lettest=matches.is_present("test");letforce=matches.is_present("force");letroot_path=Path::new(dir);if!root_path.is_dir(){letmsg=format!("DIR'{}'doesnotexist",dir);returnErr(msg);}if!test{letbackup_path=Path::new(backup);if!backup_path.is_dir(){letmsg=format!("BACKUPdir'{}'doesnotexist",backup);returnErr(msg);}}Ok(Config{dir:String::from(dir),backup:String::from(backup),verbose,test,force,})}}
Config结构存储了用户参数命令的配置信息:
dir:eclipse目录(必须)
backup: 清理插件备份目录(必须,在test模式下可以忽略)
verbose:输出详细日志
test:仅检测eclipse插件目录,不执行清理操作
force:不询问用户强制清理插件
这里我们对用户的输入进行了检测,在目录不存在时提示错误;而必须参数的校验则通过clap完成即可。
版权说明: 本文由用户上传,如有侵权请联系删除!
- 上一篇: 今日更新吸猫什么意思(吸猫什么意思)
- 下一篇: 今日更新ipad如何上网(iPad也能插网线)
猜你喜欢:
- 2022-09-20 男人恶心是什么病的前兆(恶心是什么病的前兆)
- 2022-09-20 山东财经大学东方学院考研率怎么样(山东财经大学考研率是多少)
- 2022-09-20 广西最早的大学叫什么大学(在桂林设立的广西最早的大学是哪所大学)
- 2022-09-20 小儿肺炎有5个常见症状吗(小儿肺炎有5个常见症状)
- 2022-09-20 m是哪个服装品牌的标志(标志为M的衣服是什么牌子的)
- 2022-09-20 什么叫正比例什么叫反比例举例说明(什么叫反比例,举个例子说明,)
- 2022-09-20 一包烟要多少根烟丝(一包烟要多少根)
- 2022-09-20 男人吃樱桃对身体有什么好处(男人吃樱桃有什么好处)
最新文章:
- 2023-07-02 怎样挑选新鲜的猪肝?(怎么挑选新鲜猪肝 挑选新鲜猪肝的小技巧)
- 2023-07-02 木地板都有哪些种类(木地板的种类有哪些)
- 2023-07-02 白蜡木家具的优缺点(松木家具的优缺点)
- 2023-07-02 怎么清洗窗帘布上的污垢(怎么清洗窗帘)
- 2023-07-02 世界上最可爱的小仓鼠的样子(可爱小仓鼠的种类)
- 2023-07-02 小猫拉不出来屎怎么办(小猫拉不出屎怎么办)
- 2023-07-02 新飞小冰箱耗电量一天多少度(小冰箱耗电量一天多少度)
- 2023-07-02 公司注销工业房产怎么办手续(公司注销工业房产怎么办)
- 2023-07-02 凤凰层到底好还是不好(凤凰层是哪一层)
- 2023-07-02 马桶宽度空间留多少(马桶两边的空间大小是多少)
- 2023-07-02 如何训练猫咪小便(如何训练猫大小便)
- 2023-07-02 卫生间吊顶防潮层做法图集(卫生间吊顶方法是什么)
- 2023-07-02 狗狗为什么总是流口水怎么办(狗狗为什么爱流口水)
- 2023-07-02 卧室窗户漏水由谁负责维修(卧室窗户漏风怎么办)
- 2023-07-02 世界名猫大全(世界名猫你知道几种)
- 2023-07-02 applewatchseries7和6对比(apple watch series 7和6的区别)