init commit.

This commit is contained in:
licsber 2024-09-07 23:53:17 +08:00
commit 7731c177c9
8 changed files with 86 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
/target

8
.idea/.gitignore vendored Normal file
View File

@ -0,0 +1,8 @@
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

8
.idea/modules.xml Normal file
View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/unzip-all.iml" filepath="$PROJECT_DIR$/.idea/unzip-all.iml" />
</modules>
</component>
</project>

11
.idea/unzip-all.iml Normal file
View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="EMPTY_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

6
.idea/vcs.xml Normal file
View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

7
Cargo.lock generated Normal file
View File

@ -0,0 +1,7 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 3
[[package]]
name = "unzip-all"
version = "0.1.0"

6
Cargo.toml Normal file
View File

@ -0,0 +1,6 @@
[package]
name = "unzip-all"
version = "0.1.0"
edition = "2021"
[dependencies]

39
src/main.rs Normal file
View File

@ -0,0 +1,39 @@
use std::fs;
use std::io;
use std::path::{Path, PathBuf};
use std::process::Command;
fn process_compressed_files(path: &Path) -> io::Result<()> {
if path.is_dir() {
for entry in fs::read_dir(path)? {
let entry_path = entry?.path();
process_compressed_files(&entry_path)?;
}
} else {
if path.extension() == Some(std::ffi::OsStr::new("rar"))
|| path.extension() == Some(std::ffi::OsStr::new("zip")) {
let output = Command::new("unar")
.arg(path)
.output();
match output {
Ok(result) => {
if !result.status.success() {
eprintln!("Error processing compressed file {:?}: {}", path, String::from_utf8_lossy(&result.stderr));
}
}
Err(e) => {
eprintln!("Failed to execute unar for {:?}: {}", path, e);
}
}
}
}
Ok(())
}
fn main() -> io::Result<()> {
let start_path = PathBuf::from(".");
process_compressed_files(&start_path)?;
Ok(())
}