liftinstall/src/main.rs

86 lines
1.8 KiB
Rust
Raw Normal View History

2018-01-27 03:27:41 +00:00
#![windows_subsystem = "windows"]
#![feature(extern_prelude)]
#![feature(plugin)]
#![plugin(phf_macros)]
2018-01-26 12:29:28 +00:00
extern crate web_view;
2018-01-29 10:27:54 +00:00
extern crate futures;
extern crate hyper;
extern crate hyper_tls;
extern crate tokio_core;
2018-01-30 04:53:28 +00:00
extern crate number_prefix;
2018-01-30 04:54:44 +00:00
extern crate reqwest;
2018-01-30 04:53:28 +00:00
extern crate phf;
2018-01-26 12:29:28 +00:00
2018-01-27 03:27:41 +00:00
extern crate serde;
#[macro_use]
extern crate serde_derive;
extern crate serde_json;
extern crate toml;
2018-01-29 12:28:14 +00:00
extern crate regex;
extern crate semver;
2018-01-30 07:29:34 +00:00
extern crate zip;
2018-01-26 12:29:28 +00:00
mod assets;
2018-01-27 03:27:41 +00:00
mod config;
mod http;
2018-01-27 03:27:41 +00:00
mod installer;
mod rest;
mod sources;
2018-01-26 12:29:28 +00:00
use web_view::*;
2018-01-27 03:27:41 +00:00
use config::Config;
use installer::InstallerFramework;
2018-01-26 12:29:28 +00:00
2018-01-27 03:27:41 +00:00
use rest::WebServer;
// TODO: Fetch this over a HTTP request?
2018-01-27 11:58:56 +00:00
static RAW_CONFIG: &'static str = include_str!("../config.toml");
2018-01-26 12:29:28 +00:00
fn main() {
2018-01-27 03:27:41 +00:00
let config = Config::from_toml_str(RAW_CONFIG).unwrap();
let app_name = config.general.name.clone();
let current_exe = std::env::current_exe().unwrap();
let current_path = current_exe.parent().unwrap();
let metadata_file = current_path.join("metadata.json");
println!("Attempting to open: {:?}", metadata_file);
2018-05-03 03:30:58 +00:00
let framework = if metadata_file.exists() {
InstallerFramework::new_with_db(config, current_path).unwrap()
2018-05-03 03:30:58 +00:00
} else {
InstallerFramework::new(config)
};
2018-01-27 03:27:41 +00:00
// blah 1
2018-01-27 03:27:41 +00:00
let server = WebServer::new(framework).unwrap();
2018-01-26 12:29:28 +00:00
// Startup HTTP server for handling the web view
2018-01-27 03:27:41 +00:00
let http_address = format!("http://{}", server.get_addr());
println!("{}", http_address);
2018-01-26 12:29:28 +00:00
// Init the web view
let size = (1024, 550);
let resizable = false;
let debug = true;
run(
&format!("{} Installer", app_name),
2018-05-03 13:08:26 +00:00
Content::Url(http_address),
2018-01-26 12:29:28 +00:00
Some(size),
resizable,
debug,
|_| {},
|_, _, _| {},
(),
2018-01-26 12:29:28 +00:00
);
}