major overhaul

unstable
penguin
parent b207661d00
commit 8b321a49cc

219
Cargo.lock generated

@ -9,6 +9,12 @@ dependencies = [
"memchr",
]
[[package]]
name = "arrayref"
version = "0.3.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544"
[[package]]
name = "arrayvec"
version = "0.5.1"
@ -32,12 +38,29 @@ version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f8aac770f1885fd7e387acedd76065302551364496e46b3dd00860b2f8359b9d"
[[package]]
name = "base64"
version = "0.12.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff"
[[package]]
name = "bitflags"
version = "1.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693"
[[package]]
name = "blake2b_simd"
version = "0.5.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "afa748e348ad3be8263be728124b24a24f268266f6f5d58af9d75f6a40b5c587"
dependencies = [
"arrayref",
"arrayvec",
"constant_time_eq",
]
[[package]]
name = "cfg-if"
version = "0.1.10"
@ -88,10 +111,64 @@ dependencies = [
"serde 1.0.114",
"serde-hjson",
"serde_json",
"toml",
"toml 0.5.7",
"yaml-rust",
]
[[package]]
name = "constant_time_eq"
version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc"
[[package]]
name = "crossbeam-utils"
version = "0.7.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8"
dependencies = [
"autocfg",
"cfg-if",
"lazy_static",
]
[[package]]
name = "directories"
version = "3.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f8fed639d60b58d0f53498ab13d26f621fd77569cc6edb031f4cc36a2ad9da0f"
dependencies = [
"dirs-sys",
]
[[package]]
name = "dirs-sys"
version = "0.3.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8e93d7f5705de3e49895a2b5e0b8855a1c27f080192ae9c32a6432d50741a57a"
dependencies = [
"libc",
"redox_users",
"winapi",
]
[[package]]
name = "error-chain"
version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d9435d864e017c3c6afeac1654189b06cdb491cf2ff73dbf0d73b0f292f42ff8"
[[package]]
name = "getrandom"
version = "0.1.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fc587bc0ec293155d5bfa6b9891ec18a1e330c234f896ea47fbada4cadbe47e6"
dependencies = [
"cfg-if",
"libc",
"wasi",
]
[[package]]
name = "heck"
version = "0.3.1"
@ -113,9 +190,60 @@ dependencies = [
[[package]]
name = "igloo"
version = "0.1.0"
dependencies = [
"igloo_agent",
"igloo_cli",
"igloo_core",
"igloo_make",
"igloo_manifest",
]
[[package]]
name = "igloo_agent"
version = "0.1.0"
[[package]]
name = "igloo_base"
version = "0.1.0"
dependencies = [
"directories",
]
[[package]]
name = "igloo_cli"
version = "0.1.0"
dependencies = [
"clap",
"config",
"igloo_base",
]
[[package]]
name = "igloo_core"
version = "0.1.0"
dependencies = [
"clap",
"config",
"igloo_base",
"igloo_cli",
"igloo_make",
"igloo_manifest",
"zmq",
]
[[package]]
name = "igloo_make"
version = "0.1.0"
dependencies = [
"igloo_base",
]
[[package]]
name = "igloo_manifest"
version = "0.1.0"
dependencies = [
"config",
"igloo_base",
]
[[package]]
@ -174,12 +302,32 @@ version = "0.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8dd5a6d5999d9907cda8ed67bbd137d3af8085216c2ac62de5be860bd41f304a"
[[package]]
name = "log"
version = "0.4.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4fabed175da42fed1fa0746b0ea71f412aa9d35e76e95e59b192c64b9dc2bf8b"
dependencies = [
"cfg-if",
]
[[package]]
name = "memchr"
version = "2.3.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3728d817d99e5ac407411fa471ff9800a778d88a24685968b36824eaf4bee400"
[[package]]
name = "metadeps"
version = "1.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "73b122901b3a675fac8cecf68dcb2f0d3036193bc861d1ac0e1c337f7d5254c2"
dependencies = [
"error-chain",
"pkg-config",
"toml 0.2.1",
]
[[package]]
name = "nom"
version = "5.1.2"
@ -215,6 +363,12 @@ version = "2.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "06de47b848347d8c4c94219ad8ecd35eb90231704b067e67e6ae2e36ee023510"
[[package]]
name = "pkg-config"
version = "0.3.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3831453b3449ceb48b6d9c7ad7c96d5ea673e9b470a1dc578c2ce6521230884c"
[[package]]
name = "proc-macro-error"
version = "1.0.4"
@ -257,6 +411,23 @@ dependencies = [
"proc-macro2",
]
[[package]]
name = "redox_syscall"
version = "0.1.57"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce"
[[package]]
name = "redox_users"
version = "0.3.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "de0737333e7a9502c789a36d7c7fa6092a49895d4faa31ca5df163857ded2e9d"
dependencies = [
"getrandom",
"redox_syscall",
"rust-argon2",
]
[[package]]
name = "regex"
version = "1.3.9"
@ -275,6 +446,18 @@ version = "0.6.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "26412eb97c6b088a6997e05f69403a802a92d520de2f8e63c2b65f9e0f47c4e8"
[[package]]
name = "rust-argon2"
version = "0.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9dab61250775933275e84053ac235621dfb739556d5c54a2f2e9313b7cf43a19"
dependencies = [
"base64",
"blake2b_simd",
"constant_time_eq",
"crossbeam-utils",
]
[[package]]
name = "rust-ini"
version = "0.13.0"
@ -382,6 +565,12 @@ dependencies = [
"lazy_static",
]
[[package]]
name = "toml"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "736b60249cb25337bc196faa43ee12c705e426f3d55c214d73a4e7be06f92cb4"
[[package]]
name = "toml"
version = "0.5.7"
@ -421,6 +610,12 @@ version = "0.9.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b5a972e5669d67ba988ce3dc826706fb0a8b01471c088cb0b6110b805cc36aed"
[[package]]
name = "wasi"
version = "0.9.0+wasi-snapshot-preview1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519"
[[package]]
name = "winapi"
version = "0.3.9"
@ -460,3 +655,25 @@ checksum = "39f0c922f1a334134dc2f7a8b67dc5d25f0735263feec974345ff706bcf20b0d"
dependencies = [
"linked-hash-map 0.5.3",
]
[[package]]
name = "zmq"
version = "0.9.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "aad98a7a617d608cd9e1127147f630d24af07c7cd95ba1533246d96cbdd76c66"
dependencies = [
"bitflags",
"libc",
"log",
"zmq-sys",
]
[[package]]
name = "zmq-sys"
version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d33a2c51dde24d5b451a2ed4b488266df221a5eaee2ee519933dc46b9a9b3648"
dependencies = [
"libc",
"metadeps",
]

@ -10,5 +10,12 @@ license="GPL-3.0+"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
clap = "3.0.0-beta.2"
config = "0.10"
igloo_core = { path = "./igloo_core" }
igloo_cli = { path = "./igloo_cli" }
igloo_agent = { path = "./igloo_agent" }
igloo_manifest = { path = "./igloo_manifest" }
igloo_make = { path = "./igloo_make" }
[workspace]
members = ["igloo_base", "igloo_core", "igloo_cli", "igloo_agent", "igloo_manifest", "igloo_make"]

@ -0,0 +1,9 @@
[package]
name = "igloo_agent"
version = "0.1.0"
authors = ["Penguin <penguin@epenguin.net>"]
edition = "2018"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]

@ -0,0 +1,6 @@
use igloo_cli::*;
fn main() {
let x: IglooCliCfg = IglooCliCfg::IglooCliCfgOpt1;
println!("Hello, world!");
}

@ -0,0 +1,10 @@
[package]
name = "igloo_base"
version = "0.1.0"
authors = ["Penguin <penguin@epenguin.net>"]
edition = "2018"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
directories = "3.0.1"

@ -0,0 +1,109 @@
mod env_info;
use std::path::PathBuf;
use std::env;
use directories::*;
#[cfg(test)]
mod tests {
#[test]
fn it_works() {
assert_eq!(2 + 2, 4);
}
}
#[derive(Debug)]
#[derive(PartialEq)]
pub enum IglooInstType
{
Null = -1,
New = 0,
Run = 1,
Flash = 2,
Debug = 3,
Clean = 4,
Erase = 5,
GenDoc = 6,
}
#[derive(Debug)]
#[derive(PartialEq)]
pub enum IglooErrType
{
ErrNone = 0,
ErrUnknown = 1,
ConfigNotFound = 2,
ConfigFound = 3,
UnknownInstType = 4,
NewCalledInsideProject = 5,
FolderAlreadyExists = 6,
InvalidProjectName = 7,
InvalidEnvInfo = 8,
InvalidTarget = 9,
/// Failed to load ePenguin Make Manifest
/// This means igloo couldn't find the master
/// make manifest
FailedToLoadMasterMakeManifest = 10,
/// Failed to load ePenguin Target Manifest
/// This means igloo couldn't find the master
/// target manifest
FailedToLoadMasterTargetManifest = 11,
/// This means igloo couldn't find the scripts dir
/// which should be located within a target directory
/// It should be impossible for igloo to generate a target
/// inside a project without also generating a scripts directory.
/// The likely culprit of this failure is a user has messed with the folder
FailedToFindTargetScriptsDir = 12,
}
#[derive(Debug)]
#[derive(PartialEq)]
#[derive(Clone)]
pub struct IglooEnvInfo
{
// Current Working Directory
pub cwd: PathBuf,
// Home Directory
pub hd: PathBuf,
// ESF Directory
pub esfd: PathBuf,
}
impl IglooEnvInfo
{
/// Returns the environment information for the igloo call
pub fn get_env_info() -> IglooEnvInfo
{
IglooEnvInfo
{
cwd: env::current_dir().unwrap(),
hd: match UserDirs::new()
{
Some(v) => v.home_dir().to_owned(),
None =>
{
println!("Error: Failed to get home directory.\n\
This should never happen. Exiting...");
std::process::exit(1);
}
},
esfd: match std::env::var("ESF_DIR")
{
Ok(v) =>
{
std::path::PathBuf::from(&v.to_owned())
}
Err(e) =>
{
// Note: Need to change new to return errors
// instead of exiting early
println!("Error: $ESF_DIR not defined as an environment\
variable -- {:?}", e);
std::process::exit(1);
}
}
}
}
}

@ -0,0 +1,12 @@
[package]
name = "igloo_cli"
version = "0.1.0"
authors = ["Penguin <penguin@epenguin.net>"]
edition = "2018"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
igloo_base = { path = "../igloo_base" }
clap = "3.0.0-beta.2"
config = "0.10"

