mirror of
https://github.com/rojo-rbx/rojo.git
synced 2026-10-23 05:51:39 +00:00
Rename 'Plugin' to 'Middleware' across the server code
This commit is contained in:
parent
e3e28d225c
commit
95d7c61921
11 changed files with 62 additions and 57 deletions
|
|
@ -14,8 +14,8 @@ pub mod project;
|
|||
pub mod pathext;
|
||||
pub mod vfs;
|
||||
pub mod rbx;
|
||||
pub mod plugin;
|
||||
pub mod plugins;
|
||||
pub mod middleware;
|
||||
pub mod middlewares;
|
||||
pub mod commands;
|
||||
|
||||
use std::path::{Path, PathBuf};
|
||||
|
|
|
|||
|
|
@ -6,8 +6,8 @@ use std::thread;
|
|||
use rand;
|
||||
|
||||
use project::{Project, ProjectLoadError};
|
||||
use plugin::{PluginChain};
|
||||
use plugins::{DefaultPlugin, JsonModelPlugin, ScriptPlugin};
|
||||
use middleware::{MiddlewareChain};
|
||||
use middlewares::{DefaultMiddleware, JsonModelMiddleware, ScriptMiddleware};
|
||||
use vfs::{VfsSession, VfsWatcher};
|
||||
use web;
|
||||
|
||||
|
|
@ -59,10 +59,10 @@ pub fn serve(project_path: &PathBuf, verbose: bool, port: Option<u64>) {
|
|||
};
|
||||
|
||||
lazy_static! {
|
||||
static ref PLUGIN_CHAIN: PluginChain = PluginChain::new(vec![
|
||||
Box::new(ScriptPlugin::new()),
|
||||
Box::new(JsonModelPlugin::new()),
|
||||
Box::new(DefaultPlugin::new()),
|
||||
static ref PLUGIN_CHAIN: MiddlewareChain = MiddlewareChain::new(vec![
|
||||
Box::new(ScriptMiddleware::new()),
|
||||
Box::new(JsonModelMiddleware::new()),
|
||||
Box::new(DefaultMiddleware::new()),
|
||||
]);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -21,10 +21,10 @@ pub enum FileChangeResult {
|
|||
Pass,
|
||||
}
|
||||
|
||||
pub trait Plugin {
|
||||
pub trait Middleware {
|
||||
/// Invoked when a file is read from the filesystem and needs to be turned
|
||||
/// into a Roblox instance.
|
||||
fn transform_file(&self, plugins: &PluginChain, vfs_item: &VfsItem) -> TransformFileResult;
|
||||
fn transform_file(&self, plugins: &MiddlewareChain, vfs_item: &VfsItem) -> TransformFileResult;
|
||||
|
||||
/// Invoked when a Roblox Instance change is reported by the Roblox Studio
|
||||
/// plugin and needs to be turned into a file to save.
|
||||
|
|
@ -36,13 +36,13 @@ pub trait Plugin {
|
|||
}
|
||||
|
||||
/// A set of plugins that are composed in order.
|
||||
pub struct PluginChain {
|
||||
plugins: Vec<Box<Plugin + Send + Sync>>,
|
||||
pub struct MiddlewareChain {
|
||||
plugins: Vec<Box<Middleware + Send + Sync>>,
|
||||
}
|
||||
|
||||
impl PluginChain {
|
||||
pub fn new(plugins: Vec<Box<Plugin + Send + Sync>>) -> PluginChain {
|
||||
PluginChain {
|
||||
impl MiddlewareChain {
|
||||
pub fn new(plugins: Vec<Box<Middleware + Send + Sync>>) -> MiddlewareChain {
|
||||
MiddlewareChain {
|
||||
plugins,
|
||||
}
|
||||
}
|
||||
|
|
@ -1,23 +1,23 @@
|
|||
use std::collections::HashMap;
|
||||
|
||||
use core::Route;
|
||||
use plugin::{Plugin, PluginChain, TransformFileResult, RbxChangeResult, FileChangeResult};
|
||||
use middleware::{Middleware, MiddlewareChain, TransformFileResult, RbxChangeResult, FileChangeResult};
|
||||
use rbx::{RbxInstance, RbxValue};
|
||||
use vfs::VfsItem;
|
||||
|
||||
/// A plugin with simple transforms:
|
||||
/// A middleware with simple transforms:
|
||||
/// * Directories become Folder instances
|
||||
/// * Files become StringValue objects with 'Value' as their contents
|
||||
pub struct DefaultPlugin;
|
||||
pub struct DefaultMiddleware;
|
||||
|
||||
impl DefaultPlugin {
|
||||
pub fn new() -> DefaultPlugin {
|
||||
DefaultPlugin
|
||||
impl DefaultMiddleware {
|
||||
pub fn new() -> DefaultMiddleware {
|
||||
DefaultMiddleware
|
||||
}
|
||||
}
|
||||
|
||||
impl Plugin for DefaultPlugin {
|
||||
fn transform_file(&self, plugins: &PluginChain, vfs_item: &VfsItem) -> TransformFileResult {
|
||||
impl Middleware for DefaultMiddleware {
|
||||
fn transform_file(&self, middlewares: &MiddlewareChain, vfs_item: &VfsItem) -> TransformFileResult {
|
||||
match vfs_item {
|
||||
&VfsItem::File { ref contents, .. } => {
|
||||
let mut properties = HashMap::new();
|
||||
|
|
@ -38,7 +38,7 @@ impl Plugin for DefaultPlugin {
|
|||
let mut rbx_children = Vec::new();
|
||||
|
||||
for (_, child_item) in children {
|
||||
match plugins.transform_file(child_item) {
|
||||
match middlewares.transform_file(child_item) {
|
||||
Some(rbx_item) => {
|
||||
rbx_children.push(rbx_item);
|
||||
},
|
||||
|
|
@ -2,7 +2,7 @@ use regex::Regex;
|
|||
use serde_json;
|
||||
|
||||
use core::Route;
|
||||
use plugin::{Plugin, PluginChain, TransformFileResult, RbxChangeResult, FileChangeResult};
|
||||
use middleware::{Middleware, MiddlewareChain, TransformFileResult, RbxChangeResult, FileChangeResult};
|
||||
use rbx::RbxInstance;
|
||||
use vfs::VfsItem;
|
||||
|
||||
|
|
@ -10,16 +10,16 @@ lazy_static! {
|
|||
static ref JSON_MODEL_PATTERN: Regex = Regex::new(r"^(.*?)\.model\.json$").unwrap();
|
||||
}
|
||||
|
||||
pub struct JsonModelPlugin;
|
||||
pub struct JsonModelMiddleware;
|
||||
|
||||
impl JsonModelPlugin {
|
||||
pub fn new() -> JsonModelPlugin {
|
||||
JsonModelPlugin
|
||||
impl JsonModelMiddleware {
|
||||
pub fn new() -> JsonModelMiddleware {
|
||||
JsonModelMiddleware
|
||||
}
|
||||
}
|
||||
|
||||
impl Plugin for JsonModelPlugin {
|
||||
fn transform_file(&self, _plugins: &PluginChain, vfs_item: &VfsItem) -> TransformFileResult {
|
||||
impl Middleware for JsonModelMiddleware {
|
||||
fn transform_file(&self, _middlewares: &MiddlewareChain, vfs_item: &VfsItem) -> TransformFileResult {
|
||||
match vfs_item {
|
||||
&VfsItem::File { ref contents, .. } => {
|
||||
let rbx_name = match JSON_MODEL_PATTERN.captures(vfs_item.name()) {
|
||||
7
server/src/middlewares/mod.rs
Normal file
7
server/src/middlewares/mod.rs
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
mod default_middleware;
|
||||
mod script_middleware;
|
||||
mod json_model_middleware;
|
||||
|
||||
pub use self::default_middleware::*;
|
||||
pub use self::script_middleware::*;
|
||||
pub use self::json_model_middleware::*;
|
||||
|
|
@ -3,7 +3,7 @@ use std::collections::HashMap;
|
|||
use regex::Regex;
|
||||
|
||||
use core::Route;
|
||||
use plugin::{Plugin, PluginChain, TransformFileResult, RbxChangeResult, FileChangeResult};
|
||||
use middleware::{Middleware, MiddlewareChain, TransformFileResult, RbxChangeResult, FileChangeResult};
|
||||
use rbx::{RbxInstance, RbxValue};
|
||||
use vfs::VfsItem;
|
||||
|
||||
|
|
@ -17,16 +17,16 @@ static SERVER_INIT: &'static str = "init.server.lua";
|
|||
static CLIENT_INIT: &'static str = "init.client.lua";
|
||||
static MODULE_INIT: &'static str = "init.lua";
|
||||
|
||||
pub struct ScriptPlugin;
|
||||
pub struct ScriptMiddleware;
|
||||
|
||||
impl ScriptPlugin {
|
||||
pub fn new() -> ScriptPlugin {
|
||||
ScriptPlugin
|
||||
impl ScriptMiddleware {
|
||||
pub fn new() -> ScriptMiddleware {
|
||||
ScriptMiddleware
|
||||
}
|
||||
}
|
||||
|
||||
impl Plugin for ScriptPlugin {
|
||||
fn transform_file(&self, plugins: &PluginChain, vfs_item: &VfsItem) -> TransformFileResult {
|
||||
impl Middleware for ScriptMiddleware {
|
||||
fn transform_file(&self, middlewares: &MiddlewareChain, vfs_item: &VfsItem) -> TransformFileResult {
|
||||
match vfs_item {
|
||||
&VfsItem::File { ref contents, .. } => {
|
||||
let name = vfs_item.name();
|
||||
|
|
@ -69,10 +69,10 @@ impl Plugin for ScriptPlugin {
|
|||
}
|
||||
};
|
||||
|
||||
let mut rbx_item = match self.transform_file(plugins, init_item) {
|
||||
let mut rbx_item = match self.transform_file(middlewares, init_item) {
|
||||
TransformFileResult::Value(Some(item)) => item,
|
||||
_ => {
|
||||
eprintln!("Inconsistency detected in ScriptPlugin!");
|
||||
eprintln!("Inconsistency detected in ScriptMiddleware!");
|
||||
return TransformFileResult::Pass;
|
||||
},
|
||||
};
|
||||
|
|
@ -85,7 +85,7 @@ impl Plugin for ScriptPlugin {
|
|||
continue;
|
||||
}
|
||||
|
||||
match plugins.transform_file(child_item) {
|
||||
match middlewares.transform_file(child_item) {
|
||||
Some(child_rbx_item) => {
|
||||
rbx_item.children.push(child_rbx_item);
|
||||
},
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
mod default_plugin;
|
||||
mod script_plugin;
|
||||
mod json_model_plugin;
|
||||
|
||||
pub use self::default_plugin::*;
|
||||
pub use self::script_plugin::*;
|
||||
pub use self::json_model_plugin::*;
|
||||
|
|
@ -4,7 +4,7 @@ use std::io::Read;
|
|||
use std::path::{Path, PathBuf};
|
||||
use std::time::Instant;
|
||||
|
||||
use plugin::PluginChain;
|
||||
use middleware::MiddlewareChain;
|
||||
use vfs::VfsItem;
|
||||
|
||||
/// Represents a virtual layer over multiple parts of the filesystem.
|
||||
|
|
@ -24,7 +24,7 @@ pub struct VfsSession {
|
|||
/// When the Vfs was initialized; used for change tracking.
|
||||
start_time: Instant,
|
||||
|
||||
plugin_chain: &'static PluginChain,
|
||||
middleware_chain: &'static MiddlewareChain,
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize, Deserialize)]
|
||||
|
|
@ -35,12 +35,12 @@ pub struct VfsChange {
|
|||
}
|
||||
|
||||
impl VfsSession {
|
||||
pub fn new(plugin_chain: &'static PluginChain) -> VfsSession {
|
||||
pub fn new(middleware_chain: &'static MiddlewareChain) -> VfsSession {
|
||||
VfsSession {
|
||||
partitions: HashMap::new(),
|
||||
start_time: Instant::now(),
|
||||
change_history: Vec::new(),
|
||||
plugin_chain,
|
||||
middleware_chain,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -164,7 +164,7 @@ impl VfsSession {
|
|||
/// Register a new change to the filesystem at the given timestamp and VFS
|
||||
/// route.
|
||||
pub fn add_change(&mut self, timestamp: f64, route: Vec<String>) {
|
||||
match self.plugin_chain.handle_file_change(&route) {
|
||||
match self.middleware_chain.handle_file_change(&route) {
|
||||
Some(routes) => {
|
||||
for route in routes {
|
||||
self.change_history.push(VfsChange {
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ use serde_json;
|
|||
use project::Project;
|
||||
use vfs::{VfsSession, VfsChange};
|
||||
use rbx::RbxInstance;
|
||||
use plugin::PluginChain;
|
||||
use middleware::MiddlewareChain;
|
||||
|
||||
static MAX_BODY_SIZE: usize = 25 * 1024 * 1024; // 25 MiB
|
||||
|
||||
|
|
@ -117,7 +117,7 @@ where
|
|||
}
|
||||
|
||||
/// Start the Rojo web server and park our current thread.
|
||||
pub fn start(config: WebConfig, project: Project, plugin_chain: &'static PluginChain, vfs: Arc<Mutex<VfsSession>>) {
|
||||
pub fn start(config: WebConfig, project: Project, middleware_chain: &'static MiddlewareChain, vfs: Arc<Mutex<VfsSession>>) {
|
||||
let address = format!("localhost:{}", config.port);
|
||||
|
||||
let server_id = config.server_id.to_string();
|
||||
|
|
@ -190,7 +190,7 @@ pub fn start(config: WebConfig, project: Project, plugin_chain: &'static PluginC
|
|||
.iter()
|
||||
.map(|item| {
|
||||
match *item {
|
||||
Some(ref item) => plugin_chain.transform_file(item),
|
||||
Some(ref item) => middleware_chain.transform_file(item),
|
||||
None => None,
|
||||
}
|
||||
})
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue