Browse Source

create .gitignore if not existing while `add`

This fixes a bug where the program exited when there was no existing
gitignore file.
master
Schneider 4 years ago
parent
commit
37c1a59c68
  1. 2
      Cargo.lock
  2. 2
      Cargo.toml
  3. 7
      src/gitignore.rs

2
Cargo.lock

@ -325,7 +325,7 @@ dependencies = [
[[package]]
name = "gitig"
version = "0.1.3"
version = "0.1.4"
dependencies = [
"directories",
"error-chain",

2
Cargo.toml

@ -1,6 +1,6 @@
[package]
name = "gitig"
version = "0.1.3"
version = "0.1.4"
authors = ["Marcel Schneider <marcel@webschneider.org>"]
edition = "2018"

7
src/gitignore.rs

@ -1,5 +1,6 @@
//! This module contains an abstraction for gitignore files
use crate::errors::*;
use log::trace;
use std::fs::OpenOptions;
use std::path::PathBuf;
@ -13,7 +14,10 @@ impl Gitignore {
/// Create a new Gitignore struct from a git root folder path
///
/// The given `path` must be a valid path to an existing git root folder
pub fn from_path(path: &PathBuf) -> Self { Gitignore { path: path.clone() } }
pub fn from_path(path: &PathBuf) -> Self {
trace!("Creating gitignore file object for path {}", path.to_string_lossy());
Gitignore { path: path.clone() }
}
/// Append a line to the file
pub fn add_line(&self, line: &str) -> Result<()> {
@ -21,6 +25,7 @@ impl Gitignore {
let mut file = OpenOptions::new()
.write(true)
.append(true)
.create(true)
.open(&self.path)
.chain_err(|| "Error while opening gitignore file")?;
writeln!(file, "{}", line).chain_err(|| "Error while writing line to gitignore")?;

Loading…
Cancel
Save