@ -0,0 +1,93 @@
extern crate clap;
extern crate config;
use igloo_base::*;
use igloo_base::IglooInstType::*;
use igloo_base::IglooErrType::*;
use clap::{App, Arg, ArgMatches};
#[cfg(test)]
mod tests {
#[test]
fn it_works() {
assert_eq!(2 + 2, 4);
}
}
/// runs the clap initializer to get command line arguments
pub fn igloo_app() -> ArgMatches
{
let ret_app = App::new("igloo")
.about(clap::crate_description!())
.version(clap::crate_version!())
.setting(clap::AppSettings::SubcommandRequiredElseHelp)
.subcommand(App::new("new")
.about("Creates a new igloo project")
.arg(Arg::new("project_name")
.required(true)
.about("The name of the project to be created"),)
.arg(Arg::new("target")
.required(true)
.about("MCU Target")
.short('t')
.long("target")
.takes_value(true)),)
.subcommand(App::new("run")
.about("Compiles if needed. Flashes MCU and runs \
current project on default target.")
.arg(Arg::new("build_type")
.required(false)
.about("Release or Debug build type\n\
Defaults to Debug")),)
.subcommand(App::new("flash")
.about("Flashes target mcu or multiple mcus")
.arg(Arg::new("build_type")
.required(false)
.about("Release or Debug build type\n\
Defaults to Debug")),)
.subcommand(App::new("erase")
.about("Erases flash from target mcu or target mcus"))
.get_matches();
ret_app
}
pub fn igloo_subcommand(args: &ArgMatches) -> Result<IglooInstType, IglooErrType>
{
let mut _res_type: IglooInstType = Null;
match args.subcommand_name()
{
Some("new") =>
{
println!("Igloo new was called!");
_res_type = New;
}
Some("run") =>
{
println!("Igloo run was called!");
_res_type = Run;
}
Some("flash") =>
{
println!("Igloo flash was called!");
_res_type = Flash;
}
Some("erase") =>
{
println!("Igloo erase was called!");
_res_type = Erase;
}
None => unreachable!(),
_ => unreachable!(),
}
if _res_type == Null
{
return Err(ErrUnknown)
}
Ok(_res_type)
}

@ -0,0 +1,16 @@
[package]
name = "igloo_core"
version = "0.1.0"
authors = ["Penguin <penguin@epenguin.net>"]
edition = "2018"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
clap = "3.0.0-beta.2"
config = "0.10"
igloo_cli = { path = "../igloo_cli" }
igloo_manifest = { path = "../igloo_manifest" }
igloo_make = { path = "../igloo_make" }
igloo_base = { path = "../igloo_base" }
zmq = "0.9"

@ -0,0 +1,51 @@
use igloo_base::*;
use igloo_base::IglooErrType::*;
use crate::Igloo;
use crate::igloo_project::IglooPrj;
pub fn run(prj_name: &str, target: &str) -> IglooErrType
{
let res_err: IglooErrType = ErrNone;
res_err
}
pub fn new(inst: &Igloo, prj_name: &str, target: &str)
-> IglooErrType
{
let mut res_err: IglooErrType = ErrNone;
// Check if we are already inside of an igloo project
// Creating an igloo project inside an igloo project
// is a no no
if std::path::Path::new(".igloo").exists()
{
res_err = NewCalledInsideProject;
return res_err
}
// Check if the project folder already exists
// Don't want to accidentally overwrite anything
if std::path::Path::new(prj_name).exists()
{
res_err = FolderAlreadyExists;
return res_err
}
let mut project = IglooPrj::new(inst, prj_name, target);
match project
{
Err(e) =>
{
println!("Error spawning project: {:?}", e);
res_err = e;
return res_err
}
_ => (),
}
let res_err = project.unwrap().populate();
if res_err != ErrNone
{
return res_err
}
res_err
}

@ -1,10 +1,15 @@
use crate::igloo::{Igloo, IglooEnvInfo, IglooErrType};
use crate::igloo_manifest::IglooManifest;
use std::collections::HashMap;
use igloo_base::*;
use igloo_base::IglooErrType::*;
use igloo_manifest::*;
use crate::Igloo;
use crate::igloo_target::IglooTarget;
use std::vec::Vec;
use std::fs::OpenOptions;
use std::fs::File;
use std::io::prelude::*;
use std::os::unix::fs;
// New Project
// --- Verify location
// --- Populate base folders
@ -20,19 +25,6 @@ pub struct IglooPrj
project_dir: std::path::PathBuf,
}
pub struct IglooTargetManifest
{
links: HashMap<String, config::Value>,
includes: Vec<config::Value>,
openocd: HashMap<String, config::Value>,
}
pub struct IglooTarget
{
name: String,
make_manifest: HashMap<String, config::Value>,
target_manifest: IglooTargetManifest,
}
impl IglooPrj
{
@ -49,18 +41,18 @@ impl IglooPrj
pub fn new(inst: &Igloo, nameIn: &str, targetIn: &str)
-> Result<IglooPrj, IglooErrType>
{
let mut res_err = IglooErrType::IGLOO_ERR_NONE;
let mut res_err = ErrNone;
if String::from(nameIn).is_empty()
{
res_err = IglooErrType::IGLOO_INVALID_PROJECT_NAME;
res_err = InvalidProjectName;
return Err(res_err)
}
if res_err != IglooErrType::IGLOO_ERR_NONE
if res_err != ErrNone
{
return Err(res_err)
}
match IglooManifest::target_exists(inst, targetIn)
match target_exists(&inst.master_make_man, &inst.master_target_man, targetIn)
{
Ok(v) =>
{
@ -71,7 +63,7 @@ impl IglooPrj
else
{
println!("Couldn't verify target exists {}", nameIn);
return Err(IglooErrType::IGLOO_INVALID_TARGET)
return Err(InvalidTarget)
}
}
Err(e) =>
@ -80,9 +72,9 @@ impl IglooPrj
}
}
let mut _targ_make_table_name = inst.target_manifest.get_str(
let mut _targ_make_table_name = inst.master_target_man.get_str(
&("target.make.".to_owned() + &targetIn)).unwrap();
let mut _targ_manifest_file_name = inst.target_manifest.get_str(
let mut _targ_manifest_file_name = inst.master_target_man.get_str(
&("target.manifest.".to_owned() + &targetIn)).unwrap();
let mut temp: Vec<IglooTarget> = Vec::new();
@ -97,7 +89,7 @@ impl IglooPrj
{
name: String::from(nameIn),
target_bank: temp,
project_dir: IglooEnvInfo::info().cwd.join(nameIn),
project_dir: IglooEnvInfo::get_env_info().cwd.join(nameIn),
})
}
@ -105,7 +97,7 @@ impl IglooPrj
{
// Create new directory
let mut active_dir = IglooEnvInfo::info().cwd;
let mut active_dir = IglooEnvInfo::get_env_info().cwd;
//println!("Active Directory: {:?}", active_dir.display());
println!("NAME: {}", self.name);
active_dir.push(&self.name);
@ -167,7 +159,7 @@ impl IglooPrj
self.gen_igloo_header();
self.gen_igloo_main();
//self.debugManifests();
IglooErrType::IGLOO_ERR_NONE
ErrNone
}
pub fn debugManifests(&self)
@ -175,7 +167,7 @@ impl IglooPrj
for target in &self.target_bank
{
println!("Target manifest:");
for (key, val) in &target.target_manifest.links
for (key, val) in &target.links
{
println!("{} = {:?}", key, val);
}
@ -213,7 +205,7 @@ impl IglooPrj
//sym link gdb scripts
let mut gdb_scripts_paths = std::fs::read_dir(
&(String::from(
IglooEnvInfo::info()
IglooEnvInfo::get_env_info()
.esfd.to_str()
.unwrap()) + "/scripts"))
.unwrap();
@ -240,9 +232,9 @@ impl IglooPrj
let mut prj_esf_dir = self.project_dir.join("ESF");
for (sym_dir, loc_in_esf) in &target.target_manifest.links
for (sym_dir, loc_in_esf) in &target.links
{
let link_to_dir = IglooEnvInfo::info()
let link_to_dir = IglooEnvInfo::get_env_info()
.esfd
.join(&loc_in_esf.clone().into_str().unwrap());
std::os::unix::fs::symlink(link_to_dir, prj_esf_dir.join(sym_dir)).unwrap();
@ -251,16 +243,16 @@ impl IglooPrj
self.gen_openocd_config(&target);
self.gen_makefile(&target);
}
IglooErrType::IGLOO_ERR_NONE
ErrNone
}
pub fn gen_openocd_config(&self, target: &IglooTarget) -> IglooErrType
{
let mut ret: IglooErrType = IglooErrType::IGLOO_ERR_NONE;
let mut ret: IglooErrType = ErrNone;
let mut openocd_cfg = self.project_dir.join(".igloo/target");
openocd_cfg.push(&target.name);
openocd_cfg.push("scripts");
openocd_cfg.push(&target.name);
openocd_cfg.push(&self.name);
if openocd_cfg.with_extension("cfg").exists()
{
std::fs::remove_file(openocd_cfg.with_extension("cfg"));
@ -279,14 +271,12 @@ impl IglooPrj
writeln!(ocfg_file, "\n# Transport Select").unwrap();
writeln!(ocfg_file, "source [find interface//{}.cfg]", target
.target_manifest
.openocd.get("transport_cfg")
.unwrap()
.clone()
.into_str()
.unwrap()).unwrap();
writeln!(ocfg_file, "transport select {}", target
.target_manifest
.openocd.get("transport")
.unwrap()
.clone()
@ -296,7 +286,6 @@ impl IglooPrj
writeln!(ocfg_file, "\n# Chip Information").unwrap();
writeln!(ocfg_file, "set CHIPNAME {}", target.name);
writeln!(ocfg_file, "source [find target//{}.cfg]", target
.target_manifest
.openocd.get("chip_name_cfg")
.unwrap()
.clone()
@ -315,7 +304,7 @@ impl IglooPrj
// If the Makefile already exists, trash it
if target_root.join("Makefile").exists()
{
std::fs::remove_file(target_root.join("Makefile"));
std::fs::remove_file(target_root.join("Makefile")).unwrap();
}
// Make our Makefile, set it to append mode
@ -710,11 +699,10 @@ endif");
}
Some(v) =>
{
write!(app_file, "\n\t").unwrap();
write!(app_file, "\n").unwrap();
for cflag in v.clone().into_array().unwrap()
{
writeln!(app_file, "\\").unwrap();
write!(app_file, "\t{}", cflag).unwrap();
writeln!(app_file, "\t{}", cflag).unwrap();
}
},
}
@ -745,11 +733,10 @@ endif");
}
Some(v) =>
{
write!(app_file, "\n\t").unwrap();
write!(app_file, "\n").unwrap();
for cflag in v.clone().into_array().unwrap()
{
writeln!(app_file, "\\").unwrap();
write!(app_file, "\t{}", cflag).unwrap();
writeln!(app_file, "\t{}", cflag).unwrap();
}
},
}
@ -780,11 +767,10 @@ endif");
}
Some(v) =>
{
write!(app_file, "\n\t").unwrap();
write!(app_file, "\n").unwrap();
for cflag in v.clone().into_array().unwrap()
{
writeln!(app_file, "\\").unwrap();
write!(app_file, "\t{}", cflag).unwrap();
writeln!(app_file, "\t{}", cflag).unwrap();
}
},
}
@ -815,11 +801,10 @@ endif");
}
Some(v) =>
{
write!(app_file, "\n\t").unwrap();
write!(app_file, "\n").unwrap();
for cflag in v.clone().into_array().unwrap()
{
writeln!(app_file, "\\").unwrap();
write!(app_file, "\t{}", cflag).unwrap();
writeln!(app_file, "\t{}", cflag).unwrap();
}
},
}
@ -849,11 +834,10 @@ endif");
}
Some(v) =>
{
write!(app_file, "\n\t").unwrap();
write!(app_file, "\n").unwrap();
for cflag in v.clone().into_array().unwrap()
{
writeln!(app_file, "\\").unwrap();
write!(app_file, "\t{}", cflag).unwrap();
writeln!(app_file, "\t{}", cflag).unwrap();
}
},
}
@ -883,11 +867,10 @@ endif");
}
Some(v) =>
{
write!(app_file, "\n\t").unwrap();
write!(app_file, "\n").unwrap();
for cflag in v.clone().into_array().unwrap()
{
writeln!(app_file, "\\").unwrap();
write!(app_file, "\t{}", cflag).unwrap();
writeln!(app_file, "\t{}", cflag).unwrap();
}
},
}
@ -992,13 +975,12 @@ endif\n").unwrap();
}
Some(v) =>
{
write!(app_file, "\n\t").unwrap();
write!(app_file, "\n").unwrap();
for cflag in v.clone().into_array().unwrap()
{
if !cflag.to_string().is_empty()
{
writeln!(app_file, " \\").unwrap();
write!(app_file, "\t{}", cflag).unwrap()
writeln!(app_file, "\t{}", cflag).unwrap()
}
}
},
@ -1033,22 +1015,19 @@ endif\n").unwrap();
}
Some(v) =>
{
write!(app_file, "\n\t").unwrap();
write!(app_file, "\n").unwrap();
for cflag in v.clone().into_array().unwrap()
{
if !cflag.to_string().is_empty()
{
writeln!(app_file, " \\").unwrap();
write!(app_file, "\t{}", cflag).unwrap()
writeln!(app_file, "\t{}", cflag).unwrap()
}
}
},
}
writeln!(app_file, "\n\nQUOTE:=\"").unwrap();
IglooErrType::IGLOO_ERR_NONE
ErrNone
}
pub fn gen_igloo_header(&self) -> IglooErrType
@ -1074,7 +1053,7 @@ endif\n").unwrap();
{
println!("MCU definition not found in make manifest.\
\nCould not generate igloo.h");
return IglooErrType::IGLOO_ERR_UNKNOWN
return ErrUnknown
}
Some(v) =>
{
@ -1082,13 +1061,13 @@ endif\n").unwrap();
v.to_string()).unwrap();
}
}
for inc_file in &target.target_manifest.includes
for inc_file in &target.includes
{
writeln!(igloo_h_file, "\t#include \"{}\"", inc_file).unwrap();
}
writeln!(igloo_h_file, "#endif").unwrap();
}
IglooErrType::IGLOO_ERR_NONE
ErrNone
}
pub fn gen_igloo_main(&self) -> IglooErrType
@ -1108,113 +1087,7 @@ endif\n").unwrap();
writeln!(igloo_main_c_file, "#include \"igloo.h\"").unwrap();
writeln!(igloo_main_c_file, "\n\nint main()\n{{\n\treturn 0;\n}}").unwrap();
IglooErrType::IGLOO_ERR_NONE
}
}
impl IglooTarget
{
pub fn default() -> IglooTarget
{
IglooTarget
{
name: String::from(""),
make_manifest: HashMap::default(),
target_manifest: IglooTargetManifest::default(),
}
}
pub fn from(inst: &Igloo, name_in: String,
target_make_loc: &str,
target_man_loc: &str) -> Result<IglooTarget, IglooErrType>
{
// now make man
let mut makefile: HashMap<String, config::Value> = HashMap::new();
let mut make_table_head = &target_make_loc[0..target_make_loc.len()];
let mut b_quit: bool = false;
loop
{
let mut _active_table = inst.make_manifest.get_table(&make_table_head).unwrap();
for (name, val) in _active_table
{
match val.clone().into_table()
{
Err(_e) =>
{
if !makefile.contains_key(&name)
{
makefile.insert(name, val);
}
else
{
let mut newval = val.clone().into_array().unwrap();
let mut newvec = makefile.get_key_value(&name).unwrap().1.clone().into_array().unwrap();
newvec.append(&mut newval);
makefile.insert(name, config::Value::from(newvec));
}
}
Ok(_v) => {}
}
}
match make_table_head.rfind('.')
{
None => b_quit = true,
Some(v) => make_table_head = &make_table_head[0..v],
}
if b_quit
{
break;
}
}
Ok(IglooTarget
{
name: String::from(name_in),
make_manifest: makefile,
target_manifest: IglooTargetManifest::from(target_man_loc),
})
}
}
impl IglooTargetManifest
{
pub fn default() -> IglooTargetManifest
{
IglooTargetManifest
{
links: HashMap::default(),
includes: Vec::default(),
openocd: HashMap::default(),
}
ErrNone
}
pub fn from(target_man_loc: &str) -> IglooTargetManifest
{
// target man first
let mut target_man = config::Config::new();
target_man.merge(
config::File::with_name(
IglooEnvInfo::info().esfd.join(target_man_loc)
.to_str().unwrap()))
.unwrap();
IglooTargetManifest
{
links: target_man.get_table("esf.links").unwrap(),
includes: target_man.get_table("esf.includes")
.unwrap()
.get("IGLOO_INCLUDES")
.unwrap()
.clone()
.into_array()
.unwrap(),
openocd: target_man.get_table("esf.openocd")
.unwrap(),
}
}
}

