vake 1.0.0

Custom build tool for the In Silico project
Documentation
mod connection;
mod logger;
mod poll;
mod close;
mod sync;

use log::debug;
use std::net::Ipv4Addr;
use std::sync::{Arc, Mutex};
use std::thread;

use crate::parser::parse::Recipe;
use crate::watch::{self, ProjectQueue};

const DEFAULT_ADDRESS: Ipv4Addr = Ipv4Addr::new(127, 0, 0, 1);
const DEFAULT_PORT: u16 = 9595;

pub fn serve(recipe: Recipe) {
    let queue: ProjectQueue = ProjectQueue::new();
    debug!("Starting internal server...");
    let active_directory = &recipe.clone().options.active_directory;
    let queue = Arc::new(Mutex::new(queue));
    let queue_thread = queue.clone();
    
    thread::spawn(move || {
        connection::listen(DEFAULT_ADDRESS, DEFAULT_PORT, queue_thread, recipe)
    });

    watch::daemon(active_directory, &queue).expect("Failed to watch!");
}