]> git.proxmox.com Git - rustc.git/blob - src/tools/unicode-table-generator/src/unicode_download.rs
New upstream version 1.44.1+dfsg1
[rustc.git] / src / tools / unicode-table-generator / src / unicode_download.rs
1 use crate::UNICODE_DIRECTORY;
2 use std::path::Path;
3 use std::process::Command;
4
5 static URL_PREFIX: &str = "https://www.unicode.org/Public/UCD/latest/ucd/";
6
7 static README: &str = "ReadMe.txt";
8
9 static RESOURCES: &[&str] =
10 &["DerivedCoreProperties.txt", "PropList.txt", "UnicodeData.txt", "SpecialCasing.txt"];
11
12 pub fn fetch_latest() {
13 let directory = Path::new(UNICODE_DIRECTORY);
14 if directory.exists() {
15 eprintln!(
16 "Not refetching unicode data, already exists, please delete {:?} to regenerate",
17 directory
18 );
19 return;
20 }
21 if let Err(e) = std::fs::create_dir_all(directory) {
22 panic!("Failed to create {:?}: {}", UNICODE_DIRECTORY, e);
23 }
24 let output = Command::new("curl").arg(URL_PREFIX.to_owned() + README).output().unwrap();
25 if !output.status.success() {
26 panic!(
27 "Failed to run curl to fetch readme: stderr: {}",
28 String::from_utf8_lossy(&output.stderr)
29 );
30 }
31 let current = std::fs::read_to_string(directory.join(README)).unwrap_or_default();
32 if current.as_bytes() != &output.stdout[..] {
33 std::fs::write(directory.join(README), output.stdout).unwrap();
34 }
35
36 for resource in RESOURCES {
37 let output = Command::new("curl").arg(URL_PREFIX.to_owned() + resource).output().unwrap();
38 if !output.status.success() {
39 panic!(
40 "Failed to run curl to fetch {}: stderr: {}",
41 resource,
42 String::from_utf8_lossy(&output.stderr)
43 );
44 }
45 std::fs::write(directory.join(resource), output.stdout).unwrap();
46 }
47 }