rdfm 0.1.0

RDFM - A Rusty DotFiles Manager
use std::{
    env,
    fs::{self, OpenOptions},
    io::Write,
};

use fs::File;

use crate::{setup::setup, Result};

pub fn add(src: &str, dest: &str) -> Result<()> {
    let dotfiles_path = format!("{}/.dotfiles/dotfiles.rdfm", env::var("HOME")?);

    setup()?;

    let mut dotfiles = OpenOptions::new().append(true).open(dotfiles_path)?;

    dotfiles.write_all(
        format!(
            "{}->{}\r\n",
            src,
            format!("{}/.dotfiles/{}", env::var("HOME")?, dest)
        )
        .as_bytes(),
    )?;
    println!("Successfully added `{}` to dotfiles as `{}`", src, dest);

    Ok(())
}

pub fn remove(value: &str) -> Result<()> {
    let dotfiles_path = format!("{}/.dotfiles/dotfiles.rdfm", env::var("HOME")?);

    setup()?;

    let mut content = fs::read_to_string(&dotfiles_path)?;
    let mut dotfiles = File::create(&dotfiles_path)?;

    content = content
        .lines()
        .filter(|l| !l.contains(value))
        .collect::<String>();

    dotfiles.write_all(content.as_bytes())?;

    Ok(())
}