Initial database explorer rust server
This commit is contained in:
parent
4700eace15
commit
c6b7f09d39
5 changed files with 90 additions and 1 deletions
|
@ -11,6 +11,9 @@ authors = ["Richard Newman <rnewman@twinql.com>", "Nicholas Alexander <nalexande
|
|||
[dev-dependencies.datomish-cli]
|
||||
path = "cli"
|
||||
|
||||
[dev-dependencies.datomish-explorer]
|
||||
path = "explorer"
|
||||
|
||||
[[bin]]
|
||||
name = "datomish-cli"
|
||||
path = "cli/src/main.rs"
|
||||
path = "cli/src/main.rs"
|
||||
|
|
11
explorer/Cargo.toml
Normal file
11
explorer/Cargo.toml
Normal file
|
@ -0,0 +1,11 @@
|
|||
[package]
|
||||
name = "datomish-explorer"
|
||||
version = "0.0.1"
|
||||
|
||||
[dependencies]
|
||||
iron = "0.4.x"
|
||||
toml = "0.2.1"
|
||||
clap = "2.19.3"
|
||||
|
||||
[dependencies.datomish]
|
||||
path = "../"
|
3
explorer/README.md
Normal file
3
explorer/README.md
Normal file
|
@ -0,0 +1,3 @@
|
|||
# datomish-explorer
|
||||
|
||||
An in-browser IDE for exploring a Datomish database.
|
45
explorer/src/cli.rs
Normal file
45
explorer/src/cli.rs
Normal file
|
@ -0,0 +1,45 @@
|
|||
// Copyright 2016 Mozilla
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License"); you may not use
|
||||
// this file except in compliance with the License. You may obtain a copy of the
|
||||
// License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
// Unless required by applicable law or agreed to in writing, software distributed
|
||||
// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
|
||||
// CONDITIONS OF ANY KIND, either express or implied. See the License for the
|
||||
// specific language governing permissions and limitations under the License.
|
||||
|
||||
extern crate clap;
|
||||
|
||||
use std::str::FromStr;
|
||||
|
||||
pub struct Args {
|
||||
pub database: String,
|
||||
pub port: u16,
|
||||
}
|
||||
|
||||
pub fn get_args() -> Args {
|
||||
let matches = clap::App::new("Datomish Explorer")
|
||||
.version("1.0")
|
||||
.author("Mozilla")
|
||||
.about("An in-browser IDE for exploring a Datomish database")
|
||||
.arg(clap::Arg::with_name("database")
|
||||
.short("d")
|
||||
.long("database")
|
||||
.value_name("FILE")
|
||||
.help("Path to the Datomish database to explore")
|
||||
.takes_value(true)
|
||||
.required(true))
|
||||
.arg(clap::Arg::with_name("port")
|
||||
.short("p")
|
||||
.long("port")
|
||||
.value_name("INTEGER")
|
||||
.help("Port to serve explorer from, i.e. `localhost:PORT`")
|
||||
.default_value("3333")
|
||||
.takes_value(true))
|
||||
.get_matches();
|
||||
|
||||
Args {
|
||||
port: u16::from_str(matches.value_of("port").unwrap()).unwrap(),
|
||||
database: matches.value_of("database").unwrap().to_string(),
|
||||
}
|
||||
}
|
27
explorer/src/main.rs
Normal file
27
explorer/src/main.rs
Normal file
|
@ -0,0 +1,27 @@
|
|||
// Copyright 2016 Mozilla
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License"); you may not use
|
||||
// this file except in compliance with the License. You may obtain a copy of the
|
||||
// License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
// Unless required by applicable law or agreed to in writing, software distributed
|
||||
// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
|
||||
// CONDITIONS OF ANY KIND, either express or implied. See the License for the
|
||||
// specific language governing permissions and limitations under the License.
|
||||
|
||||
extern crate iron;
|
||||
|
||||
mod cli;
|
||||
|
||||
use cli::{get_args};
|
||||
use iron::prelude::*;
|
||||
use iron::status;
|
||||
|
||||
fn main() {
|
||||
let args = get_args();
|
||||
fn hello_world(_: &mut Request) -> IronResult<Response> {
|
||||
Ok(Response::with((status::Ok, "Hello World!")))
|
||||
}
|
||||
|
||||
println!("Running Datomish Explorer at localhost:{} for database at {}", args.port, args.database);
|
||||
let _server = Iron::new(hello_world).http(("localhost", args.port)).unwrap();
|
||||
}
|
Loading…
Reference in a new issue