@ -0,0 +1,118 @@
use igloo_base::*;
use igloo_base::IglooErrType::*;
use crate::config::Config;
use crate::Igloo;
use std::collections::HashMap;
pub struct IglooTarget
{
// name, links, and includes are extracted from a manifest
pub name: String,
pub links: HashMap<String, config::Value>,
pub includes: Vec<config::Value>,
pub openocd: HashMap<String, config::Value>,
pub make_manifest: HashMap<String, config::Value>,
}
impl IglooTarget
{
pub fn default() -> IglooTarget
{
IglooTarget
{
name: String::from(""),
make_manifest: HashMap::default(),
links: HashMap::default(),
includes: Vec::default(),
openocd: HashMap::default(),
}
}
pub fn from(inst: &Igloo, name_in: String,
target_make_loc: &str,
target_man_loc: &str) -> Result<IglooTarget, IglooErrType>
{
// target man first
let mut target_man = Config::new();
target_man.merge(
config::File::with_name(
IglooEnvInfo::get_env_info().esfd.join(target_man_loc)
.to_str().unwrap()))
.unwrap();
// now make man
let mut makefile: HashMap<String, config::Value> = HashMap::new();
let mut make_table_head = &target_make_loc[0..target_make_loc.len()];
let mut b_quit: bool = false;
loop
{
let mut _active_table = inst.master_make_man.get_table(&make_table_head).unwrap();
for (name, val) in _active_table
{
match val.clone().into_table()
{
Err(_e) =>
{
if !makefile.contains_key(&name)
{
makefile.insert(name, val);
}
else
{
let mut newval = val.clone().into_array().unwrap();
let mut newvec = makefile.get_key_value(&name).unwrap().1.clone().into_array().unwrap();
newvec.append(&mut newval);
makefile.insert(name, config::Value::from(newvec));
}
}
Ok(_v) => {}
}
}
match make_table_head.rfind('.')
{
None => b_quit = true,
Some(v) => make_table_head = &make_table_head[0..v],
}
if b_quit
{
break;
}
}
Ok(IglooTarget
{
name: String::from(name_in),
make_manifest: makefile,
links: target_man.get_table("esf.links").unwrap(),
includes: target_man.get_table("esf.includes")
.unwrap()
.get("IGLOO_INCLUDES")
.unwrap()
.clone()
.into_array()
.unwrap(),
openocd: target_man.get_table("esf.openocd")
.unwrap(),
})
}
/// generate all folders needed for the target
pub fn generate(&self) -> IglooErrType
{
ErrNone
}
/// populates all folders needed for the target
pub fn populate(&self) -> IglooErrType
{
ErrNone
}
/// generates the makefile for a target
/// this will be updated as the user edits their project toml
pub fn generate_makefile(&self) -> IglooErrType
{
ErrNone
}
}

@ -0,0 +1,149 @@
extern crate clap;
extern crate config;
mod igloo_action;
mod igloo_project;
mod igloo_target;
use igloo_base::*;
use igloo_base::IglooInstType::*;
use igloo_base::IglooErrType::*;
use igloo_cli::*;
use igloo_manifest::*;
use igloo_project::IglooPrj;
use config::Config;
#[cfg(test)]
mod tests {
#[test]
fn it_works() {
assert_eq!(2 + 2, 4);
}
}
/// Igloo should contain a config and any important environment information.
/// Upon running igloo, an instanc is created, env information is stored, and then
/// things happen.
pub struct Igloo
{
cli_conf: clap::ArgMatches,
env_info: IglooEnvInfo,
master_make_man: Config,
master_target_man: Config,
}
impl Igloo
{
/// The new function creates an instance of igloo. The idea is I create an igloo,
/// run start on it so I can collect environment information and process what command
/// the user would like to run, and then I run that command or deal with errors.
///
/// This function handles all cli input and stores it. It is parsed for errors in the
/// start function.
pub fn new() -> Igloo
{
Igloo
{
env_info: IglooEnvInfo::get_env_info(),
master_make_man: Config::new(),
master_target_man: Config::new(),
cli_conf: igloo_app(),
}
}
/// The start function processes the command you want igloo to run
/// It theoretically should never return an error. It should just exit.
/// If an error was returned, It was my fault and not the users.
/// It is really only here to help me debug.
///
/// The Inst Type is only returned for usage outside of this struct.
pub fn start(&mut self) -> Result<IglooInstType, IglooErrType>
{
let mut res: IglooInstType = Null;
// Load manifests first
match get_master_make_manifest(&mut self.master_make_man)
{
ErrNone => (),
v =>
{
println!("{:?}", v);
return Err(v)
}
}
match get_master_target_manifest(&mut self.master_target_man)
{
ErrNone => (),
v =>
{
println!("{:?}", v);
return Err(v)
},
}
// Assign our instance type (new, run, flash, etc..)
match igloo_subcommand(&self.cli_conf)
{
Ok(v) => res = v,
Err(e) => return Err(e),
}
if res == Null
{
return Err(ErrUnknown)
}
Ok(res)
}
/// The run function processes the request from the user.
/// On success, it will give some string indicating the success of the operation.
/// On failure, it will return some error type.
pub fn run(&self, inst_type: IglooInstType) -> Result<String, IglooErrType>
{
let mut res_err = ErrNone;
let mut prj: IglooPrj;
loop { match inst_type
{
Null => res_err = ErrNone,
New =>
{
let prj_name: &str = self
.cli_conf
.subcommand()
.unwrap().1
.value_of("project_name")
.unwrap();
let target: &str = self
.cli_conf
.subcommand()
.unwrap().1
.value_of("target")
.unwrap();
let res_err = igloo_action::new(
self, prj_name, target);
if res_err != ErrNone
{
return Err(res_err)
}
}
IGLOO_FLASH =>
{
}
IGLOO_RUN =>
{
}
_ => println!("Unhandled case: {:?}", inst_type),
} break; }
if res_err == ErrNone
{
Ok(String::from("We won!"))
}
else
{
Err(res_err)
}
}
}

