]>
git.proxmox.com Git - rustc.git/blob - src/tools/unicode-table-generator/src/unicode_download.rs
1 use crate::UNICODE_DIRECTORY
;
3 use std
::process
::Command
;
5 static URL_PREFIX
: &str = "https://www.unicode.org/Public/UCD/latest/ucd/";
7 static README
: &str = "ReadMe.txt";
9 static RESOURCES
: &[&str] =
10 &["DerivedCoreProperties.txt", "PropList.txt", "UnicodeData.txt", "SpecialCasing.txt"];
12 pub fn fetch_latest() {
13 let directory
= Path
::new(UNICODE_DIRECTORY
);
14 if directory
.exists() {
16 "Not refetching unicode data, already exists, please delete {:?} to regenerate",
21 if let Err(e
) = std
::fs
::create_dir_all(directory
) {
22 panic
!("Failed to create {:?}: {}", UNICODE_DIRECTORY
, e
);
24 let output
= Command
::new("curl").arg(URL_PREFIX
.to_owned() + README
).output().unwrap();
25 if !output
.status
.success() {
27 "Failed to run curl to fetch readme: stderr: {}",
28 String
::from_utf8_lossy(&output
.stderr
)
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();
36 for resource
in RESOURCES
{
37 let output
= Command
::new("curl").arg(URL_PREFIX
.to_owned() + resource
).output().unwrap();
38 if !output
.status
.success() {
40 "Failed to run curl to fetch {}: stderr: {}",
42 String
::from_utf8_lossy(&output
.stderr
)
45 std
::fs
::write(directory
.join(resource
), output
.stdout
).unwrap();