mirror of
https://github.com/pezkuwichain/revive.git
synced 2026-06-14 11:11:00 +00:00
486c9c28a1
Signed-off-by: Cyrill Leutwiler <bigcyrill@hotmail.com>
38 lines
1004 B
Rust
38 lines
1004 B
Rust
//! The revive LLVM builder lock file.
|
|
|
|
use anyhow::Context;
|
|
use std::fs::File;
|
|
use std::io::Read;
|
|
use std::path::PathBuf;
|
|
|
|
use serde::Deserialize;
|
|
use serde::Serialize;
|
|
|
|
/// The default lock file location.
|
|
pub const LLVM_LOCK_DEFAULT_PATH: &str = "LLVM.lock";
|
|
|
|
/// The lock file data.
|
|
///
|
|
/// This file describes the exact reference of the LLVM framework.
|
|
#[derive(Debug, Deserialize, Serialize)]
|
|
pub struct Lock {
|
|
/// The LLVM repository URL.
|
|
pub url: String,
|
|
/// The LLVM repository branch.
|
|
pub branch: String,
|
|
/// The LLVM repository commit reference.
|
|
pub r#ref: Option<String>,
|
|
}
|
|
|
|
impl TryFrom<&PathBuf> for Lock {
|
|
type Error = anyhow::Error;
|
|
|
|
fn try_from(path: &PathBuf) -> Result<Self, Self::Error> {
|
|
let mut config_str = String::new();
|
|
let mut config_file =
|
|
File::open(path).with_context(|| format!("Error opening {path:?} file"))?;
|
|
config_file.read_to_string(&mut config_str)?;
|
|
Ok(toml::from_str(&config_str)?)
|
|
}
|
|
}
|