@ -0,0 +1,10 @@
[package]
name = "igloo_make"
version = "0.1.0"
authors = ["Penguin <penguin@epenguin.net>"]
edition = "2018"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
igloo_base = { path = "../igloo_base" }

@ -0,0 +1,9 @@
#[cfg(test)]
mod tests {
#[test]
fn it_works() {
assert_eq!(2 + 2, 4);
}
}
use igloo_base;

@ -0,0 +1,11 @@
[package]
name = "igloo_manifest"
version = "0.1.0"
authors = ["Penguin <penguin@epenguin.net>"]
edition = "2018"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
igloo_base = { path = "../igloo_base" }
config = "0.10"

@ -0,0 +1,122 @@
extern crate config;
use igloo_base::*;
use igloo_base::IglooErrType::*;
use config::Config;
#[cfg(test)]
mod tests {
#[test]
fn it_works() {
assert_eq!(2 + 2, 4);
}
}
/// Igloo Manifest -- Responsible for all lookups in manifest files
pub fn get_master_make_manifest(man: &mut Config) -> IglooErrType
{
let mut ret: IglooErrType = ErrNone;
match man.merge(
config::File::with_name(
IglooEnvInfo::get_env_info().esfd.join("manifest/make-manifest.toml")
.to_str()
.unwrap()))
{
Ok(_v) => (),
Err(e) =>
{
println!("Error: {:?}", e);
ret = FailedToLoadMasterMakeManifest;
}
}
ret
}
pub fn get_master_target_manifest(man: &mut Config) -> IglooErrType
{
let mut ret: IglooErrType = ErrNone;
match man.merge(
config::File::with_name(
IglooEnvInfo::get_env_info().esfd.join("manifest/target-manifest.toml")
.to_str()
.unwrap()))
{
Ok(_v) => (),
Err(e) =>
{
println!("Error: {:?}", e);
ret = FailedToLoadMasterTargetManifest;
}
}
ret
}
/// master_mm -- Master Make Manifest
/// master_tm -- Master Target Manifest
/// name -- name of target
pub fn target_exists(master_mm: &Config, master_tm: &Config, name: &str)
-> Result<bool, IglooErrType>
{
let mut ret: bool = true;
if name.is_empty()
{
return Err(InvalidTarget)
}
match master_mm.get_table("target.make")
{
Ok(v) =>
{
match v.get(name)
{
Some(v) =>
{
println!("target.make entry for \"{}\" exists!", v);
}
None =>
{
println!("target.make entry for \"{}\" does not exist", name);
ret = false;
}
}
}
Err(e) =>
{
println!("{:?}", e);
return Err(FailedToLoadMasterMakeManifest)
}
}
if !ret
{
return Ok(ret)
}
let target_table = master_tm.get_table("target.manifest");
match target_table
{
Ok(v) =>
{
match v.get(name)
{
Some(v) =>
{
println!("target.manifest entry for \"{}\" exists!", v);
}
None =>
{
ret = false;
}
}
}
Err(e) =>
{
println!("{:?}", e);
return Err(FailedToLoadMasterTargetManifest)
}
}
Ok(ret)
}

@ -1,274 +0,0 @@
use crate::igloo_action::IglooAction;
use crate::igloo_prj::IglooPrj;
#[derive(Debug)]
#[derive(PartialEq)]
pub enum IglooInstType
{
IGLOO_NULL = -1,
IGLOO_NEW = 0,
IGLOO_RUN = 1,
IGLOO_FLASH = 2,
IGLOO_DEBUG = 3,
IGLOO_CLEAN = 4,
IGLOO_ERASE = 5,
IGLOO_GENDOC = 6,
}
#[derive(Debug)]
#[derive(PartialEq)]
pub enum IglooErrType
{
IGLOO_ERR_NONE = 0,
IGLOO_ERR_UNKNOWN = 1,
IGLOO_CONFIG_NOT_FOUND = 2,
IGLOO_CONFIG_FOUND = 3,
IGLOO_UNKNOWN_INST_TYPE = 4,
IGLOO_NEW_CALLED_INSIDE_PRJ = 5,
IGLOO_FOLDER_ALREADY_EXISTS = 6,
IGLOO_INVALID_PROJECT_NAME = 7,
IGLOO_ENV_INFO_INVALID = 8,
IGLOO_INVALID_TARGET = 9,
IGLOO_FAILED_TO_LOAD_MAKE_MAN = 10,
IGLOO_FAILED_TO_LOAD_TARG_MAN = 11,
IGLOO_PRJ_SCRIPTS_DIR_NOT_FOUND = 12,
}
#[derive(Debug)]
#[derive(PartialEq)]
#[derive(Clone)]
pub struct IglooEnvInfo
{
// Current Working Directory
pub cwd: std::path::PathBuf,
// Home Directory
pub hd: std::path::PathBuf,
// ESF Directory
pub esfd: std::path::PathBuf,
}
use IglooInstType::*;
use IglooErrType::*;
/// Igloo should contain a config and any important environment information.
/// Upon running igloo, an instanc is created, env information is stored, and then
/// things happen.
pub struct Igloo
{
cli_conf: clap::ArgMatches,
pub env_info: IglooEnvInfo,
pub make_manifest: config::Config,
pub target_manifest: config::Config,
}
impl Igloo
{
/// The new function creates an instance of igloo. The idea is I create an igloo,
/// run start on it so I can collect environment information and process what command
/// the user would like to run, and then I run that command or deal with errors.
///
/// This function handles all cli input and stores it. It is parsed for errors in the
/// start function.
pub fn new() -> Igloo
{
Igloo
{
env_info: IglooEnvInfo::info(),
make_manifest: config::Config::new(),
target_manifest: config::Config::new(),
cli_conf: clap::App::new("igloo")
.about(clap::crate_description!())
.version(clap::crate_version!())
.setting(clap::AppSettings::SubcommandRequiredElseHelp)
.subcommand(
clap::App::new("new")
.about("Creates a new igloo project")
.arg(
clap::Arg::new("project_name")
.required(true)
.about("The name of the project to be created"),
)
.arg(
clap::Arg::new("target")
.required(true)
.about("MCU Target")
.short('t')
.long("target")
.takes_value(true)),
)
.subcommand(
clap::App::new("run")
.about("Compiles if needed, Flashes mcu and runs \
current project on default target")
.arg(
clap::Arg::new("build_type")
.required(false)
.about("Release or Debug build type\n\
Defaults to Debug"),
),
)
.subcommand(
clap::App::new("flash")
.about("Flashes target mcu or multiple mcus")
.arg(
clap::Arg::new("build_type")
.required(false)
.about("Release or Debug build type\nDefaults to Debug"),
),
)
.subcommand(
clap::App::new("clean")
.about("Cleans project build files")
)
.subcommand(
clap::App::new("erase")
.about("Erases flash from target mcu or target mcus")
)
.get_matches()
}
}
/// The start function processes the command you want igloo to run
/// It theoretically should never return an error. It should just exit.
/// If an error was returned, It was my fault and not the users.
/// It is really only here to help me debug.
///
/// The Inst Type is only returned for usage outside of this struct.
pub fn start(&mut self) -> Result<IglooInstType, IglooErrType>
{
let mut res_error = IGLOO_ERR_NONE;
let mut res_type = IGLOO_NULL;
// Load manifests first
self.make_manifest.merge(
config::File::with_name(
IglooEnvInfo::info().esfd.join("manifest/make-manifest.toml")
.to_str()
.unwrap()))
.unwrap();
self.target_manifest.merge(
config::File::with_name(
IglooEnvInfo::info().esfd.join("manifest/target-manifest.toml")
.to_str()
.unwrap()))
.unwrap();
match self.cli_conf.subcommand_name()
{
Some("new") =>
{
println!("Igloo new was called!");
res_type = IglooInstType::IGLOO_NEW;
}
Some("run") =>
{
println!("Igloo run was called!");
res_type = IglooInstType::IGLOO_RUN;
}
Some("flash") =>
{
println!("Igloo flash was called!");
res_type = IglooInstType::IGLOO_FLASH;
}
Some("erase") =>
{
println!("Igloo erase was called!");
res_type = IglooInstType::IGLOO_ERASE;
}
None => unreachable!(),
_ => unreachable!(),
}
if res_type != IglooInstType::IGLOO_NULL
{
Ok(res_type)
}
else
{
Err(res_error)
}
}
/// The run function processes the request from the user.
/// On success, it will give some string indicating the success of the operation.
/// On failure, it will return some error type.
pub fn run(&self, inst_type: IglooInstType) -> Result<String, IglooErrType>
{
let mut res_err = IGLOO_ERR_NONE;
let mut prj: IglooPrj;
loop { match inst_type
{
IGLOO_NULL => res_err = IGLOO_ERR_UNKNOWN,
IGLOO_NEW =>
{
if self.cli_conf.subcommand().unwrap().0 == "new"
{
let prj_name: &str = self
.cli_conf
.subcommand()
.unwrap().1
.value_of("project_name")
.unwrap();
let target: &str = self
.cli_conf
.subcommand()
.unwrap().1
.value_of("target")
.unwrap();
let res_err = IglooAction::new(
self, prj_name, target);
if res_err != IglooErrType::IGLOO_ERR_NONE
{
return Err(res_err)
}
}
else
{
}
}
IGLOO_FLASH =>
{
}
IGLOO_RUN =>
{
}
_ => println!("Unhandled case: {:?}", inst_type),
} break; }
if res_err == IGLOO_ERR_NONE
{
Ok(String::from("We won!"))
}
else
{
Err(res_err)
}
}
}
impl IglooEnvInfo
{
pub fn info() -> IglooEnvInfo
{
IglooEnvInfo
{
cwd: std::env::current_dir().unwrap(),
hd: std::env::home_dir().unwrap(),
esfd: match std::env::var("ESF_DIR")
{
Ok(v) =>
{
std::path::PathBuf::from(&v.to_owned())
}
Err(e) =>
{
// Note: Need to change new to return errors
// instead of exiting early
println!("Error: $ESF_DIR not defined as an environment\
variable -- {:?}", e);
std::process::exit(1);
}
}
}
}
}

@ -1,51 +0,0 @@
pub mod IglooAction
{
use crate::igloo_manifest::IglooManifest;
use crate::igloo::{Igloo, IglooErrType, IglooEnvInfo};
use crate::igloo_prj::IglooPrj;
pub fn run(prj_name: &str, target: &str) -> IglooErrType
{
let res_err: IglooErrType = IglooErrType::IGLOO_ERR_NONE;
res_err
}
pub fn new(inst: &Igloo, prj_name: &str, target: &str)
-> IglooErrType
{
let mut res_err: IglooErrType = IglooErrType::IGLOO_ERR_NONE;
/// Check if we are already inside of an igloo project
/// Creating an igloo project inside an igloo project
/// is a no no
if std::path::Path::new(".igloo").exists()
{
res_err = IglooErrType::IGLOO_NEW_CALLED_INSIDE_PRJ;
return res_err
}
/// Check if the project folder already exists
/// Don't want to accidentally overwrite anything
if std::path::Path::new(prj_name).exists()
{
res_err = IglooErrType::IGLOO_FOLDER_ALREADY_EXISTS;
return res_err
}
let mut project = IglooPrj::new(inst, prj_name, target);
match project
{
Err(e) =>
{
println!("Error spawning project: {:?}", e);
res_err = e;
return res_err
}
_ => (),
}
let res_err = project.unwrap().populate();
if res_err != IglooErrType::IGLOO_ERR_NONE
{
return res_err
}
res_err
}
}

@ -1,74 +0,0 @@
/// Igloo Manifest -- Responsible for all lookups in manifest files
pub mod IglooManifest
{
use crate::igloo::{Igloo, IglooErrType, IglooEnvInfo};
pub fn target_exists(inst: &Igloo, name: &str) -> Result<bool, IglooErrType>
{
let mut ret: bool = true;
let mut res_err = IglooErrType::IGLOO_ERR_NONE;
if name.is_empty()
{
return Err(IglooErrType::IGLOO_INVALID_TARGET)
}
let make_table = inst.target_manifest.get_table("target.make");
match make_table
{
Ok(v) =>
{
match v.get(name)
{
Some(v) =>
{
println!("target.make entry for \"{}\" exists!", name);
}
None =>
{
println!("target.make entry for \"{}\" does not exist", name);
ret = false;
}
}
}
Err(e) =>
{
println!("{:?}", e);
return Err(IglooErrType::IGLOO_FAILED_TO_LOAD_MAKE_MAN)
}
}
if !ret
{
return Ok(ret)
}
let target_table = inst.target_manifest.get_table("target.manifest");
match target_table
{
Ok(v) =>
{
match v.get(name)
{
Some(v) =>
{
println!("target.manifest entry for \"{}\" exists!", name);
}
None =>
{
ret = false;
}
}
}
Err(e) =>
{
println!("{:?}", e);
return Err(IglooErrType::IGLOO_FAILED_TO_LOAD_TARG_MAN)
}
}
Ok(ret)
}
}

