bug with makefiles

stable
penguin 4 years ago
parent 07ade28ba2
commit 481d5c1a7c

@ -1 +0,0 @@
penguin@penguin-arch-home.68690:1602942911

@ -0,0 +1,4 @@
[esf.links]
MCU = "arch/arm/SAMD21/SAMD21A/mcu/"
LD = "arch/arm/SAMD21/SAMD21A/ld/"
CFG = "arch/arm/SAMD21/SAMD21A/cfg/"

@ -5,17 +5,26 @@
[arch] [arch]
QUOTE = "\"" QUOTE = "\""
PROJECT_NAME = "Default Project Name" PROJECT_NAME = "Default Project Name"
DIR_INCLUDES = ["-I$(QUOTE)../ESF/mcu/inc$(QUOTE)", DIR_INCLUDES = ["-I$(QUOTE)../ESF/mcu/inc$(QUOTE)",
"-I$(QUOTE)../inc$(QUOTE)"] "-I$(QUOTE)../inc$(QUOTE)"]
[arch.arm] DEPS = "$(OBJS:%.o=%.d)"
CC = "arm-none-eabi-gcc" DEPS_AS_ARGS = "$(OBJS:%.o=%.d)"
CXX = "arm-none-eabi-g++" OBJS = ["src/main.o"]
OBJCOPY = "arm-none-eabi-objcopy" OBJS_AS_ARGS = ["$(QUOTE)src/main.o$(QUOTE)"]
OBJDUMP = "arm-none-eabi-objdump"
SIZE = "arm-none-eabi-gdb" CLEAN_PREREQS = [""]
AS = "arm-none-eabi-as" CLEAN_CMDS = ["rm -f $(OBJS_AS_ARGS)",
"rm -f $(DEPS_AS_ARGS)"]
[arch.arm]
TOOLCHAIN = "${ESF_DIR}/toolchain/arm/bin/arm-none-eabi"
CC = "${TOOLCHAIN}-gcc"
CXX = "${TOOLCHAIN}-g++"
OBJCOPY = "${TOOLCHAIN}-objcopy"
OBJDUMP = "${TOOLCHAIN}-objdump"
GDB = "${TOOLCHAIN}-gdb"
SIZE = "${TOOLCHAIN}-size"
AS = "${TOOLCHAIN}-as"
CFLAGS = ["-x c", "-DDEBUG", "-Os", CFLAGS = ["-x c", "-DDEBUG", "-Os",
"-g3", "-g3",
"-Wall", "-Wall",
@ -36,38 +45,49 @@ HFLAGS = ["-R .eeprom",
"-R .fuse", "-R .fuse",
"-R .lock", "-R .lock",
"-R .signature"] "-R .signature"]
EEP_FLAGS = ["-j .eeprom --set-section-flags=.eeprom=alloc,load", EEP_FLAGS = ["-j .eeprom --set-section-flags=.eeprom=alloc,load",
"--change-section-lma", "--change-section-lma",
".eeprom=0", ".eeprom=0",
"--no-change-warnings"] "--no-change-warnings"]
LD_PATH = "../ESF/ld" LD_PATH = "../ESF/ld"
DIR_INCLUDES = ["-I$(QUOTE)../ESF/common/inc$(QUOTE)", DIR_INCLUDES = ["-I$(QUOTE)../ESF/common/inc$(QUOTE)",
"-I$(QUOTE)../ESF/common/inc/cmsis$(QUOTE)"] "-I$(QUOTE)../ESF/common/inc/cmsis$(QUOTE)"]
[arch.arm.samd21] BUILD_PREREQ = ["$(SUB_DIRS)",
"$(PROJECT_NAME).elf)",
"$(PROJECT_NAME).bin)",
"$(PROJECT_NAME).hex)",
"$(PROJECT_NAME).eep)",
"$(PROJECT_NAME).lss)"]
BUILD_CMDS = ["$(QUOTE)$(SIZE)$(QUOTE) $(QUOTE)$(PROJECT_NAME).elf$(QUOTE)"]
SUB_DIRS = ["src", "ESF/mcu/src"]
[arch.arm.samd21a]
MCPU = "cortex-m0plus" MCPU = "cortex-m0plus"
[arch.arm.samd21.samd21e15a] [arch.arm.samd21a.samd21e15a]
[arch.arm.samd21.samd21e16a] [arch.arm.samd21a.samd21e16a]
[arch.arm.samd21.samd21e17a] [arch.arm.samd21a.samd21e17a]
[arch.arm.samd21.samd21e18a] [arch.arm.samd21a.samd21e18a]
[arch.arm.samd21.samd21g15a] [arch.arm.samd21a.samd21g15a]
[arch.arm.samd21.samd21g16a] [arch.arm.samd21a.samd21g16a]
[arch.arm.samd21.samd21g17a] [arch.arm.samd21a.samd21g17a]
[arch.arm.samd21.samd21g17au] [arch.arm.samd21a.samd21g17au]
[arch.arm.samd21.samd21g18a] [arch.arm.samd21a.samd21g18a]
[arch.arm.samd21.samd21g18au] [arch.arm.samd21a.samd21g18au]
[arch.arm.samd21.samd21j15a] [arch.arm.samd21a.samd21j15a]
[arch.arm.samd21.samd21j16a] [arch.arm.samd21a.samd21j16a]
[arch.arm.samd21.samd21j17a] [arch.arm.samd21a.samd21j17a]
MCU = "__SAMD21J17A__" MCU = "__SAMD21J17A__"
LD_SCRIPT = "$(LD_PATH)/samd21j17a_flash.ld" LD_SCRIPT = "$(LD_PATH)/samd21j17a_flash.ld"
[arch.arm.samd21.samd21j18a] [arch.arm.samd21a.samd21j18a]
OBJS = ["ESF/mcu/src/startup_samd21j18a.o",
"ESF/mcu/src/system_samd21j18a.o"]
OBJS_AS_ARGS = ["$(QUOTE)ESF/mcu/src/startup_samd21j18a.o$(QUOTE)",
"$(QUOTE)ESF/mcu/src/system_samd21j18a.o$(QUOTE)"]
MCU = "__SAMD21J18A__" MCU = "__SAMD21J18A__"
LD_SCRIPT = "$(LD_PATH)/samd21j18a_flash.ld" LD_SCRIPT = "$(LD_PATH)/samd21j18a_flash.ld"
[arch.arm.same54] [arch.arm.same54]
MCPU = "cortex-m4" MCPU = "cortex-m4"
FPU = "fpv4-sp-d16" FPU = "fpv4-sp-d16"

@ -1,4 +1,7 @@
[mcu] [cfg.mcu]
samd21j18a = "${ESF_DIR}/arch/arm/SAMD21/SAMD21A/cfg/samd21j18a.toml"
[make.mcu]
samd21e15a = "arch.arm.samd21a.samd21e15a" samd21e15a = "arch.arm.samd21a.samd21e15a"
samd21e16a = "arch.arm.samd21a.samd21e16a" samd21e16a = "arch.arm.samd21a.samd21e16a"
samd21e17a = "arch.arm.samd21a.samd21e17a" samd21e17a = "arch.arm.samd21a.samd21e17a"
@ -13,3 +16,6 @@ samd21j15a = "arch.arm.samd21a.samd21j15a"
samd21j16a = "arch.arm.samd21a.samd21j16a" samd21j16a = "arch.arm.samd21a.samd21j16a"
samd21j17a = "arch.arm.samd21a.samd21j17a" samd21j17a = "arch.arm.samd21a.samd21j17a"
samd21j18a = "arch.arm.samd21a.samd21j18a" samd21j18a = "arch.arm.samd21a.samd21j18a"
[sym.mcu]
# To be implemented

@ -0,0 +1,74 @@
# ePenguin Generated Variables
TOOLCHAIN=${ESF_DIR}/toolchain/arm/bin/arm-none-eabi
CC=${TOOLCHAIN}-gcc
CXX=${TOOLCHAIN}-g++
OBJCOPY=${TOOLCHAIN}-objcopy
OBJDUMP=${TOOLCHAIN}-objdump
OBJDUMP=${TOOLCHAIN}-gdb
SIZE=${TOOLCHAIN}-size
AS=${TOOLCHAIN}-as
MCPU=cortex-m0plus
MCU=__SAMD21J18A__
LD_PATH=../ESF/ld
LD_SCRIPT=$(LD_PATH)/samd21j18a_flash.ld
CFLAGS= \
-x c \
-DDEBUG \
-Os \
-g3 \
-Wall \
-std=gnu99 \
$(DIR_INCLUDES) \
-MD -MP \
-MF$(QUOTE)$(@:%.o=%.d)$(QUOTE) \
-MT$(QUOTE)$(@:%.o=%.d)$(QUOTE) \
-MT$(QUOTE)$(@:%.o=%.o)$(QUOTE)
EFLAGS= \
-Wl,--start-group -l m \
-Wl,--end-group -mthumb \
-Wl,-Map=$(QUOTE)$(PROJECT_NAME).map$(QUOTE) \
--specs=nano.specs \
-Wl,--gc-sections
ifdef SystemRoot
SHELL = cmd.exe
MK_DIR = mkdir
else
ifeq ($(shell uname), Linux)
MK_DIR = mkdir -p
endif
ifeq ($(shell uname | cut -d _ -f 1), CYGWIN)
MK_DIR = mkdir -p
endif
ifeq ($(shell uname | cut -d _ -f 1), MINGW32)
MK_DIR = mkdir -p
endif
ifeq ($(shell uname | cut -d _ -f 1), MINGW64)
MK_DIR = mkdir -p
endif
ifeq ($(shell uname | cut -d _ -f 1), DARWIN)
MK_DIR = mkdir -p
endif
endif
SUB_DIRS+= \
src \
ESF/mcu/src
OBJS+= \
ESF/mcu/src/startup_samd21j18a.o \
ESF/mcu/src/system_samd21j18a.o \
[Value { origin: None, kind: String("src/main.o") }]
OBJS_AS_ARGS+= \
$(QUOTE)ESF/mcu/src/startup_samd21j18a.o$(QUOTE) \
$(QUOTE)ESF/mcu/src/system_samd21j18a.o$(QUOTE) \
[Value { origin: None, kind: String("$(QUOTE)src/main.o$(QUOTE)") }]

@ -0,0 +1,351 @@
use config::{Config, Environment, Value};
use std::collections::HashMap;
use std::io::prelude::*;
use std::fs::File;
use std::fs::OpenOptions;
use std::path::Path;
fn main()
{
let mut mcu_lookup_table = Config::new();
let mut make_manifest: Config = Config::new();
mcu_lookup_table.merge(config::File::with_name("\
/storage/Shared/Documents/Projects/ePenguin/\
ePenguin-Software-Framework/arch/mcu-lookup.toml")).unwrap();
make_manifest.merge(config::File::with_name("\
/storage/Shared/Documents/Projects/ePenguin/\
ePenguin-Software-Framework/arch/make-manifest.toml")).unwrap();
let mut _table_name = mcu_lookup_table.get_str("make.mcu.samd21j18a").unwrap();
let mut table_head = &_table_name[0.._table_name.len()];
let mut makefile: HashMap<String, config::Value> = HashMap::new();
let mut b_quit: bool = false;
loop
{
let mut _active_table = make_manifest.get_table(&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 new_arr: std::vec::Vec<config::Value> = makefile.get_key_value(&name).unwrap().1.clone().into_array().unwrap();
new_arr.push(val.into_array());
makefile.insert(name, config::Value::from(new_arr));
}
}
Ok(_v) => {}
}
}
match table_head.rfind('.')
{
None => b_quit = true,
Some(v) => table_head = &table_head[0..v],
}
if b_quit
{
break;
}
}
for (key_id, val) in &makefile
{
println!("\n{}: {:?}", key_id, val);
}
gen_makefile(&makefile);
}
fn gen_makefile(mkfile: &HashMap<String, config::Value>) -> bool
{
// If the Makefile already exists, trash it
if Path::new("Makefile").exists()
{
std::fs::remove_file("Makefile");
}
// Make our Makefile, set it to append mode
File::create("Makefile").unwrap();
let mut app_file = OpenOptions::new()
.write(true)
.append(true)
.open("Makefile")
.unwrap();
//
writeln!(app_file, "# ePenguin Generated Variables").unwrap();
// Get our knowns out of the way
match mkfile.get("TOOLCHAIN")
{
None =>
{
println!("TOOLCHAIN Not found");
}
Some(v) =>
{
write!(app_file, "TOOLCHAIN=").unwrap();
writeln!(app_file, "{}", v.to_string()).unwrap();
},
}
match mkfile.get("CC")
{
None =>
{
println!("CC Not found");
}
Some(v) =>
{
write!(app_file, "CC=").unwrap();
writeln!(app_file, "{}", v.to_string()).unwrap();
},
}
match mkfile.get("CXX")
{
None =>
{
println!("CXX Not found");
}
Some(v) =>
{
write!(app_file, "CXX=").unwrap();
writeln!(app_file, "{}", v.to_string()).unwrap();
},
}
match mkfile.get("OBJCOPY")
{
None =>
{
println!("OBJCOPY Not found");
}
Some(v) =>
{
write!(app_file, "OBJCOPY=").unwrap();
writeln!(app_file, "{}", v.to_string()).unwrap();
},
}
match mkfile.get("OBJDUMP")
{
None =>
{
println!("OBJDUMP Not found");
}
Some(v) =>
{
write!(app_file, "OBJDUMP=").unwrap();
writeln!(app_file, "{}", v.to_string()).unwrap();
},
}
match mkfile.get("GDB")
{
None =>
{
println!("GDB Not found");
}
Some(v) =>
{
write!(app_file, "OBJDUMP=").unwrap();
writeln!(app_file, "{}", v.to_string()).unwrap();
},
}
match mkfile.get("SIZE")
{
None =>
{
println!("SIZE Not found");
}
Some(v) =>
{
write!(app_file, "SIZE=").unwrap();
writeln!(app_file, "{}", v.to_string()).unwrap();
},
}
match mkfile.get("AS")
{
None =>
{
println!("AS Not found");
}
Some(v) =>
{
write!(app_file, "AS=").unwrap();
writeln!(app_file, "{}", v.to_string()).unwrap();
},
}
writeln!(app_file, "\n").unwrap();
// MCU Specifics now
match mkfile.get("MCPU")
{
None =>
{
println!("MCPU Not found");
}
Some(v) =>
{
write!(app_file, "MCPU=").unwrap();
writeln!(app_file, "{}", v.to_string()).unwrap();
},
}
match mkfile.get("MCU")
{
None =>
{
println!("MCU Not found");
}
Some(v) =>
{
write!(app_file, "MCU=").unwrap();
writeln!(app_file, "{}", v.to_string()).unwrap();
},
}
match mkfile.get("LD_PATH")
{
None =>
{
println!("LD_PATH Not found");
}
Some(v) =>
{
write!(app_file, "LD_PATH=").unwrap();
writeln!(app_file, "{}", v.to_string()).unwrap();
},
}
match mkfile.get("LD_SCRIPT")
{
None =>
{
println!("LD_SCRIPT Not found");
}
Some(v) =>
{
write!(app_file, "LD_SCRIPT=").unwrap();
writeln!(app_file, "{}", v.to_string()).unwrap();
},
}
writeln!(app_file, "\n").unwrap();
// CFLAGS
match mkfile.get("CFLAGS")
{
None =>
{
println!("CFLAGS Not found");
}
Some(v) =>
{
write!(app_file, "CFLAGS=").unwrap();
for cflag in v.clone().into_array().unwrap()
{
writeln!(app_file, " \\").unwrap();
write!(app_file, "{}", cflag).unwrap();
}
},
}
writeln!(app_file, "\n").unwrap();
// ELF FLAGS
match mkfile.get("EFLAGS")
{
None =>
{
println!("EFLAGS Not found");
}
Some(v) =>
{
write!(app_file, "EFLAGS=").unwrap();
for cflag in v.clone().into_array().unwrap()
{
writeln!(app_file, " \\").unwrap();
write!(app_file, "{}", cflag).unwrap();
}
},
}
writeln!(app_file, "\n").unwrap();
// Write SystemRoot config stuff for cross compatibility
let sysroot: String = String::from("ifdef SystemRoot
SHELL = cmd.exe\n\
MK_DIR = mkdir\n\
else\n\
ifeq ($(shell uname), Linux)\n\
MK_DIR = mkdir -p\n\
endif\n\
\n\
ifeq ($(shell uname | cut -d _ -f 1), CYGWIN)\n\
MK_DIR = mkdir -p\n\
endif\n\
\n\
ifeq ($(shell uname | cut -d _ -f 1), MINGW32)\n\
MK_DIR = mkdir -p\n\
endif\n\
\n\
ifeq ($(shell uname | cut -d _ -f 1), MINGW64)\n\
MK_DIR = mkdir -p\n\
endif\n\
\n\
ifeq ($(shell uname | cut -d _ -f 1), DARWIN)\n\
MK_DIR = mkdir -p\n\
endif\n\
endif\n\
");
writeln!(app_file, "{}\n", sysroot).unwrap();
match mkfile.get("SUB_DIRS")
{
None =>
{
println!("SUB_DIRS Not found");
}
Some(v) =>
{
write!(app_file, "SUB_DIRS+=").unwrap();
for cflag in v.clone().into_array().unwrap()
{
writeln!(app_file, " \\").unwrap();
write!(app_file, "{}", cflag).unwrap();
}
},
}
write!(app_file, "\n").unwrap();
match mkfile.get("OBJS")
{
None =>
{
println!("OBJS Not found");
}
Some(v) =>
{
write!(app_file, "OBJS+=").unwrap();
for cflag in v.clone().into_array().unwrap()
{
writeln!(app_file, " \\").unwrap();
write!(app_file, "{}", cflag).unwrap();
}
},
}
write!(app_file, "\n").unwrap();
match mkfile.get("OBJS_AS_ARGS")
{
None =>
{
println!("OBJS_AS_ARGS Not found");
}
Some(v) =>
{
write!(app_file, "OBJS_AS_ARGS+=").unwrap();
for cflag in v.clone().into_array().unwrap()
{
writeln!(app_file, " \\").unwrap();
write!(app_file, "{}", cflag).unwrap();
}
},
}
true
}

@ -1,16 +1,20 @@
use config::{Config, File, Environment, Value}; use config::{Config, Environment, Value};
use std::collections::HashMap; use std::collections::HashMap;
use std::io::prelude::*;
use std::fs::File;
use std::fs::OpenOptions;
use std::path::Path;
fn main() fn main()
{ {
let mut mcu_lookup_table = Config::new(); let mut mcu_lookup_table = Config::new();
let mut make_manifest: Config = Config::new(); let mut make_manifest: Config = Config::new();
mcu_lookup_table.merge(File::with_name("\ mcu_lookup_table.merge(config::File::with_name("\
/storage/Shared/Documents/Projects/ePenguin/\ /storage/Shared/Documents/Projects/ePenguin/\
ePenguin-Software-Framework/arch/mcu-lookup.toml")).unwrap(); ePenguin-Software-Framework/arch/mcu-lookup.toml")).unwrap();
make_manifest.merge(File::with_name("\ make_manifest.merge(config::File::with_name("\
/storage/Shared/Documents/Projects/ePenguin/\ /storage/Shared/Documents/Projects/ePenguin/\
ePenguin-Software-Framework/arch/make-manifest.toml")).unwrap(); ePenguin-Software-Framework/arch/make-manifest.toml")).unwrap();
let mut _table_name = mcu_lookup_table.get_str("mcu.samd21j18a").unwrap(); let mut _table_name = mcu_lookup_table.get_str("make.mcu.samd21j18a").unwrap();
let mut table_head = &_table_name[0.._table_name.len()]; let mut table_head = &_table_name[0.._table_name.len()];
let mut makefile: HashMap<String, config::Value> = HashMap::new(); let mut makefile: HashMap<String, config::Value> = HashMap::new();
let mut b_quit: bool = false; let mut b_quit: bool = false;
@ -29,15 +33,26 @@ fn main()
} }
else else
{ {
let mut new_arr = makefile.get_key_value(&name).unwrap().1.clone().into_array().unwrap(); let mut new_arr = makefile
new_arr.push(val); .get_key_value(&name).unwrap().1.clone().into_array().unwrap();
makefile.insert(name, config::Value::from(new_arr)); println!("\n\n\n\nPRINTING THINGY\n\n\n\n\n");
} for x in &new_arr
{
println!("{:?}", x);
} }
Ok(_v) => println!("\n\n\n\n\nPRINTING THINGY OVER\n\n\n\n");
new_arr.push(config::Value::from(val.into_array().unwrap()));
println!("\n\n\n\nPRINTING THINGY\n\n\n\n\n");
for x in &new_arr
{ {
println!("{:?}", x);
}
println!("\n\n\n\n\nPRINTING THINGY OVER\n\n\n\n");
makefile.insert(name, config::Value::from(new_arr));
}
} }
Ok(_v) => {}
} }
} }
match table_head.rfind('.') match table_head.rfind('.')
@ -47,7 +62,6 @@ fn main()
} }
if b_quit if b_quit
{ {
break; break;
} }
} }
@ -56,4 +70,296 @@ fn main()
{ {
println!("\n{}: {:?}", key_id, val); println!("\n{}: {:?}", key_id, val);
} }
gen_makefile(&makefile);
}
fn gen_makefile(mkfile: &HashMap<String, config::Value>) -> bool
{
// If the Makefile already exists, trash it
if Path::new("Makefile").exists()
{
std::fs::remove_file("Makefile");
}
// Make our Makefile, set it to append mode
File::create("Makefile").unwrap();
let mut app_file = OpenOptions::new()
.write(true)
.append(true)
.open("Makefile")
.unwrap();
//
writeln!(app_file, "# ePenguin Generated Variables").unwrap();
// Get our knowns out of the way
match mkfile.get("TOOLCHAIN")
{
None =>
{
println!("TOOLCHAIN Not found");
}
Some(v) =>
{
write!(app_file, "TOOLCHAIN=").unwrap();
writeln!(app_file, "{}", v.to_string()).unwrap();
},
}
match mkfile.get("CC")
{
None =>
{
println!("CC Not found");
}
Some(v) =>
{
write!(app_file, "CC=").unwrap();
writeln!(app_file, "{}", v.to_string()).unwrap();
},
}
match mkfile.get("CXX")
{
None =>
{
println!("CXX Not found");
}
Some(v) =>
{
write!(app_file, "CXX=").unwrap();
writeln!(app_file, "{}", v.to_string()).unwrap();
},
}
match mkfile.get("OBJCOPY")
{
None =>
{
println!("OBJCOPY Not found");
}
Some(v) =>
{
write!(app_file, "OBJCOPY=").unwrap();
writeln!(app_file, "{}", v.to_string()).unwrap();
},
}
match mkfile.get("OBJDUMP")
{
None =>
{
println!("OBJDUMP Not found");
}
Some(v) =>
{
write!(app_file, "OBJDUMP=").unwrap();
writeln!(app_file, "{}", v.to_string()).unwrap();
},
}
match mkfile.get("GDB")
{
None =>
{
println!("GDB Not found");
}
Some(v) =>
{
write!(app_file, "OBJDUMP=").unwrap();
writeln!(app_file, "{}", v.to_string()).unwrap();
},
}
match mkfile.get("SIZE")
{
None =>
{
println!("SIZE Not found");
}
Some(v) =>
{
write!(app_file, "SIZE=").unwrap();
writeln!(app_file, "{}", v.to_string()).unwrap();
},
}
match mkfile.get("AS")
{
None =>
{
println!("AS Not found");
}
Some(v) =>
{
write!(app_file, "AS=").unwrap();
writeln!(app_file, "{}", v.to_string()).unwrap();
},
}
writeln!(app_file, "\n").unwrap();
// MCU Specifics now
match mkfile.get("MCPU")
{
None =>
{
println!("MCPU Not found");
}
Some(v) =>
{
write!(app_file, "MCPU=").unwrap();
writeln!(app_file, "{}", v.to_string()).unwrap();
},
}
match mkfile.get("MCU")
{
None =>
{
println!("MCU Not found");
}
Some(v) =>
{
write!(app_file, "MCU=").unwrap();
writeln!(app_file, "{}", v.to_string()).unwrap();
},
}
match mkfile.get("LD_PATH")
{
None =>
{
println!("LD_PATH Not found");
}
Some(v) =>
{
write!(app_file, "LD_PATH=").unwrap();
writeln!(app_file, "{}", v.to_string()).unwrap();
},
}
match mkfile.get("LD_SCRIPT")
{
None =>
{
println!("LD_SCRIPT Not found");
}
Some(v) =>
{
write!(app_file, "LD_SCRIPT=").unwrap();
writeln!(app_file, "{}", v.to_string()).unwrap();
},
}
writeln!(app_file, "\n").unwrap();
// CFLAGS
match mkfile.get("CFLAGS")
{
None =>
{
println!("CFLAGS Not found");
}
Some(v) =>
{
write!(app_file, "CFLAGS=").unwrap();
for cflag in v.clone().into_array().unwrap()
{
writeln!(app_file, " \\").unwrap();
write!(app_file, "{}", cflag).unwrap();
}
},
}
writeln!(app_file, "\n").unwrap();
// ELF FLAGS
match mkfile.get("EFLAGS")
{
None =>
{
println!("EFLAGS Not found");
}
Some(v) =>
{
write!(app_file, "EFLAGS=").unwrap();
for cflag in v.clone().into_array().unwrap()
{
writeln!(app_file, " \\").unwrap();
write!(app_file, "{}", cflag).unwrap();
}
},
}
writeln!(app_file, "\n").unwrap();
// Write SystemRoot config stuff for cross compatibility
let sysroot: String = String::from("ifdef SystemRoot
SHELL = cmd.exe\n\
MK_DIR = mkdir\n\
else\n\
ifeq ($(shell uname), Linux)\n\
MK_DIR = mkdir -p\n\
endif\n\
\n\
ifeq ($(shell uname | cut -d _ -f 1), CYGWIN)\n\
MK_DIR = mkdir -p\n\
endif\n\
\n\
ifeq ($(shell uname | cut -d _ -f 1), MINGW32)\n\
MK_DIR = mkdir -p\n\
endif\n\
\n\
ifeq ($(shell uname | cut -d _ -f 1), MINGW64)\n\
MK_DIR = mkdir -p\n\
endif\n\
\n\
ifeq ($(shell uname | cut -d _ -f 1), DARWIN)\n\
MK_DIR = mkdir -p\n\
endif\n\
endif\n\
");
writeln!(app_file, "{}\n", sysroot).unwrap();
match mkfile.get("SUB_DIRS")
{
None =>
{
println!("SUB_DIRS Not found");
}
Some(v) =>
{
write!(app_file, "SUB_DIRS+=").unwrap();
for cflag in v.clone().into_array().unwrap()
{
writeln!(app_file, " \\").unwrap();
write!(app_file, "{}", cflag).unwrap();
}
},
}
write!(app_file, "\n").unwrap();
match mkfile.get("OBJS")
{
None =>
{
println!("OBJS Not found");
}
Some(v) =>
{
write!(app_file, "OBJS+=").unwrap();
for cflag in v.clone().into_array().unwrap()
{
writeln!(app_file, " \\").unwrap();
write!(app_file, "{}", cflag).unwrap();
}
},
}
write!(app_file, "\n").unwrap();
match mkfile.get("OBJS_AS_ARGS")
{
None =>
{
println!("OBJS_AS_ARGS Not found");
}
Some(v) =>
{
write!(app_file, "OBJS_AS_ARGS+=").unwrap();
for cflag in v.clone().into_array().unwrap()
{
writeln!(app_file, " \\").unwrap();
write!(app_file, "{}", cflag).unwrap();
}
},
}
true
} }

