diff options
| author | Teddy Wing | 2021-05-30 17:14:25 +0200 | 
|---|---|---|
| committer | Teddy Wing | 2021-05-30 17:14:25 +0200 | 
| commit | f8971cea4f8f916bbb528169f06c513c2a18802e (patch) | |
| tree | de07b47deee291182020dfe5e68fbc75fb9bcac3 /src/git.rs | |
| parent | 7fc7462bdb6565fa4e49a9f15099f8faed5385b5 (diff) | |
| download | reflectub-f8971cea4f8f916bbb528169f06c513c2a18802e.tar.bz2 | |
main::update(): Update repository description on fetch update
If the repository was updated, write the description into the
`description` file.
Add a `github::Repo.description()` method to get an empty string if the
description is `None`. This facilitates writing to the `description`
file.
Diffstat (limited to 'src/git.rs')
| -rw-r--r-- | src/git.rs | 35 | 
1 files changed, 28 insertions, 7 deletions
| @@ -1,5 +1,7 @@  use thiserror; +use std::fs; +use std::io::Write;  use std::path::Path; @@ -7,6 +9,9 @@ use std::path::Path;  pub enum Error {      #[error("git error")]      Git(#[from] git2::Error), + +    #[error(transparent)] +    Io(#[from] std::io::Error),  } @@ -20,18 +25,13 @@ pub enum Error {  pub fn mirror<P: AsRef<Path>>(      url: &str,      path: P, -    description: Option<&str>, +    description: &str,  ) -> Result<(), Error> { -    let description_str = match description { -        Some(d) => d, -        None => "", -    }; -      let repo = git2::Repository::init_opts(          path,          &git2::RepositoryInitOptions::new()              .bare(true) -            .description(description_str), +            .description(description),      )?;      let remote_name = "origin"; @@ -82,3 +82,24 @@ pub fn update<P: AsRef<Path>>(      Ok(())  } + +/// Update the repository's description file. +pub fn update_description<P: AsRef<Path>>( +    repo_path: P, +    description: &str, +) -> Result<(), Error> { +    let description_path = repo_path.as_ref().join("description"); + +    let mut file = fs::OpenOptions::new() +        .write(true) +        .truncate(true) +        .open(description_path)?; + +    if description.is_empty() { +        file.set_len(0)?; +    } else { +        writeln!(file, "{}", description)?; +    } + +    Ok(()) +} | 