@ -1,14 +1,18 @@
#![allow(warnings)]
extern crate clap;
extern crate config;
mod igloo;
mod igloo_action;
mod igloo_prj;
mod igloo_manifest;
use config::Config;
use clap::{Arg, App, AppSettings, ArgMatches};
use igloo_core::{Igloo, IglooErrType, IglooInstType};
use igloo_cli;
use igloo_make;
use igloo_manifest;
use igloo_agent;
fn main()
{
let mut ig = igloo::Igloo::new();
let mut ig = Igloo::new();
let _start_ret = match ig.start()
{
Ok(it) =>

@ -0,0 +1 @@
{"rustc":66165631676752942,"features":"[]","target":10792472713283433088,"profile":6299028598154287785,"path":6502263987148761534,"deps":[[5317750649359053169,"libc",false,17504418386403226333]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/atty-c2fde9dee18b37f1/dep-lib-atty"}}],"rustflags":[],"metadata":2329458237537140231,"config":0}

@ -0,0 +1 @@
{"rustc":66165631676752942,"features":"[\"atty\", \"cargo\", \"clap_derive\", \"color\", \"default\", \"derive\", \"lazy_static\", \"std\", \"strsim\", \"suggestions\", \"termcolor\"]","target":229160480527202769,"profile":6299028598154287785,"path":3669366453960628055,"deps":[[573161692746345945,"clap_derive",false,7963116697133191406],[769499514241923581,"strsim",false,14162124977035674130],[4117749705314174326,"bitflags",false,6071948545510077164],[8536350174477403560,"lazy_static",false,5920138057679276851],[8898714657973812811,"indexmap",false,8697997005168360071],[10632722147547604258,"unicode_width",false,2429939022793102576],[11109407199266334614,"termcolor",false,14536721510233388105],[15251456120363369268,"atty",false,11589004798948548097],[16345904869059864303,"textwrap",false,14244020469243788216],[17564442112974139928,"os_str_bytes",false,3535731701439882938],[18026345993996883719,"vec_map",false,8808606242575555115]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/clap-4a724467a41df761/dep-lib-clap"}}],"rustflags":[],"metadata":18413529249576532139,"config":0}

@ -0,0 +1 @@
{"rustc":66165631676752942,"features":"[]","target":17898517816709299640,"profile":6299028598154287785,"path":8728092032768182756,"deps":[[9649018296203476292,"dirs_sys",false,16263667843839518962]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/directories-54e89769184d2106/dep-lib-directories"}}],"rustflags":[],"metadata":931290570756584624,"config":0}

@ -0,0 +1 @@
{"rustc":66165631676752942,"features":"[]","target":6656584412601499904,"profile":6299028598154287785,"path":13971011078393250122,"deps":[[5317750649359053169,"libc",false,17504418386403226333]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/dirs-sys-d07a5a7ba7cf70cd/dep-lib-dirs-sys"}}],"rustflags":[],"metadata":9863373507860298850,"config":0}

@ -0,0 +1 @@
{"rustc":66165631676752942,"features":"[]","target":14517543427096474932,"profile":6299028598154287785,"path":10257279714125279321,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/error-chain-a309a28557f9e43e/dep-lib-error-chain"}}],"rustflags":[],"metadata":7997956376172494424,"config":0}

@ -0,0 +1,3 @@
{"message":"failed to resolve: use of undeclared type or module `Igloo`","code":{"code":"E0433","explanation":"An undeclared type or module was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type or module `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n"},"level":"error","spans":[{"file_name":"src/main.rs","byte_start":106,"byte_end":111,"line_start":8,"line_end":8,"column_start":15,"column_end":20,"is_primary":true,"text":[{"text":"\tlet mut ig = Igloo::new();","highlight_start":15,"highlight_end":20}],"label":"use of undeclared type or module `Igloo`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[38;5;9merror[E0433]\u001b[0m\u001b[0m\u001b[1m: failed to resolve: use of undeclared type or module `Igloo`\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:8:15\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m8\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m let mut ig = Igloo::new();\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;9m^^^^^\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;9muse of undeclared type or module `Igloo`\u001b[0m\n\n"}
{"message":"aborting due to previous error","code":null,"level":"error","spans":[],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[38;5;9merror\u001b[0m\u001b[0m\u001b[1m: aborting due to previous error\u001b[0m\n\n"}
{"message":"For more information about this error, try `rustc --explain E0433`.","code":null,"level":"failure-note","spans":[],"children":[],"rendered":"\u001b[0m\u001b[1mFor more information about this error, try `rustc --explain E0433`.\u001b[0m\n"}

@ -0,0 +1,8 @@
{"message":"cannot find function `igloo_app` in this scope","code":{"code":"E0425","explanation":"An unresolved name was used.\n\nErroneous code examples:\n\n```compile_fail,E0425\nsomething_that_doesnt_exist::foo;\n// error: unresolved name `something_that_doesnt_exist::foo`\n\n// or:\n\ntrait Foo {\n fn bar() {\n Self; // error: unresolved name `Self`\n }\n}\n\n// or:\n\nlet x = unknown_variable; // error: unresolved name `unknown_variable`\n```\n\nPlease verify that the name wasn't misspelled and ensure that the\nidentifier being referred to is valid for the given situation. Example:\n\n```\nenum something_that_does_exist {\n Foo,\n}\n```\n\nOr:\n\n```\nmod something_that_does_exist {\n pub static foo : i32 = 0i32;\n}\n\nsomething_that_does_exist::foo; // ok!\n```\n\nOr:\n\n```\nlet unknown_variable = 12u32;\nlet x = unknown_variable; // ok!\n```\n\nIf the item is not defined in the current module, it must be imported using a\n`use` statement, like so:\n\n```\n# mod foo { pub fn bar() {} }\n# fn main() {\nuse foo::bar;\nbar();\n# }\n```\n\nIf the item you are importing is not defined in some super-module of the\ncurrent module, then it must also be declared as public (e.g., `pub fn`).\n"},"level":"error","spans":[{"file_name":"src/igloo.rs","byte_start":1883,"byte_end":1892,"line_start":74,"line_end":74,"column_start":14,"column_end":23,"is_primary":true,"text":[{"text":"\t\t\tcli_conf: igloo_app(),","highlight_start":14,"highlight_end":23}],"label":"not found in this scope","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[38;5;9merror[E0425]\u001b[0m\u001b[0m\u001b[1m: cannot find function `igloo_app` in this scope\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/igloo.rs:74:14\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m74\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m cli_conf: igloo_app(),\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;9m^^^^^^^^^\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;9mnot found in this scope\u001b[0m\n\n"}
{"message":"cannot find value `IGLOO_ERR_NONE` in this scope","code":{"code":"E0425","explanation":"An unresolved name was used.\n\nErroneous code examples:\n\n```compile_fail,E0425\nsomething_that_doesnt_exist::foo;\n// error: unresolved name `something_that_doesnt_exist::foo`\n\n// or:\n\ntrait Foo {\n fn bar() {\n Self; // error: unresolved name `Self`\n }\n}\n\n// or:\n\nlet x = unknown_variable; // error: unresolved name `unknown_variable`\n```\n\nPlease verify that the name wasn't misspelled and ensure that the\nidentifier being referred to is valid for the given situation. Example:\n\n```\nenum something_that_does_exist {\n Foo,\n}\n```\n\nOr:\n\n```\nmod something_that_does_exist {\n pub static foo : i32 = 0i32;\n}\n\nsomething_that_does_exist::foo; // ok!\n```\n\nOr:\n\n```\nlet unknown_variable = 12u32;\nlet x = unknown_variable; // ok!\n```\n\nIf the item is not defined in the current module, it must be imported using a\n`use` statement, like so:\n\n```\n# mod foo { pub fn bar() {} }\n# fn main() {\nuse foo::bar;\nbar();\n# }\n```\n\nIf the item you are importing is not defined in some super-module of the\ncurrent module, then it must also be declared as public (e.g., `pub fn`).\n"},"level":"error","spans":[{"file_name":"src/igloo.rs","byte_start":2325,"byte_end":2339,"line_start":86,"line_end":86,"column_start":23,"column_end":37,"is_primary":true,"text":[{"text":"\t\tlet mut res_error = IGLOO_ERR_NONE;","highlight_start":23,"highlight_end":37}],"label":"not found in this scope","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"consider importing this unit variant","code":null,"level":"help","spans":[{"file_name":"src/igloo.rs","byte_start":0,"byte_end":0,"line_start":1,"line_end":1,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"use crate::igloo_action::IglooAction;","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"use crate::igloo_manifest::IglooManifest::IglooErrType::IGLOO_ERR_NONE;\n","suggestion_applicability":"Unspecified","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[38;5;9merror[E0425]\u001b[0m\u001b[0m\u001b[1m: cannot find value `IGLOO_ERR_NONE` in this scope\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/igloo.rs:86:23\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m86\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m let mut res_error = IGLOO_ERR_NONE;\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;9m^^^^^^^^^^^^^^\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;9mnot found in this scope\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;14mhelp\u001b[0m\u001b[0m: consider importing this unit variant\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m1\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0muse crate::igloo_manifest::IglooManifest::IglooErrType::IGLOO_ERR_NONE;\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\n"}
{"message":"cannot find value `IGLOO_NULL` in this scope","code":{"code":"E0425","explanation":"An unresolved name was used.\n\nErroneous code examples:\n\n```compile_fail,E0425\nsomething_that_doesnt_exist::foo;\n// error: unresolved name `something_that_doesnt_exist::foo`\n\n// or:\n\ntrait Foo {\n fn bar() {\n Self; // error: unresolved name `Self`\n }\n}\n\n// or:\n\nlet x = unknown_variable; // error: unresolved name `unknown_variable`\n```\n\nPlease verify that the name wasn't misspelled and ensure that the\nidentifier being referred to is valid for the given situation. Example:\n\n```\nenum something_that_does_exist {\n Foo,\n}\n```\n\nOr:\n\n```\nmod something_that_does_exist {\n pub static foo : i32 = 0i32;\n}\n\nsomething_that_does_exist::foo; // ok!\n```\n\nOr:\n\n```\nlet unknown_variable = 12u32;\nlet x = unknown_variable; // ok!\n```\n\nIf the item is not defined in the current module, it must be imported using a\n`use` statement, like so:\n\n```\n# mod foo { pub fn bar() {} }\n# fn main() {\nuse foo::bar;\nbar();\n# }\n```\n\nIf the item you are importing is not defined in some super-module of the\ncurrent module, then it must also be declared as public (e.g., `pub fn`).\n"},"level":"error","spans":[{"file_name":"src/igloo.rs","byte_start":2362,"byte_end":2372,"line_start":87,"line_end":87,"column_start":22,"column_end":32,"is_primary":true,"text":[{"text":"\t\tlet mut res_type = IGLOO_NULL;","highlight_start":22,"highlight_end":32}],"label":"not found in this scope","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"consider importing this unit variant","code":null,"level":"help","spans":[{"file_name":"src/igloo.rs","byte_start":0,"byte_end":0,"line_start":1,"line_end":1,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"use crate::igloo_action::IglooAction;","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"use crate::igloo::IglooInstType::IGLOO_NULL;\n","suggestion_applicability":"Unspecified","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[38;5;9merror[E0425]\u001b[0m\u001b[0m\u001b[1m: cannot find value `IGLOO_NULL` in this scope\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/igloo.rs:87:22\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m87\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m let mut res_type = IGLOO_NULL;\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;9m^^^^^^^^^^\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;9mnot found in this scope\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;14mhelp\u001b[0m\u001b[0m: consider importing this unit variant\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m1\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0muse crate::igloo::IglooInstType::IGLOO_NULL;\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\n"}
{"message":"cannot find value `IGLOO_ERR_NONE` in this scope","code":{"code":"E0425","explanation":"An unresolved name was used.\n\nErroneous code examples:\n\n```compile_fail,E0425\nsomething_that_doesnt_exist::foo;\n// error: unresolved name `something_that_doesnt_exist::foo`\n\n// or:\n\ntrait Foo {\n fn bar() {\n Self; // error: unresolved name `Self`\n }\n}\n\n// or:\n\nlet x = unknown_variable; // error: unresolved name `unknown_variable`\n```\n\nPlease verify that the name wasn't misspelled and ensure that the\nidentifier being referred to is valid for the given situation. Example:\n\n```\nenum something_that_does_exist {\n Foo,\n}\n```\n\nOr:\n\n```\nmod something_that_does_exist {\n pub static foo : i32 = 0i32;\n}\n\nsomething_that_does_exist::foo; // ok!\n```\n\nOr:\n\n```\nlet unknown_variable = 12u32;\nlet x = unknown_variable; // ok!\n```\n\nIf the item is not defined in the current module, it must be imported using a\n`use` statement, like so:\n\n```\n# mod foo { pub fn bar() {} }\n# fn main() {\nuse foo::bar;\nbar();\n# }\n```\n\nIf the item you are importing is not defined in some super-module of the\ncurrent module, then it must also be declared as public (e.g., `pub fn`).\n"},"level":"error","spans":[{"file_name":"src/igloo.rs","byte_start":3678,"byte_end":3692,"line_start":141,"line_end":141,"column_start":21,"column_end":35,"is_primary":true,"text":[{"text":"\t\tlet mut res_err = IGLOO_ERR_NONE;","highlight_start":21,"highlight_end":35}],"label":"not found in this scope","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"consider importing this unit variant","code":null,"level":"help","spans":[{"file_name":"src/igloo.rs","byte_start":0,"byte_end":0,"line_start":1,"line_end":1,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"use crate::igloo_action::IglooAction;","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"use crate::igloo_manifest::IglooManifest::IglooErrType::IGLOO_ERR_NONE;\n","suggestion_applicability":"Unspecified","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[38;5;9merror[E0425]\u001b[0m\u001b[0m\u001b[1m: cannot find value `IGLOO_ERR_NONE` in this scope\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/igloo.rs:141:21\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m141\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m let mut res_err = IGLOO_ERR_NONE;\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;9m^^^^^^^^^^^^^^\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;9mnot found in this scope\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;14mhelp\u001b[0m\u001b[0m: consider importing this unit variant\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m1\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0muse crate::igloo_manifest::IglooManifest::IglooErrType::IGLOO_ERR_NONE;\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\n"}
{"message":"cannot find value `IGLOO_ERR_UNKNOWN` in this scope","code":{"code":"E0425","explanation":"An unresolved name was used.\n\nErroneous code examples:\n\n```compile_fail,E0425\nsomething_that_doesnt_exist::foo;\n// error: unresolved name `something_that_doesnt_exist::foo`\n\n// or:\n\ntrait Foo {\n fn bar() {\n Self; // error: unresolved name `Self`\n }\n}\n\n// or:\n\nlet x = unknown_variable; // error: unresolved name `unknown_variable`\n```\n\nPlease verify that the name wasn't misspelled and ensure that the\nidentifier being referred to is valid for the given situation. Example:\n\n```\nenum something_that_does_exist {\n Foo,\n}\n```\n\nOr:\n\n```\nmod something_that_does_exist {\n pub static foo : i32 = 0i32;\n}\n\nsomething_that_does_exist::foo; // ok!\n```\n\nOr:\n\n```\nlet unknown_variable = 12u32;\nlet x = unknown_variable; // ok!\n```\n\nIf the item is not defined in the current module, it must be imported using a\n`use` statement, like so:\n\n```\n# mod foo { pub fn bar() {} }\n# fn main() {\nuse foo::bar;\nbar();\n# }\n```\n\nIf the item you are importing is not defined in some super-module of the\ncurrent module, then it must also be declared as public (e.g., `pub fn`).\n"},"level":"error","spans":[{"file_name":"src/igloo.rs","byte_start":3775,"byte_end":3792,"line_start":145,"line_end":145,"column_start":28,"column_end":45,"is_primary":true,"text":[{"text":"\t\t\tIGLOO_NULL => res_err = IGLOO_ERR_UNKNOWN,","highlight_start":28,"highlight_end":45}],"label":"not found in this scope","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"consider importing this unit variant","code":null,"level":"help","spans":[{"file_name":"src/igloo.rs","byte_start":0,"byte_end":0,"line_start":1,"line_end":1,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"use crate::igloo_action::IglooAction;","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"use crate::igloo_manifest::IglooManifest::IglooErrType::IGLOO_ERR_UNKNOWN;\n","suggestion_applicability":"Unspecified","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[38;5;9merror[E0425]\u001b[0m\u001b[0m\u001b[1m: cannot find value `IGLOO_ERR_UNKNOWN` in this scope\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/igloo.rs:145:28\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m145\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m IGLOO_NULL => res_err = IGLOO_ERR_UNKNOWN,\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;9m^^^^^^^^^^^^^^^^^\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;9mnot found in this scope\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;14mhelp\u001b[0m\u001b[0m: consider importing this unit variant\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m1\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0muse crate::igloo_manifest::IglooManifest::IglooErrType::IGLOO_ERR_UNKNOWN;\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\n"}
{"message":"cannot find value `IGLOO_ERR_NONE` in this scope","code":{"code":"E0425","explanation":"An unresolved name was used.\n\nErroneous code examples:\n\n```compile_fail,E0425\nsomething_that_doesnt_exist::foo;\n// error: unresolved name `something_that_doesnt_exist::foo`\n\n// or:\n\ntrait Foo {\n fn bar() {\n Self; // error: unresolved name `Self`\n }\n}\n\n// or:\n\nlet x = unknown_variable; // error: unresolved name `unknown_variable`\n```\n\nPlease verify that the name wasn't misspelled and ensure that the\nidentifier being referred to is valid for the given situation. Example:\n\n```\nenum something_that_does_exist {\n Foo,\n}\n```\n\nOr:\n\n```\nmod something_that_does_exist {\n pub static foo : i32 = 0i32;\n}\n\nsomething_that_does_exist::foo; // ok!\n```\n\nOr:\n\n```\nlet unknown_variable = 12u32;\nlet x = unknown_variable; // ok!\n```\n\nIf the item is not defined in the current module, it must be imported using a\n`use` statement, like so:\n\n```\n# mod foo { pub fn bar() {} }\n# fn main() {\nuse foo::bar;\nbar();\n# }\n```\n\nIf the item you are importing is not defined in some super-module of the\ncurrent module, then it must also be declared as public (e.g., `pub fn`).\n"},"level":"error","spans":[{"file_name":"src/igloo.rs","byte_start":4464,"byte_end":4478,"line_start":186,"line_end":186,"column_start":17,"column_end":31,"is_primary":true,"text":[{"text":"\t\tif res_err == IGLOO_ERR_NONE","highlight_start":17,"highlight_end":31}],"label":"not found in this scope","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"consider importing this unit variant","code":null,"level":"help","spans":[{"file_name":"src/igloo.rs","byte_start":0,"byte_end":0,"line_start":1,"line_end":1,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"use crate::igloo_action::IglooAction;","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"use crate::igloo_manifest::IglooManifest::IglooErrType::IGLOO_ERR_NONE;\n","suggestion_applicability":"Unspecified","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[38;5;9merror[E0425]\u001b[0m\u001b[0m\u001b[1m: cannot find value `IGLOO_ERR_NONE` in this scope\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/igloo.rs:186:17\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m186\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m if res_err == IGLOO_ERR_NONE\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;9m^^^^^^^^^^^^^^\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;9mnot found in this scope\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;14mhelp\u001b[0m\u001b[0m: consider importing this unit variant\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m1\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0muse crate::igloo_manifest::IglooManifest::IglooErrType::IGLOO_ERR_NONE;\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\n"}
{"message":"aborting due to 6 previous errors","code":null,"level":"error","spans":[],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[38;5;9merror\u001b[0m\u001b[0m\u001b[1m: aborting due to 6 previous errors\u001b[0m\n\n"}
{"message":"For more information about this error, try `rustc --explain E0425`.","code":null,"level":"failure-note","spans":[],"children":[],"rendered":"\u001b[0m\u001b[1mFor more information about this error, try `rustc --explain E0425`.\u001b[0m\n"}

@ -0,0 +1 @@
{"rustc":66165631676752942,"features":"[]","target":11472144369123049141,"profile":18074012566298724745,"path":15189186052818138501,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/igloo-agent-b4311263192e6456/dep-bin-igloo-agent"}}],"rustflags":[],"metadata":3437543006848290768,"config":0}

@ -0,0 +1 @@
{"rustc":66165631676752942,"features":"[]","target":11472144369123049141,"profile":10655494245791646288,"path":15189186052818138501,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/igloo-agent-c5af17c475f537b5/dep-test-bin-igloo-agent"}}],"rustflags":[],"metadata":3437543006848290768,"config":0}

@ -0,0 +1 @@
{"rustc":66165631676752942,"features":"[]","target":780103669763259699,"profile":18074012566298724745,"path":15234236701973193484,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/igloo-cli-4fb621101fa793e7/dep-lib-igloo-cli"}}],"rustflags":[],"metadata":3437543006848290768,"config":0}

@ -0,0 +1,2 @@
{"message":"variant `IGLOO_CLI` should have an upper camel case name","code":{"code":"non_camel_case_types","explanation":null},"level":"warning","spans":[{"file_name":"igloo-cli/src/lib.rs","byte_start":117,"byte_end":126,"line_start":11,"line_end":11,"column_start":2,"column_end":11,"is_primary":true,"text":[{"text":"\tIGLOO_CLI = 0,","highlight_start":2,"highlight_end":11}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(non_camel_case_types)]` on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"convert the identifier to upper camel case","code":null,"level":"help","spans":[{"file_name":"igloo-cli/src/lib.rs","byte_start":117,"byte_end":126,"line_start":11,"line_end":11,"column_start":2,"column_end":11,"is_primary":true,"text":[{"text":"\tIGLOO_CLI = 0,","highlight_start":2,"highlight_end":11}],"label":null,"suggested_replacement":"IglooCli","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: variant `IGLOO_CLI` should have an upper camel case name\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0migloo-cli/src/lib.rs:11:2\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m11\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m IGLOO_CLI = 0,\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^^^\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33mhelp: convert the identifier to upper camel case: `IglooCli`\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: `#[warn(non_camel_case_types)]` on by default\u001b[0m\n\n"}
{"message":"1 warning emitted","code":null,"level":"warning","spans":[],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: 1 warning emitted\u001b[0m\n\n"}

@ -0,0 +1,2 @@
{"message":"variant `IGLOO_CLI` should have an upper camel case name","code":{"code":"non_camel_case_types","explanation":null},"level":"warning","spans":[{"file_name":"igloo-cli/src/lib.rs","byte_start":117,"byte_end":126,"line_start":11,"line_end":11,"column_start":2,"column_end":11,"is_primary":true,"text":[{"text":"\tIGLOO_CLI = 0,","highlight_start":2,"highlight_end":11}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(non_camel_case_types)]` on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"convert the identifier to upper camel case","code":null,"level":"help","spans":[{"file_name":"igloo-cli/src/lib.rs","byte_start":117,"byte_end":126,"line_start":11,"line_end":11,"column_start":2,"column_end":11,"is_primary":true,"text":[{"text":"\tIGLOO_CLI = 0,","highlight_start":2,"highlight_end":11}],"label":null,"suggested_replacement":"IglooCli","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: variant `IGLOO_CLI` should have an upper camel case name\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0migloo-cli/src/lib.rs:11:2\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m11\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m IGLOO_CLI = 0,\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^^^\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33mhelp: convert the identifier to upper camel case: `IglooCli`\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: `#[warn(non_camel_case_types)]` on by default\u001b[0m\n\n"}
{"message":"1 warning emitted","code":null,"level":"warning","spans":[],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: 1 warning emitted\u001b[0m\n\n"}

@ -0,0 +1 @@
{"rustc":66165631676752942,"features":"[]","target":780103669763259699,"profile":10655494245791646288,"path":15234236701973193484,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/igloo-cli-74f5cf462b8c4f61/dep-test-lib-igloo-cli"}}],"rustflags":[],"metadata":3437543006848290768,"config":0}

@ -0,0 +1 @@
{"rustc":66165631676752942,"features":"[]","target":1376020904836481817,"profile":18074012566298724745,"path":2400087433830613284,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/igloo-core-62cf6b6961d79de2/dep-lib-igloo-core"}}],"rustflags":[],"metadata":3437543006848290768,"config":0}

@ -0,0 +1 @@
{"rustc":66165631676752942,"features":"[]","target":1376020904836481817,"profile":10655494245791646288,"path":2400087433830613284,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/igloo-core-641f6ae036aa1aa6/dep-test-lib-igloo-core"}}],"rustflags":[],"metadata":3437543006848290768,"config":0}

@ -0,0 +1 @@
{"rustc":66165631676752942,"features":"[]","target":9460269125191160019,"profile":18074012566298724745,"path":4812038798862742161,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/igloo-manifest-adeea1a769817567/dep-lib-igloo-manifest"}}],"rustflags":[],"metadata":3437543006848290768,"config":0}

@ -0,0 +1 @@
{"rustc":66165631676752942,"features":"[]","target":3182324659670158807,"profile":18074012566298724745,"path":1815015714726916296,"deps":[[16739089134865246075,"igloo_cli",false,1549838123250796052]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/igloo_agent-13fafdf811f4c142/dep-bin-igloo_agent"}}],"rustflags":[],"metadata":3437543006848290768,"config":0}

@ -0,0 +1,2 @@
{"message":"unused variable: `x`","code":{"code":"unused_variables","explanation":null},"level":"warning","spans":[{"file_name":"igloo_agent/src/main.rs","byte_start":36,"byte_end":37,"line_start":4,"line_end":4,"column_start":6,"column_end":7,"is_primary":true,"text":[{"text":"\tlet x: IglooCliCfg = IglooCliCfg::IglooCliCfgOpt1;","highlight_start":6,"highlight_end":7}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(unused_variables)]` on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"if this is intentional, prefix it with an underscore","code":null,"level":"help","spans":[{"file_name":"igloo_agent/src/main.rs","byte_start":36,"byte_end":37,"line_start":4,"line_end":4,"column_start":6,"column_end":7,"is_primary":true,"text":[{"text":"\tlet x: IglooCliCfg = IglooCliCfg::IglooCliCfgOpt1;","highlight_start":6,"highlight_end":7}],"label":null,"suggested_replacement":"_x","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused variable: `x`\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0migloo_agent/src/main.rs:4:6\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m4\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m let x: IglooCliCfg = IglooCliCfg::IglooCliCfgOpt1;\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33mhelp: if this is intentional, prefix it with an underscore: `_x`\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: `#[warn(unused_variables)]` on by default\u001b[0m\n\n"}
{"message":"1 warning emitted","code":null,"level":"warning","spans":[],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: 1 warning emitted\u001b[0m\n\n"}

@ -0,0 +1 @@
{"rustc":66165631676752942,"features":"[]","target":3182324659670158807,"profile":18074012566298724745,"path":1815015714726916296,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/igloo_agent-74ad8daf82f6a0cf/dep-bin-igloo_agent"}}],"rustflags":[],"metadata":3437543006848290768,"config":0}

@ -0,0 +1,6 @@
{"message":"unresolved import `igloo_cli`","code":{"code":"E0432","explanation":"An import was unresolved.\n\nErroneous code example:\n\n```compile_fail,E0432\nuse something::Foo; // error: unresolved import `something::Foo`.\n```\n\nIn Rust 2015, paths in `use` statements are relative to the crate root. To\nimport items relative to the current and parent modules, use the `self::` and\n`super::` prefixes, respectively.\n\nIn Rust 2018, paths in `use` statements are relative to the current module\nunless they begin with the name of a crate or a literal `crate::`, in which\ncase they start from the crate root. As in Rust 2015 code, the `self::` and\n`super::` prefixes refer to the current and parent modules respectively.\n\nAlso verify that you didn't misspell the import name and that the import exists\nin the module from where you tried to import it. Example:\n\n```\nuse self::something::Foo; // Ok.\n\nmod something {\n pub struct Foo;\n}\n# fn main() {}\n```\n\nIf you tried to use a module from an external crate and are using Rust 2015,\nyou may have missed the `extern crate` declaration (which is usually placed in\nthe crate root):\n\n```edition2015\nextern crate core; // Required to use the `core` crate in Rust 2015.\n\nuse core::any;\n# fn main() {}\n```\n\nIn Rust 2018 the `extern crate` declaration is not required and you can instead\njust `use` it:\n\n```edition2018\nuse core::any; // No extern crate required in Rust 2018.\n# fn main() {}\n```\n"},"level":"error","spans":[{"file_name":"igloo_agent/src/main.rs","byte_start":4,"byte_end":13,"line_start":1,"line_end":1,"column_start":5,"column_end":14,"is_primary":true,"text":[{"text":"use igloo_cli;","highlight_start":5,"highlight_end":14}],"label":"no `igloo_cli` external crate","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[38;5;9merror[E0432]\u001b[0m\u001b[0m\u001b[1m: unresolved import `igloo_cli`\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0migloo_agent/src/main.rs:1:5\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m1\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0muse igloo_cli;\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;9m^^^^^^^^^\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;9mno `igloo_cli` external crate\u001b[0m\n\n"}
{"message":"failed to resolve: use of undeclared type or module `IglooCliCfg`","code":{"code":"E0433","explanation":"An undeclared type or module was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type or module `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n"},"level":"error","spans":[{"file_name":"igloo_agent/src/main.rs","byte_start":50,"byte_end":61,"line_start":4,"line_end":4,"column_start":23,"column_end":34,"is_primary":true,"text":[{"text":"\tlet x: IglooCliCfg = IglooCliCfg::IglooCliCfgOpt1;","highlight_start":23,"highlight_end":34}],"label":"use of undeclared type or module `IglooCliCfg`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[38;5;9merror[E0433]\u001b[0m\u001b[0m\u001b[1m: failed to resolve: use of undeclared type or module `IglooCliCfg`\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0migloo_agent/src/main.rs:4:23\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m4\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m let x: IglooCliCfg = IglooCliCfg::IglooCliCfgOpt1;\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;9m^^^^^^^^^^^\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;9muse of undeclared type or module `IglooCliCfg`\u001b[0m\n\n"}
{"message":"cannot find type `IglooCliCfg` in this scope","code":{"code":"E0412","explanation":"A used type name is not in scope.\n\nErroneous code examples:\n\n```compile_fail,E0412\nimpl Something {} // error: type name `Something` is not in scope\n\n// or:\n\ntrait Foo {\n fn bar(N); // error: type name `N` is not in scope\n}\n\n// or:\n\nfn foo(x: T) {} // type name `T` is not in scope\n```\n\nTo fix this error, please verify you didn't misspell the type name, you did\ndeclare it or imported it into the scope. Examples:\n\n```\nstruct Something;\n\nimpl Something {} // ok!\n\n// or:\n\ntrait Foo {\n type N;\n\n fn bar(_: Self::N); // ok!\n}\n\n// or:\n\nfn foo<T>(x: T) {} // ok!\n```\n\nAnother case that causes this error is when a type is imported into a parent\nmodule. To fix this, you can follow the suggestion and use File directly or\n`use super::File;` which will import the types from the parent namespace. An\nexample that causes this error is below:\n\n```compile_fail,E0412\nuse std::fs::File;\n\nmod foo {\n fn some_function(f: File) {}\n}\n```\n\n```\nuse std::fs::File;\n\nmod foo {\n // either\n use super::File;\n // or\n // use std::fs::File;\n fn foo(f: File) {}\n}\n# fn main() {} // don't insert it for us; that'll break imports\n```\n"},"level":"error","spans":[{"file_name":"igloo_agent/src/main.rs","byte_start":36,"byte_end":47,"line_start":4,"line_end":4,"column_start":9,"column_end":20,"is_primary":true,"text":[{"text":"\tlet x: IglooCliCfg = IglooCliCfg::IglooCliCfgOpt1;","highlight_start":9,"highlight_end":20}],"label":"not found in this scope","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[38;5;9merror[E0412]\u001b[0m\u001b[0m\u001b[1m: cannot find type `IglooCliCfg` in this scope\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0migloo_agent/src/main.rs:4:9\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m4\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m let x: IglooCliCfg = IglooCliCfg::IglooCliCfgOpt1;\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;9m^^^^^^^^^^^\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;9mnot found in this scope\u001b[0m\n\n"}
{"message":"aborting due to 3 previous errors","code":null,"level":"error","spans":[],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[38;5;9merror\u001b[0m\u001b[0m\u001b[1m: aborting due to 3 previous errors\u001b[0m\n\n"}
{"message":"Some errors have detailed explanations: E0412, E0432, E0433.","code":null,"level":"failure-note","spans":[],"children":[],"rendered":"\u001b[0m\u001b[1mSome errors have detailed explanations: E0412, E0432, E0433.\u001b[0m\n"}
{"message":"For more information about an error, try `rustc --explain E0412`.","code":null,"level":"failure-note","spans":[],"children":[],"rendered":"\u001b[0m\u001b[1mFor more information about an error, try `rustc --explain E0412`.\u001b[0m\n"}

@ -0,0 +1,6 @@
{"message":"unresolved import `igloo_cli`","code":{"code":"E0432","explanation":"An import was unresolved.\n\nErroneous code example:\n\n```compile_fail,E0432\nuse something::Foo; // error: unresolved import `something::Foo`.\n```\n\nIn Rust 2015, paths in `use` statements are relative to the crate root. To\nimport items relative to the current and parent modules, use the `self::` and\n`super::` prefixes, respectively.\n\nIn Rust 2018, paths in `use` statements are relative to the current module\nunless they begin with the name of a crate or a literal `crate::`, in which\ncase they start from the crate root. As in Rust 2015 code, the `self::` and\n`super::` prefixes refer to the current and parent modules respectively.\n\nAlso verify that you didn't misspell the import name and that the import exists\nin the module from where you tried to import it. Example:\n\n```\nuse self::something::Foo; // Ok.\n\nmod something {\n pub struct Foo;\n}\n# fn main() {}\n```\n\nIf you tried to use a module from an external crate and are using Rust 2015,\nyou may have missed the `extern crate` declaration (which is usually placed in\nthe crate root):\n\n```edition2015\nextern crate core; // Required to use the `core` crate in Rust 2015.\n\nuse core::any;\n# fn main() {}\n```\n\nIn Rust 2018 the `extern crate` declaration is not required and you can instead\njust `use` it:\n\n```edition2018\nuse core::any; // No extern crate required in Rust 2018.\n# fn main() {}\n```\n"},"level":"error","spans":[{"file_name":"igloo_agent/src/main.rs","byte_start":4,"byte_end":13,"line_start":1,"line_end":1,"column_start":5,"column_end":14,"is_primary":true,"text":[{"text":"use igloo_cli;","highlight_start":5,"highlight_end":14}],"label":"no `igloo_cli` external crate","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[38;5;9merror[E0432]\u001b[0m\u001b[0m\u001b[1m: unresolved import `igloo_cli`\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0migloo_agent/src/main.rs:1:5\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m1\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0muse igloo_cli;\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;9m^^^^^^^^^\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;9mno `igloo_cli` external crate\u001b[0m\n\n"}
{"message":"failed to resolve: use of undeclared type or module `IglooCliCfg`","code":{"code":"E0433","explanation":"An undeclared type or module was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type or module `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n"},"level":"error","spans":[{"file_name":"igloo_agent/src/main.rs","byte_start":50,"byte_end":61,"line_start":4,"line_end":4,"column_start":23,"column_end":34,"is_primary":true,"text":[{"text":"\tlet x: IglooCliCfg = IglooCliCfg::IglooCliCfgOpt1;","highlight_start":23,"highlight_end":34}],"label":"use of undeclared type or module `IglooCliCfg`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[38;5;9merror[E0433]\u001b[0m\u001b[0m\u001b[1m: failed to resolve: use of undeclared type or module `IglooCliCfg`\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0migloo_agent/src/main.rs:4:23\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m4\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m let x: IglooCliCfg = IglooCliCfg::IglooCliCfgOpt1;\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;9m^^^^^^^^^^^\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;9muse of undeclared type or module `IglooCliCfg`\u001b[0m\n\n"}
{"message":"cannot find type `IglooCliCfg` in this scope","code":{"code":"E0412","explanation":"A used type name is not in scope.\n\nErroneous code examples:\n\n```compile_fail,E0412\nimpl Something {} // error: type name `Something` is not in scope\n\n// or:\n\ntrait Foo {\n fn bar(N); // error: type name `N` is not in scope\n}\n\n// or:\n\nfn foo(x: T) {} // type name `T` is not in scope\n```\n\nTo fix this error, please verify you didn't misspell the type name, you did\ndeclare it or imported it into the scope. Examples:\n\n```\nstruct Something;\n\nimpl Something {} // ok!\n\n// or:\n\ntrait Foo {\n type N;\n\n fn bar(_: Self::N); // ok!\n}\n\n// or:\n\nfn foo<T>(x: T) {} // ok!\n```\n\nAnother case that causes this error is when a type is imported into a parent\nmodule. To fix this, you can follow the suggestion and use File directly or\n`use super::File;` which will import the types from the parent namespace. An\nexample that causes this error is below:\n\n```compile_fail,E0412\nuse std::fs::File;\n\nmod foo {\n fn some_function(f: File) {}\n}\n```\n\n```\nuse std::fs::File;\n\nmod foo {\n // either\n use super::File;\n // or\n // use std::fs::File;\n fn foo(f: File) {}\n}\n# fn main() {} // don't insert it for us; that'll break imports\n```\n"},"level":"error","spans":[{"file_name":"igloo_agent/src/main.rs","byte_start":36,"byte_end":47,"line_start":4,"line_end":4,"column_start":9,"column_end":20,"is_primary":true,"text":[{"text":"\tlet x: IglooCliCfg = IglooCliCfg::IglooCliCfgOpt1;","highlight_start":9,"highlight_end":20}],"label":"not found in this scope","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[38;5;9merror[E0412]\u001b[0m\u001b[0m\u001b[1m: cannot find type `IglooCliCfg` in this scope\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0migloo_agent/src/main.rs:4:9\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m4\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m let x: IglooCliCfg = IglooCliCfg::IglooCliCfgOpt1;\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;9m^^^^^^^^^^^\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;9mnot found in this scope\u001b[0m\n\n"}
{"message":"aborting due to 3 previous errors","code":null,"level":"error","spans":[],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[38;5;9merror\u001b[0m\u001b[0m\u001b[1m: aborting due to 3 previous errors\u001b[0m\n\n"}
{"message":"Some errors have detailed explanations: E0412, E0432, E0433.","code":null,"level":"failure-note","spans":[],"children":[],"rendered":"\u001b[0m\u001b[1mSome errors have detailed explanations: E0412, E0432, E0433.\u001b[0m\n"}
{"message":"For more information about an error, try `rustc --explain E0412`.","code":null,"level":"failure-note","spans":[],"children":[],"rendered":"\u001b[0m\u001b[1mFor more information about an error, try `rustc --explain E0412`.\u001b[0m\n"}

@ -0,0 +1 @@
{"rustc":66165631676752942,"features":"[]","target":3182324659670158807,"profile":10655494245791646288,"path":1815015714726916296,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/igloo_agent-85ab39ded87fe90f/dep-test-bin-igloo_agent"}}],"rustflags":[],"metadata":3437543006848290768,"config":0}

@ -0,0 +1,2 @@
{"message":"unused variable: `x`","code":{"code":"unused_variables","explanation":null},"level":"warning","spans":[{"file_name":"igloo_agent/src/main.rs","byte_start":36,"byte_end":37,"line_start":4,"line_end":4,"column_start":6,"column_end":7,"is_primary":true,"text":[{"text":"\tlet x: IglooCliCfg = IglooCliCfg::IglooCliCfgOpt1;","highlight_start":6,"highlight_end":7}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(unused_variables)]` on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"if this is intentional, prefix it with an underscore","code":null,"level":"help","spans":[{"file_name":"igloo_agent/src/main.rs","byte_start":36,"byte_end":37,"line_start":4,"line_end":4,"column_start":6,"column_end":7,"is_primary":true,"text":[{"text":"\tlet x: IglooCliCfg = IglooCliCfg::IglooCliCfgOpt1;","highlight_start":6,"highlight_end":7}],"label":null,"suggested_replacement":"_x","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused variable: `x`\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0migloo_agent/src/main.rs:4:6\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m4\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m let x: IglooCliCfg = IglooCliCfg::IglooCliCfgOpt1;\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33mhelp: if this is intentional, prefix it with an underscore: `_x`\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: `#[warn(unused_variables)]` on by default\u001b[0m\n\n"}
{"message":"1 warning emitted","code":null,"level":"warning","spans":[],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: 1 warning emitted\u001b[0m\n\n"}

@ -0,0 +1 @@
{"rustc":66165631676752942,"features":"[]","target":3182324659670158807,"profile":10655494245791646288,"path":1815015714726916296,"deps":[[16739089134865246075,"igloo_cli",false,1549838123250796052]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/igloo_agent-9326ff99a6a12f9b/dep-test-bin-igloo_agent"}}],"rustflags":[],"metadata":3437543006848290768,"config":0}

@ -0,0 +1 @@
{"rustc":66165631676752942,"features":"[]","target":8962105131619297164,"profile":18074012566298724745,"path":4383703642874703997,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/igloo_base-25c3b6ee9fcb590f/dep-lib-igloo_base"}}],"rustflags":[],"metadata":3437543006848290768,"config":0}

Some files were not shown because too many files have changed in this diff Show More