Simplify unicode_downloads.rs
Reduce duplication by moving fetching logic into a dedicated function.
This commit is contained in:
parent
6a1f7afd2f
commit
0a6af989f6
1 changed files with 15 additions and 16 deletions
|
@ -1,6 +1,6 @@
|
||||||
use crate::UNICODE_DIRECTORY;
|
use crate::UNICODE_DIRECTORY;
|
||||||
use std::path::Path;
|
use std::path::Path;
|
||||||
use std::process::Command;
|
use std::process::{Command, Output};
|
||||||
|
|
||||||
static URL_PREFIX: &str = "https://www.unicode.org/Public/UCD/latest/ucd/";
|
static URL_PREFIX: &str = "https://www.unicode.org/Public/UCD/latest/ucd/";
|
||||||
|
|
||||||
|
@ -9,6 +9,18 @@ static README: &str = "ReadMe.txt";
|
||||||
static RESOURCES: &[&str] =
|
static RESOURCES: &[&str] =
|
||||||
&["DerivedCoreProperties.txt", "PropList.txt", "UnicodeData.txt", "SpecialCasing.txt"];
|
&["DerivedCoreProperties.txt", "PropList.txt", "UnicodeData.txt", "SpecialCasing.txt"];
|
||||||
|
|
||||||
|
#[track_caller]
|
||||||
|
fn fetch(url: &str) -> Output {
|
||||||
|
let output = Command::new("curl").arg(URL_PREFIX.to_owned() + url).output().unwrap();
|
||||||
|
if !output.status.success() {
|
||||||
|
panic!(
|
||||||
|
"Failed to run curl to fetch {url}: stderr: {}",
|
||||||
|
String::from_utf8_lossy(&output.stderr)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
output
|
||||||
|
}
|
||||||
|
|
||||||
pub fn fetch_latest() {
|
pub fn fetch_latest() {
|
||||||
let directory = Path::new(UNICODE_DIRECTORY);
|
let directory = Path::new(UNICODE_DIRECTORY);
|
||||||
if directory.exists() {
|
if directory.exists() {
|
||||||
|
@ -20,27 +32,14 @@ pub fn fetch_latest() {
|
||||||
if let Err(e) = std::fs::create_dir_all(directory) {
|
if let Err(e) = std::fs::create_dir_all(directory) {
|
||||||
panic!("Failed to create {UNICODE_DIRECTORY:?}: {e}");
|
panic!("Failed to create {UNICODE_DIRECTORY:?}: {e}");
|
||||||
}
|
}
|
||||||
let output = Command::new("curl").arg(URL_PREFIX.to_owned() + README).output().unwrap();
|
let output = fetch(README);
|
||||||
if !output.status.success() {
|
|
||||||
panic!(
|
|
||||||
"Failed to run curl to fetch readme: stderr: {}",
|
|
||||||
String::from_utf8_lossy(&output.stderr)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
let current = std::fs::read_to_string(directory.join(README)).unwrap_or_default();
|
let current = std::fs::read_to_string(directory.join(README)).unwrap_or_default();
|
||||||
if current.as_bytes() != &output.stdout[..] {
|
if current.as_bytes() != &output.stdout[..] {
|
||||||
std::fs::write(directory.join(README), output.stdout).unwrap();
|
std::fs::write(directory.join(README), output.stdout).unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
for resource in RESOURCES {
|
for resource in RESOURCES {
|
||||||
let output = Command::new("curl").arg(URL_PREFIX.to_owned() + resource).output().unwrap();
|
let output = fetch(resource);
|
||||||
if !output.status.success() {
|
|
||||||
panic!(
|
|
||||||
"Failed to run curl to fetch {}: stderr: {}",
|
|
||||||
resource,
|
|
||||||
String::from_utf8_lossy(&output.stderr)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
std::fs::write(directory.join(resource), output.stdout).unwrap();
|
std::fs::write(directory.join(resource), output.stdout).unwrap();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue