插件清理(用Rust清理eclipse自动升级后的重复插件)
插件清理(用Rust清理eclipse自动升级后的重复插件)
1. 简介
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--help2.创建工程
使用cargo new elean创建工程,调整Cargo.toml内容并在src目录下创建lib.rs文件。3.命令行参数解析
eclean是一个命令行工具,首先我们需要支持命令行参数的解析。
rust的clap库是一套功能强大的命令行参数解析库,这里我们使用clap解析命令行参数。3.1 引用clap库
在Cargo.toml里加入clap依赖:[dependencies]clap="2.33.3"3.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("1.1.0") .author("StevenLee<leexgone@163.com>") .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完成即可。
怎么看股票k线图(教你3分钟看懂K线图)怎么看股票k线图(教你3分钟看懂K线图)面对形形色色的K线及其组合,许多投资者有些犯难。看涨时它跌看跌时它涨,这正是投资者并未正确认识和使用K线所带来的结果。只有正确认识和使用K线
支付宝基金怎么玩(玩转支付宝里面的基金)支付宝基金怎么玩(玩转支付宝里面的基金)支付宝如今是我们每个人生活中基本上都会用到的APP,它不仅方便了我们的衣食住行,连进行理财投资也可以直接通过支付宝进行。但除了大家都熟悉的余
余额宝收益时间(余额宝当天转入的钱为什么六天后才有收益?)余额宝收益时间(余额宝当天转入的钱为什么六天后才有收益?)这种情况有可能有两种情况,一种是遇到节假日,还有一种是你在星期四下午15点之后转入。余额宝有三个时间点需要弄明白一个是转入
爱调查一天能挣多少钱(最网e调查app靠谱吗)前几天发布了一篇关于如何通过副业赚钱的文章,附上链接搞什么副业能每月稳定收入两千?,很多小伙伴私信我,想让我推荐一种适合他们的副业,今天就给大家推荐一种零门槛,不需要学历和技术,每
邓文迪简介(53岁世界级捞女邓文迪)邓文迪简介(53岁世界级捞女邓文迪)两面女强人邓文迪令人惊愕的上位之路霸气护夫震惊世界育女有方躺赚260亿邓文迪究竟是怎样一个人呢?本期将向您讲述借子上位的人生赢家邓文迪。两面女人
生活知识科普白色卫衣发黄怎么洗白在我们的生活当中有很多的常识性的知识大多数人都是不知道的,就好比最近就有很多小伙伴咨询小编问小编关于白色卫衣发黄怎么洗白的这些知识点,这就说明了现在人们也开开渐渐关注起了白色卫衣发
长款卫衣怎么搭配(长款卫衣)长款卫衣怎么搭配(长款卫衣)秋天来了,终于不用努力减肥了,你只需要一件遮肉性能满分的长卫衣!普通的卫衣早就失宠了,今秋的时尚圈,大家都在穿的是长卫衣短靴的搭配,藏肉一绝,适合所有身
卫衣搭配(1件卫衣62套搭配)卫衣搭配(1件卫衣62套搭配)卫衣真的是所谓的万能单品在这个忽冷又忽热的季节里怎么穿都很好看所以今天我们就来聊一聊卫衣的n种穿法卫衣和修身小黑裤简直是万年友好组合,显高显瘦第一名。
黑色长裙怎么搭配(黑色长裙怎么搭配上衣好看)黑色长裙怎么搭配(黑色长裙怎么搭配上衣好看)黑色有多百搭我就不用多说了吧,显瘦简约大气,不挑人半身裙的时髦性可以说是时尚圈的长青款式,当半身裙遇到黑色,就是谁穿谁好看半身裙相对于连
健身教练证怎么考(健身教练证)健身教练证怎么考(健身教练证)有证只是开始,授课先要授心在全球健身指南健身打卡开始!你只要今天运动过就在下面留言打卡简单说说自己今天做了什么运动,做多久遇到了什么问题敢不敢每天都来
健身教练证怎么考(健身教练证)健身教练证怎么考(健身教练证)有证只是开始,授课先要授心在全球健身指南健身打卡开始!你只要今天运动过就在下面留言打卡简单说说自己今天做了什么运动,做多久遇到了什么问题敢不敢每天都来