Implement build command, shuffle around some internals to make it easier

This commit is contained in:
Lucien Greathouse
2018-11-27 14:07:00 -08:00
parent 7c585fcbce
commit 8aee5c769f
5 changed files with 67 additions and 26 deletions

View File

@@ -5,7 +5,7 @@ use std::{
use crate::{
message_queue::MessageQueue,
project::{Project, ProjectNode},
project::Project,
imfs::Imfs,
session_id::SessionId,
rbx_session::RbxSession,
@@ -20,29 +20,9 @@ pub struct Session {
fs_watcher: FsWatcher,
}
fn add_sync_points(imfs: &mut Imfs, project_node: &ProjectNode) -> io::Result<()> {
match project_node {
ProjectNode::Instance(node) => {
for child in node.children.values() {
add_sync_points(imfs, child)?;
}
},
ProjectNode::SyncPoint(node) => {
imfs.add_root(&node.path)?;
},
}
Ok(())
}
impl Session {
pub fn new(project: Project) -> io::Result<Session> {
let mut imfs = Imfs::new();
add_sync_points(&mut imfs, &project.tree)
.expect("Could not add sync points when starting new Rojo session");
let imfs = Arc::new(Mutex::new(imfs));
let imfs = Arc::new(Mutex::new(Imfs::new(&project)?));
let project = Arc::new(project);
let message_queue = Arc::new(MessageQueue::new());