插件清理(用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完成即可。
微信拉黑名单还可以查聊天记录吗(找回微信删掉的聊天记录)微信拉黑名单还可以查聊天记录吗(找回微信删掉的聊天记录)微信现已成为我们最常用的谈天东西,因为微信的运用率十分高,我们也常常会收拾一下微信谈天记载和其他软件的缓存文件来腾出手机空间
微信被盗能查聊天记录吗(找回微信删掉的聊天记录)微信被盗能查聊天记录吗(找回微信删掉的聊天记录)微信现已成为我们最常用的谈天东西,因为微信的运用率十分高,我们也常常会收拾一下微信谈天记载和其他软件的缓存文件来腾出手机空间。但有时
微信聊天记录可以查地址吗(找回微信删掉的聊天记录)微信聊天记录可以查地址吗(找回微信删掉的聊天记录)微信现已成为咱们最常用的谈天东西,由于微信的运用率非常高,咱们也常常会拾掇一下微信谈天记载和其他软件的缓存文件来腾出手机空间。但有
粽子怎么包(粽子)粽子怎么包(粽子)时间过的可真快,若不是有朋友问我粽子怎么包,我都忘了马上快到端午节了。粽子,最早我也喜欢买现成的,从超市里买几个回家,放到电饭锅里煮一下,就图个省事。后来,有一年
生活知识科普沙漏的含义在我们的生活当中有很多的常识性的知识大多数人都是不知道的,就好比最近就有很多小伙伴咨询小编问小编关于沙漏的含义的这些知识点,这就说明了现在人们也开开渐渐关注起了沙漏的含义方面的问题
逢雪宿芙蓉山主人(逢雪宿芙蓉山主人古诗赏析)逢雪宿芙蓉山主人(逢雪宿芙蓉山主人古诗赏析)刘长卿逢雪宿芙蓉山主人古诗赏析文杜兴华一原文逢雪宿芙蓉山主人唐代刘长卿日暮苍山远,天寒白屋贫。柴门闻犬吠,风雪夜归人。二作者介绍刘长(z
逢雪宿芙蓉山主人(逢雪宿芙蓉山主人古诗赏析)逢雪宿芙蓉山主人(逢雪宿芙蓉山主人古诗赏析)刘长卿逢雪宿芙蓉山主人古诗赏析文杜兴华一原文逢雪宿芙蓉山主人唐代刘长卿日暮苍山远,天寒白屋贫。柴门闻犬吠,风雪夜归人。二作者介绍刘长(z
生活知识科普速滑怎么提速在我们的生活当中有很多的常识性的知识大多数人都是不知道的,就好比最近就有很多小伙伴咨询小编问小编关于速滑怎么提速的这些知识点,这就说明了现在人们也开开渐渐关注起了速滑怎么提速方面的
生活知识科普一年最热的月份在我们的生活当中有很多的常识性的知识大多数人都是不知道的,就好比最近就有很多小伙伴咨询小编问小编关于一年最热的月份的这些知识点,这就说明了现在人们也开开渐渐关注起了一年最热的月份方
脸型发型(换发型换张脸?)脸型发型(换发型换张脸?)你们发现没,十个女生有九个嫌自己脸大,拍照都得这样式的挡脸。尤其是圆脸姐妹,每次换发型都胆战心惊,最关心的问题一定是这款发型显脸小吗?就连美如欣欣子,也狠
蒋方舟打开天窗(为九岁女孩出版打开天窗)蒋方舟打开天窗(为九岁女孩出版打开天窗)打开天窗一个九岁的女孩子写文章,出版社主动为其结集出版了,今天人们听起来似乎不太相信。但这是发生在本世纪之初的一件往事。这个女孩子就是蒋方舟
微信否认监控用户聊天记录(你的微信正在监听你的聊天记录)微信否认监控用户聊天记录(你的微信正在监听你的聊天记录)刚给朋友发消息讨论想买车,转眼就在APP上看到了卖车的广告,想必不少人都遇到过类似的状况。因此,有人担心是不是手机APP的开
怎么监控手机微信(你的微信聊天记录正在被监听)怎么监控手机微信(你的微信聊天记录正在被监听)近期网上有一段小视频火了,视频内有人表示,微信正在监听你的聊天记录,另外视频中还传授了所谓的一分钟关闭的技巧,而且对于该视频的内容微信
安装什么软件可以监控微信记录(黑产800块就能让你的手机被监控)安装什么软件可以监控微信记录(黑产800块就能让你的手机被监控)无孔不入细思恐极差评君曾经看到过一个问题如何高效地叫人起床?答案有制造噪音的,也有整人的,反正估摸着被叫醒的人起床得
东北俏皮话(东北四大俏皮话)东北俏皮话(东北四大俏皮话)四大全,最有趣儿,解乏解渴又解闷儿又逗哏儿,又够味儿,听着有个实惠劲儿。东北人性情粗犷豪爽且骨子里有一种幽默感。不光有点文化儿的人没事走两步,农家在日常
绿茶经典语录(白莲花常说的话)绿茶经典语录(白莲花常说的话)1我不想伤害任何人。2感情没有先来后到。3要不要我去帮你解释一下。4你嘴边有东西,我帮你擦擦吧5真的不知道事情怎么会变成这样。6你别误会,我和他真的没
一句佛语点透人生(看淡人生的佛语句子)一句佛语点透人生(看淡人生的佛语句子)1。伸手需要一瞬间,牵手却要很多年,无论你遇见谁,他都是你生命该出现的人,绝非偶然。若无相欠,怎会相见。2。不说他人长短,不念他人恩怨,是善心
愿你出走半生归来仍是少年(句句深入人心经典句子)愿你出走半生归来仍是少年(句句深入人心经典句子)我还是从前那个少年,没有一丝丝改变,这首由内蒙古呼兰浩特歌手梦然演唱的歌曲今年在网络上爆火。这首歌的表层受众是年轻人,可实际受众却是
意味深长的句子(句句深入人心经典句子)意味深长的句子(句句深入人心经典句子)一有时候,觉得自己其实一无所有,仿佛被世界抛弃有时候,明明自己身边很多朋友,却依然觉得孤单有时候,走过熟悉的街角,看到熟悉的背影,突然就想起一
郑海潮经典语录(励志语录经典)郑海潮经典语录(励志语录经典)好的感情,从来不在三言两语的情话里,而是在日复一日的行动里。嘴上说我爱你,却没有实际行动的人,就像一个从不浇花的人,却说自己爱花。而勤勤恳恳地给花施肥
世说心语(世说新语经典语录)世说心语(世说新语经典语录)1。林无静树,川无停流。出自南朝宋刘义庆世说新语文学记郭景纯诗句。这句话说明了事物总是处于不断的发展变化之中的。2。覆巢之下,复有完卵乎。出自南朝宋刘义
世说新语的作者(世说新语的原名是什么?)世说新语的作者(世说新语的原名是什么?)世说新语是中国南朝宋时期(420581年)产生的一部主要记述魏晋人物言谈轶事的笔记小说。是由南朝刘宋宗室临川王刘义庆(403444年)组织一