@ -1,2 +1,3 @@
{"message":"unused imports: `Environment`, `Value`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":27,"byte_end":38,"line_start":1,"line_end":1,"column_start":28,"column_end":39,"is_primary":true,"text":[{"text":"use config::{Config, File, Environment, Value};","highlight_start":28,"highlight_end":39}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/main.rs","byte_start":40,"byte_end":45,"line_start":1,"line_end":1,"column_start":41,"column_end":46,"is_primary":true,"text":[{"text":"use config::{Config, File, Environment, Value};","highlight_start":41,"highlight_end":46}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(unused_imports)]` on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"remove the unused imports","code":null,"level":"help","spans":[{"file_name":"src/main.rs","byte_start":25,"byte_end":45,"line_start":1,"line_end":1,"column_start":26,"column_end":46,"is_primary":true,"text":[{"text":"use config::{Config, File, Environment, Value};","highlight_start":26,"highlight_end":46}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused imports: `Environment`, `Value`\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:1: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;12m1\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0muse config::{Config, File, Environment, Value};\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[33m^^^^^\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_imports)]` on by default\u001b[0m\n\n"} {"message":"unused imports: `Environment`, `Value`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":21,"byte_end":32,"line_start":1,"line_end":1,"column_start":22,"column_end":33,"is_primary":true,"text":[{"text":"use config::{Config, Environment, Value};","highlight_start":22,"highlight_end":33}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/main.rs","byte_start":34,"byte_end":39,"line_start":1,"line_end":1,"column_start":35,"column_end":40,"is_primary":true,"text":[{"text":"use config::{Config, Environment, Value};","highlight_start":35,"highlight_end":40}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(unused_imports)]` on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"remove the unused imports","code":null,"level":"help","spans":[{"file_name":"src/main.rs","byte_start":19,"byte_end":39,"line_start":1,"line_end":1,"column_start":20,"column_end":40,"is_primary":true,"text":[{"text":"use config::{Config, Environment, Value};","highlight_start":20,"highlight_end":40}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused imports: `Environment`, `Value`\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:1: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;12m1\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0muse config::{Config, Environment, Value};\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[33m^^^^^\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_imports)]` 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"} {"message":"unused `std::result::Result` that must be used","code":{"code":"unused_must_use","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":2146,"byte_end":2179,"line_start":81,"line_end":81,"column_start":3,"column_end":36,"is_primary":true,"text":[{"text":"\t\tstd::fs::remove_file(\"Makefile\");","highlight_start":3,"highlight_end":36}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(unused_must_use)]` on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"this `Result` may be an `Err` variant, which should be handled","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused `std::result::Result` that must be used\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:81:3\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;12m81\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m std::fs::remove_file(\"Makefile\");\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\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_must_use)]` on by default\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: this `Result` may be an `Err` variant, which should be handled\u001b[0m\n\n"}
{"message":"2 warnings emitted","code":null,"level":"warning","spans":[],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: 2 warnings emitted\u001b[0m\n\n"}

@ -1,13 +1,3 @@
{"message":"unused import: `std::env`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":4,"byte_end":12,"line_start":1,"line_end":1,"column_start":5,"column_end":13,"is_primary":true,"text":[{"text":"use std::env;","highlight_start":5,"highlight_end":13}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(unused_imports)]` on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"remove the whole `use` item","code":null,"level":"help","spans":[{"file_name":"src/main.rs","byte_start":0,"byte_end":13,"line_start":1,"line_end":1,"column_start":1,"column_end":14,"is_primary":true,"text":[{"text":"use std::env;","highlight_start":1,"highlight_end":14}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused import: `std::env`\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/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 std::env;\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\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_imports)]` on by default\u001b[0m\n\n"} {"message":"unused imports: `Environment`, `Value`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":21,"byte_end":32,"line_start":1,"line_end":1,"column_start":22,"column_end":33,"is_primary":true,"text":[{"text":"use config::{Config, Environment, Value};","highlight_start":22,"highlight_end":33}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/main.rs","byte_start":34,"byte_end":39,"line_start":1,"line_end":1,"column_start":35,"column_end":40,"is_primary":true,"text":[{"text":"use config::{Config, Environment, Value};","highlight_start":35,"highlight_end":40}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(unused_imports)]` on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"remove the unused imports","code":null,"level":"help","spans":[{"file_name":"src/main.rs","byte_start":19,"byte_end":39,"line_start":1,"line_end":1,"column_start":20,"column_end":40,"is_primary":true,"text":[{"text":"use config::{Config, Environment, Value};","highlight_start":20,"highlight_end":40}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused imports: `Environment`, `Value`\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:1: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;12m1\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0muse config::{Config, Environment, Value};\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[33m^^^^^\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_imports)]` on by default\u001b[0m\n\n"}
{"message":"unused imports: `Environment`, `Value`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":41,"byte_end":52,"line_start":2,"line_end":2,"column_start":28,"column_end":39,"is_primary":true,"text":[{"text":"use config::{Config, File, Environment, Value};","highlight_start":28,"highlight_end":39}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/main.rs","byte_start":54,"byte_end":59,"line_start":2,"line_end":2,"column_start":41,"column_end":46,"is_primary":true,"text":[{"text":"use config::{Config, File, Environment, Value};","highlight_start":41,"highlight_end":46}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"remove the unused imports","code":null,"level":"help","spans":[{"file_name":"src/main.rs","byte_start":39,"byte_end":59,"line_start":2,"line_end":2,"column_start":26,"column_end":46,"is_primary":true,"text":[{"text":"use config::{Config, File, Environment, Value};","highlight_start":26,"highlight_end":46}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused imports: `Environment`, `Value`\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:2: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;12m2\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0muse config::{Config, File, Environment, Value};\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[33m^^^^^\u001b[0m\n\n"} {"message":"unused `std::result::Result` that must be used","code":{"code":"unused_must_use","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":2146,"byte_end":2179,"line_start":81,"line_end":81,"column_start":3,"column_end":36,"is_primary":true,"text":[{"text":"\t\tstd::fs::remove_file(\"Makefile\");","highlight_start":3,"highlight_end":36}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(unused_must_use)]` on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"this `Result` may be an `Err` variant, which should be handled","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused `std::result::Result` that must be used\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:81:3\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;12m81\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m std::fs::remove_file(\"Makefile\");\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\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_must_use)]` on by default\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: this `Result` may be an `Err` variant, which should be handled\u001b[0m\n\n"}
{"message":"unused import: `std::path::PathBuf`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":66,"byte_end":84,"line_start":3,"line_end":3,"column_start":5,"column_end":23,"is_primary":true,"text":[{"text":"use std::path::PathBuf;","highlight_start":5,"highlight_end":23}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"remove the whole `use` item","code":null,"level":"help","spans":[{"file_name":"src/main.rs","byte_start":62,"byte_end":85,"line_start":3,"line_end":3,"column_start":1,"column_end":24,"is_primary":true,"text":[{"text":"use std::path::PathBuf;","highlight_start":1,"highlight_end":24}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused import: `std::path::PathBuf`\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:3: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;12m3\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0muse std::path::PathBuf;\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\n\n"} {"message":"2 warnings emitted","code":null,"level":"warning","spans":[],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: 2 warnings emitted\u001b[0m\n\n"}
{"message":"unused import: `serde`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":90,"byte_end":95,"line_start":4,"line_end":4,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"use serde;","highlight_start":5,"highlight_end":10}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"remove the whole `use` item","code":null,"level":"help","spans":[{"file_name":"src/main.rs","byte_start":86,"byte_end":96,"line_start":4,"line_end":4,"column_start":1,"column_end":11,"is_primary":true,"text":[{"text":"use serde;","highlight_start":1,"highlight_end":11}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused import: `serde`\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:4: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;12m4\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0muse serde;\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\n\n"}
{"message":"unused import: `toml::*`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":101,"byte_end":108,"line_start":5,"line_end":5,"column_start":5,"column_end":12,"is_primary":true,"text":[{"text":"use toml::*;","highlight_start":5,"highlight_end":12}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"remove the whole `use` item","code":null,"level":"help","spans":[{"file_name":"src/main.rs","byte_start":97,"byte_end":109,"line_start":5,"line_end":5,"column_start":1,"column_end":13,"is_primary":true,"text":[{"text":"use toml::*;","highlight_start":1,"highlight_end":13}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused import: `toml::*`\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:5: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;12m5\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0muse toml::*;\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\n\n"}
{"message":"unused variable: `tempVec`","code":{"code":"unused_variables","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":758,"byte_end":769,"line_start":20,"line_end":20,"column_start":6,"column_end":17,"is_primary":true,"text":[{"text":"\tlet mut tempVec: std::vec::Vec<config::Value> = std::vec::Vec::new();","highlight_start":6,"highlight_end":17}],"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":"src/main.rs","byte_start":758,"byte_end":769,"line_start":20,"line_end":20,"column_start":6,"column_end":17,"is_primary":true,"text":[{"text":"\tlet mut tempVec: std::vec::Vec<config::Value> = std::vec::Vec::new();","highlight_start":6,"highlight_end":17}],"label":null,"suggested_replacement":"_tempVec","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused variable: `tempVec`\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:20: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;12m20\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m let mut tempVec: std::vec::Vec<config::Value> = std::vec::Vec::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[33m^^^^^^^^^^^\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33mhelp: if this is intentional, prefix it with an underscore: `_tempVec`\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":"unused variable: `e`","code":{"code":"unused_variables","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":1021,"byte_end":1022,"line_start":29,"line_end":29,"column_start":9,"column_end":10,"is_primary":true,"text":[{"text":"\t\t\t\tErr(e) =>","highlight_start":9,"highlight_end":10}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"if this is intentional, prefix it with an underscore","code":null,"level":"help","spans":[{"file_name":"src/main.rs","byte_start":1021,"byte_end":1022,"line_start":29,"line_end":29,"column_start":9,"column_end":10,"is_primary":true,"text":[{"text":"\t\t\t\tErr(e) =>","highlight_start":9,"highlight_end":10}],"label":null,"suggested_replacement":"_e","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused variable: `e`\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:29: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;12m29\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m Err(e) =>\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: `_e`\u001b[0m\n\n"}
{"message":"unused variable: `v`","code":{"code":"unused_variables","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":1336,"byte_end":1337,"line_start":42,"line_end":42,"column_start":8,"column_end":9,"is_primary":true,"text":[{"text":"\t\t\t\tOk(v) =>","highlight_start":8,"highlight_end":9}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"if this is intentional, prefix it with an underscore","code":null,"level":"help","spans":[{"file_name":"src/main.rs","byte_start":1336,"byte_end":1337,"line_start":42,"line_end":42,"column_start":8,"column_end":9,"is_primary":true,"text":[{"text":"\t\t\t\tOk(v) =>","highlight_start":8,"highlight_end":9}],"label":null,"suggested_replacement":"_v","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused variable: `v`\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:42:8\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;12m42\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m Ok(v) =>\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: `_v`\u001b[0m\n\n"}
{"message":"variable does not need to be mutable","code":{"code":"unused_mut","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":559,"byte_end":573,"line_start":17,"line_end":17,"column_start":6,"column_end":20,"is_primary":true,"text":[{"text":"\tlet mut table_name = mcu_lookup_table.get_str(\"mcu.samd21j18a\").unwrap();","highlight_start":6,"highlight_end":20}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(unused_mut)]` on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"remove this `mut`","code":null,"level":"help","spans":[{"file_name":"src/main.rs","byte_start":559,"byte_end":563,"line_start":17,"line_end":17,"column_start":6,"column_end":10,"is_primary":true,"text":[{"text":"\tlet mut table_name = mcu_lookup_table.get_str(\"mcu.samd21j18a\").unwrap();","highlight_start":6,"highlight_end":10}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: variable does not need to be mutable\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:17: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;12m17\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m let mut table_name = mcu_lookup_table.get_str(\"mcu.samd21j18a\").unwrap();\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;12m----\u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^^^^\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;12m|\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;12mhelp: remove this `mut`\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_mut)]` on by default\u001b[0m\n\n"}
{"message":"variable does not need to be mutable","code":{"code":"unused_mut","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":758,"byte_end":769,"line_start":20,"line_end":20,"column_start":6,"column_end":17,"is_primary":true,"text":[{"text":"\tlet mut tempVec: std::vec::Vec<config::Value> = std::vec::Vec::new();","highlight_start":6,"highlight_end":17}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"remove this `mut`","code":null,"level":"help","spans":[{"file_name":"src/main.rs","byte_start":758,"byte_end":762,"line_start":20,"line_end":20,"column_start":6,"column_end":10,"is_primary":true,"text":[{"text":"\tlet mut tempVec: std::vec::Vec<config::Value> = std::vec::Vec::new();","highlight_start":6,"highlight_end":10}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: variable does not need to be mutable\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:20: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;12m20\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m let mut tempVec: std::vec::Vec<config::Value> = std::vec::Vec::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;12m----\u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^\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;12m|\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;12mhelp: remove this `mut`\u001b[0m\n\n"}
{"message":"variable does not need to be mutable","code":{"code":"unused_mut","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":870,"byte_end":886,"line_start":24,"line_end":24,"column_start":7,"column_end":23,"is_primary":true,"text":[{"text":"\t\tlet mut active_table = make_manifest.get_table(&table_head).unwrap();","highlight_start":7,"highlight_end":23}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"remove this `mut`","code":null,"level":"help","spans":[{"file_name":"src/main.rs","byte_start":870,"byte_end":874,"line_start":24,"line_end":24,"column_start":7,"column_end":11,"is_primary":true,"text":[{"text":"\t\tlet mut active_table = make_manifest.get_table(&table_head).unwrap();","highlight_start":7,"highlight_end":11}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: variable does not need to be mutable\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:24:7\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;12m24\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m let mut active_table = make_manifest.get_table(&table_head).unwrap();\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;12m----\u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^^^^^^\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;12m|\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;12mhelp: remove this `mut`\u001b[0m\n\n"}
{"message":"variable `tempVec` should have a snake case name","code":{"code":"non_snake_case","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":762,"byte_end":769,"line_start":20,"line_end":20,"column_start":10,"column_end":17,"is_primary":true,"text":[{"text":"\tlet mut tempVec: std::vec::Vec<config::Value> = std::vec::Vec::new();","highlight_start":10,"highlight_end":17}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(non_snake_case)]` on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"convert the identifier to snake case","code":null,"level":"help","spans":[{"file_name":"src/main.rs","byte_start":762,"byte_end":769,"line_start":20,"line_end":20,"column_start":10,"column_end":17,"is_primary":true,"text":[{"text":"\tlet mut tempVec: std::vec::Vec<config::Value> = std::vec::Vec::new();","highlight_start":10,"highlight_end":17}],"label":null,"suggested_replacement":"temp_vec","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: variable `tempVec` should have a snake case name\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:20:10\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;12m20\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m let mut tempVec: std::vec::Vec<config::Value> = std::vec::Vec::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[33m^^^^^^^\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33mhelp: convert the identifier to snake case: `temp_vec`\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_snake_case)]` on by default\u001b[0m\n\n"}
{"message":"12 warnings emitted","code":null,"level":"warning","spans":[],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: 12 warnings emitted\u001b[0m\n\n"}

Loading…
Cancel
Save