Compare commits

...

3 Commits

Author SHA1 Message Date
Lucien Greathouse
7c6fe38346 CLI version 0.3.1 2017-12-14 00:24:01 -08:00
Lucien Greathouse
f89d491f29 Run rustfmt
I ignored some odd formatting it introduced relating to putting braces on newlines in if-let blocks. This might be a bug, but I didn't find any way to turn that off.
2017-12-13 12:05:11 -08:00
Lucien Greathouse
59b2401c2c Add more detailed error reporting around invalid projects 2017-12-13 11:56:06 -08:00
8 changed files with 48 additions and 12 deletions

View File

@@ -3,6 +3,10 @@
## Current Master ## Current Master
* *No changes* * *No changes*
## 0.3.1
* Improved error reporting when invalid JSON is found in a `rojo.json` project
* These messages are passed on from Serde
## 0.3.0 ## 0.3.0
* Factored out the plugin into a separate repository * Factored out the plugin into a separate repository
* Fixed server when using a file as a partition * Fixed server when using a file as a partition

2
Cargo.lock generated
View File

@@ -517,7 +517,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]] [[package]]
name = "rojo" name = "rojo"
version = "0.3.0" version = "0.3.1"
dependencies = [ dependencies = [
"clap 2.29.0 (registry+https://github.com/rust-lang/crates.io-index)", "clap 2.29.0 (registry+https://github.com/rust-lang/crates.io-index)",
"notify 4.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "notify 4.0.3 (registry+https://github.com/rust-lang/crates.io-index)",

View File

@@ -1,6 +1,6 @@
[package] [package]
name = "rojo" name = "rojo"
version = "0.3.0" version = "0.3.1"
authors = ["Lucien Greathouse <me@lpghatguy.com>"] authors = ["Lucien Greathouse <me@lpghatguy.com>"]
description = "A tool to create robust Roblox projects" description = "A tool to create robust Roblox projects"
license = "MIT" license = "MIT"

View File

@@ -25,7 +25,7 @@ use std::thread;
use core::Config; use core::Config;
use pathext::canonicalish; use pathext::canonicalish;
use project::Project; use project::{Project, ProjectLoadError};
use vfs::Vfs; use vfs::Vfs;
use vfs_watch::VfsWatcher; use vfs_watch::VfsWatcher;
@@ -98,8 +98,32 @@ fn main() {
println!("Using project from {}", project_path.display()); println!("Using project from {}", project_path.display());
v v
}, },
Err(_) => { Err(err) => {
println!("Using default project..."); match err {
ProjectLoadError::InvalidJson(serde_err) => {
eprintln!(
"Found invalid JSON!\nProject in: {}\nError: {}",
project_path.display(),
serde_err,
);
std::process::exit(1);
},
ProjectLoadError::FailedToOpen | ProjectLoadError::FailedToRead => {
eprintln!("Found project file, but failed to read it!");
eprintln!(
"Check the permissions of the project file at\n{}",
project_path.display(),
);
std::process::exit(1);
},
_ => {
// Any other error is fine; use the default project.
},
}
println!("Found no project file, using default project...");
Project::default() Project::default()
}, },
}; };

View File

@@ -31,7 +31,11 @@ fn test_path_to_route() {
assert_eq!(path_to_route(root, value), result); assert_eq!(path_to_route(root, value), result);
} }
t(Path::new("/a/b/c"), Path::new("/a/b/c/d"), Some(vec!["d".to_string()])); t(
Path::new("/a/b/c"),
Path::new("/a/b/c/d"),
Some(vec!["d".to_string()]),
);
t(Path::new("/a/b"), Path::new("a"), None); t(Path::new("/a/b"), Path::new("a"), None);
} }
@@ -42,7 +46,11 @@ fn test_path_to_route_windows() {
assert_eq!(path_to_route(root, value), result); assert_eq!(path_to_route(root, value), result);
} }
t(Path::new("C:\\foo"), Path::new("C:\\foo\\bar\\baz"), Some(vec!["bar".to_string(), "baz".to_string()])); t(
Path::new("C:\\foo"),
Path::new("C:\\foo\\bar\\baz"),
Some(vec!["bar".to_string(), "baz".to_string()]),
);
} }
/// Turns the path into an absolute one, using the current working directory if /// Turns the path into an absolute one, using the current working directory if

View File

@@ -13,7 +13,7 @@ pub enum ProjectLoadError {
DidNotExist, DidNotExist,
FailedToOpen, FailedToOpen,
FailedToRead, FailedToRead,
Invalid, InvalidJson(serde_json::Error),
} }
#[derive(Debug)] #[derive(Debug)]
@@ -116,7 +116,7 @@ impl Project {
match serde_json::from_str(&contents) { match serde_json::from_str(&contents) {
Ok(v) => Ok(v), Ok(v) => Ok(v),
Err(_) => return Err(ProjectLoadError::Invalid), Err(e) => return Err(ProjectLoadError::InvalidJson(e)),
} }
} }

View File

@@ -4,9 +4,9 @@ use std::time::Duration;
use notify::{DebouncedEvent, RecommendedWatcher, RecursiveMode, Watcher}; use notify::{DebouncedEvent, RecommendedWatcher, RecursiveMode, Watcher};
use vfs::Vfs;
use pathext::path_to_route;
use core::Config; use core::Config;
use pathext::path_to_route;
use vfs::Vfs;
pub struct VfsWatcher { pub struct VfsWatcher {
vfs: Arc<Mutex<Vfs>>, vfs: Arc<Mutex<Vfs>>,

View File

@@ -8,7 +8,7 @@ use serde_json;
use core::Config; use core::Config;
use project::Project; use project::Project;
use vfs::{Vfs, VfsItem, VfsChange}; use vfs::{Vfs, VfsChange, VfsItem};
static MAX_BODY_SIZE: usize = 25 * 1024 * 1025; // 25 MiB static MAX_BODY_SIZE: usize = 25 * 1024 * 1025; // 25 MiB