forked from rojo-rbx/rojo
Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7c6fe38346 | ||
|
|
f89d491f29 | ||
|
|
59b2401c2c |
@@ -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
2
Cargo.lock
generated
@@ -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)",
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
30
src/bin.rs
30
src/bin.rs
@@ -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()
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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)),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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>>,
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user