Function hyper_scripter::util::write_file
source · Examples found in repository?
src/util/main_util.rs (line 337)
332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351
pub fn prepare_pre_run(content: Option<&str>) -> Result<PathBuf> {
let p = path::get_home().join(path::HS_PRE_RUN);
if content.is_some() || !p.exists() {
let content = content.unwrap_or_else(|| include_str!("hs_prerun"));
log::info!("寫入預執行腳本 {:?} {}", p, content);
super::write_file(&p, content)?;
}
Ok(p)
}
pub fn load_templates() -> Result {
for (ty, tmpl) in iter_default_templates() {
let tmpl_path = path::get_template_path(&ty)?;
if tmpl_path.exists() {
continue;
}
super::write_file(&tmpl_path, tmpl)?;
}
Ok(())
}More examples
src/util/mod.rs (line 169)
155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172
pub fn get_or_create_template_path<T: AsScriptFullTypeRef>(
ty: &T,
force: bool,
check_subtype: bool,
) -> Result<(PathBuf, Option<&'static str>)> {
if !force {
Config::get().get_script_conf(ty.get_ty())?; // 確認類型存在與否
}
let tmpl_path = path::get_template_path(ty)?;
if !tmpl_path.exists() {
if check_subtype && ty.get_sub().is_some() {
return Err(Error::UnknownType(ty.display().to_string()));
}
let default_tmpl = get_default_template(ty);
return write_file(&tmpl_path, default_tmpl).map(|_| (tmpl_path, Some(default_tmpl)));
}
Ok((tmpl_path, None))
}src/config.rs (line 214)
197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215
pub fn store(&self) -> Result {
let path = config_file(path::get_home());
log::info!("寫入設定檔至 {:?}…", path);
match util::handle_fs_res(&[&path], std::fs::metadata(&path)) {
Ok(meta) => {
let modified = util::handle_fs_res(&[&path], meta.modified())?;
// NOTE: 若設定檔是憑空造出來的,但要存入時卻發現已有檔案,同樣不做存入
if self.last_modified.map_or(true, |time| time < modified) {
log::info!("設定檔已被修改,不寫入");
return Ok(());
}
}
Err(Error::PathNotFound(_)) => {
log::debug!("設定檔不存在,寫就對了");
}
Err(err) => return Err(err),
}
util::write_file(&path, &toml::to_string_pretty(self)?)
}