rust 写了一个小工具,批量清理项目构建产物

120 天前
 coderpwh

关于

一个极其简易的 cli 工具,批量清理指定目录及其子目录的构建产物,目前支持 go,maven,gradle,cargo 的构建产物清除

使用

安装

cargo install rs_clean

使用

$ rs_clean  folder/

项目地址

rs_clean

1648 次点击
所在节点    Rust
8 条回复
idealhs
120 天前
你是否在寻找 git clean -fdx
coderpwh
120 天前
@idealhs 这个还是有点局限性的,只能支持 git 初始化的项目,未提交的代码也有被删除的风险
AoEiuV020JP
120 天前
比起清理,我更在意怎么把构建缓存集中到一个目录里,
我常用的 gradle 调整配置可以把 build 集中起来放在根目录方便删除, 但还剩个 buildSrc/.gradle 不知道咋改,

话说你这工具对我这种修改过 build 目录的情况应该就不适用了吧,
coderpwh
120 天前
@AoEiuV020JP 我的工具本质就是在目录下面运行 gradle clean
AoEiuV020JP
120 天前
@coderpwh #4 那这清不干净,重要的 local.properties 和碍眼的.gradle 都没清理掉,build 目录自身也不会删除,
这样的话这个工具用途就比较局限了, 比如暂时不用的项目用这工具清理一下释放空间,
想不到其他使用场景了, 我以为至少要能用来把项目清干净然后发送给别人使用,这个就要求清理不会有本机信息剩下,
AoEiuV020JP
120 天前
@coderpwh #4 而且还有个坑,gradle 一般开启了 daemon , 你这工具启动 gradle 有没有禁用 daemon, 或者事后有没有把 gradle stop 掉,
没有的话 java 会残留在内存里占一大块,如果有多个新旧项目使用不同版本 gradle 还会有多个 java 驻留内存,
这些细节坑要一个构建工具优化感觉想想就很麻烦, 优化不好的注定只能是“自用小工具”,别人很难用上,
PTLin
120 天前
以前因为 cargo 构建项目太大也写了一个简单的,后来想改成多线程支持不同项目的,写一写就放弃了,没想到 op 做到了
```rust
fn walk(p: impl AsRef<Path>) -> anyhow::Result<()> {
let save = std::env::current_dir()?;
std::env::set_current_dir(&p)?;
for entry in std::fs::read_dir(".")? {
let entry = entry?;
let path = entry.path();
let file_name = path.file_name().unwrap().to_str().unwrap();
if file_name.contains("Cargo.toml") {
println!("{}", p.as_ref().display());
std::process::Command::new("cargo.exe")
.arg("clean")
.spawn()
.unwrap();
break;
}
if path.is_dir() {
walk(&path)?;
}
}
std::env::set_current_dir(save)?;
Ok(())
}
```
yb2313
116 天前

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1067138

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX