cup-cli 0.1.6

A Cargo-like tool for C++ Project Building and Package Management
Documentation
use std::path::{Path, PathBuf};

use crate::config::Shelling;

#[derive(Debug, Clone, Default, serde::Serialize, serde::Deserialize)]
pub struct ProgramConfig {
    pub name: String,
    pub src: PathBuf,
}

impl<P: AsRef<Path>> Shelling<Program, P> for ProgramConfig {
    fn shelling(self, base: P) -> Program {
        Program {
            name: self.name,
            src: if self.src.is_relative() {
                base.as_ref().join(self.src)
            } else {
                self.src
            },
        }
    }
}

#[derive(Debug, Clone)]
pub struct Program {
    pub name: String,
    pub src: PathBuf,
}