-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathbuild.rs
52 lines (42 loc) · 1.22 KB
/
build.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
use std::{
env,
fs::{self, copy},
path::{Path, PathBuf},
};
const COPY_DIR: &'static str = "icons";
/// A helper function for recursively copying a directory.
fn copy_dir<P, Q>(from: P, to: Q)
where
P: AsRef<Path>,
Q: AsRef<Path>,
{
let to = to.as_ref().to_path_buf();
for path in fs::read_dir(from).unwrap() {
let path = path.unwrap().path();
let to = to.clone().join(path.file_name().unwrap());
if path.is_file() {
fs::copy(&path, to).unwrap();
} else if path.is_dir() {
if !to.exists() {
fs::create_dir(&to).unwrap();
}
copy_dir(&path, to);
}
}
}
fn main() {
// Request the output directory
let profile = env::var("PROFILE").unwrap();
let out = env::current_dir()
.unwrap()
.join(PathBuf::from(format!("../target/{}/{}", profile, COPY_DIR)));
// If it is already in the output directory, delete it and start over
if out.exists() {
fs::remove_dir_all(&out).unwrap();
}
// Create the out directory
fs::create_dir(&out).unwrap();
// Copy the directory
copy_dir(COPY_DIR, &out);
copy("port.txt", &out.join("../port.txt")).unwrap();
}