From 26f38bab5b6ee040f1f91016d78a72e8118d7727 Mon Sep 17 00:00:00 2001 From: Sergio Gasquez Date: Sun, 18 Sep 2022 08:02:06 +0000 Subject: [PATCH] Add chip.rs --- Cargo.lock | 898 +---------------------------------------------- Cargo.toml | 3 +- src/chip.rs | 31 ++ src/main.rs | 19 +- src/toolchain.rs | 42 +-- src/utils.rs | 18 +- 6 files changed, 66 insertions(+), 945 deletions(-) create mode 100644 src/chip.rs diff --git a/Cargo.lock b/Cargo.lock index dc20756..334202a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,41 +2,6 @@ # It is not intended for manual editing. version = 3 -[[package]] -name = "CoreFoundation-sys" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0e9889e6db118d49d88d84728d0e964d973a5680befb5f85f55141beea5c20b" -dependencies = [ - "libc", - "mach 0.1.2", -] - -[[package]] -name = "IOKit-sys" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99696c398cbaf669d2368076bdb3d627fb0ce51a26899d7c61228c5c0af3bf4a" -dependencies = [ - "CoreFoundation-sys", - "libc", - "mach 0.1.2", -] - -[[package]] -name = "addr2line" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9ecd88a8c8378ca913a680cd98f0f13ac67383d35993f86c90a70e3f137816b" -dependencies = [ - "cpp_demangle", - "fallible-iterator", - "gimli", - "object 0.27.1", - "rustc-demangle", - "smallvec 1.9.0", -] - [[package]] name = "adler" version = "1.0.2" @@ -88,15 +53,6 @@ version = "1.0.65" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "98161a4e3e2184da77bb14f02184cdd111e83bbbcc9979dfee3c44b9a85f5602" -[[package]] -name = "array-init" -version = "0.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23589ecb866b460d3a0f1278834750268c607e8e28a1b982c907219f3178cd72" -dependencies = [ - "nodrop", -] - [[package]] name = "atty" version = "0.2.14" @@ -114,21 +70,6 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" -[[package]] -name = "backtrace" -version = "0.3.66" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cab84319d616cfb654d03394f38ab7e6f0919e181b1b57e1fd15e7fb4077d9a7" -dependencies = [ - "addr2line", - "cc", - "cfg-if 1.0.0", - "libc", - "miniz_oxide", - "object 0.29.0", - "rustc-demangle", -] - [[package]] name = "base64" version = "0.13.0" @@ -141,28 +82,6 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a32fd6af2b5827bce66c29053ba0e7c42b9dcab01835835058558c10851a46b" -[[package]] -name = "binread" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16598dfc8e6578e9b597d9910ba2e73618385dc9f4b1d43dd92c349d6be6418f" -dependencies = [ - "binread_derive", - "rustversion", -] - -[[package]] -name = "binread_derive" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d9672209df1714ee804b1f4d4f68c8eb2a90b1f7a07acf472f88ce198ef1fed" -dependencies = [ - "either", - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "bitflags" version = "1.3.2" @@ -178,44 +97,12 @@ dependencies = [ "generic-array", ] -[[package]] -name = "bstr" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3569f383e8f1598449f1a423e72e99569137b47740b1da11ef19af3d5c3223" -dependencies = [ - "lazy_static", - "memchr", - "regex-automata", - "serde", -] - [[package]] name = "bumpalo" version = "3.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c1ad822118d20d2c234f427000d5acc36eabe1e29a348c89b63dd60b13f28e5d" -[[package]] -name = "bytemuck" -version = "1.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f5715e491b5a1598fc2bef5a606847b5dc1d48ea625bd3c02c00de8285591da" -dependencies = [ - "bytemuck_derive", -] - -[[package]] -name = "bytemuck_derive" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9e1f5fa78f69496407a27ae9ed989e3c3b072310286f5ef385525e4cbc24a9" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "byteorder" version = "1.4.3" @@ -292,12 +179,6 @@ dependencies = [ "winapi 0.3.9", ] -[[package]] -name = "chunked_transfer" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fff857943da45f546682664a79488be82e69e43c1a7a2307679ab9afb3a66d2e" - [[package]] name = "cipher" version = "0.3.0" @@ -411,18 +292,6 @@ dependencies = [ "syn", ] -[[package]] -name = "comfy-table" -version = "6.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85914173c2f558d61613bfbbf1911f14e630895087a7ed2fafc0f5319e1536e7" -dependencies = [ - "crossterm 0.25.0", - "strum", - "strum_macros", - "unicode-width", -] - [[package]] name = "console" version = "0.15.1" @@ -459,15 +328,6 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" -[[package]] -name = "cpp_demangle" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eeaa953eaad386a53111e47172c2fedba671e5684c8dd601a5f474f4f118710f" -dependencies = [ - "cfg-if 1.0.0", -] - [[package]] name = "cpufeatures" version = "0.2.5" @@ -496,47 +356,6 @@ dependencies = [ "once_cell", ] -[[package]] -name = "crossterm" -version = "0.23.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2102ea4f781910f8a5b98dd061f4c2023f479ce7bb1236330099ceb5a93cf17" -dependencies = [ - "bitflags", - "crossterm_winapi", - "libc", - "mio 0.8.4", - "parking_lot", - "signal-hook", - "signal-hook-mio", - "winapi 0.3.9", -] - -[[package]] -name = "crossterm" -version = "0.25.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e64e6c0fbe2c17357405f7c758c1ef960fce08bdfb2c03d88d2a18d7e09c4b67" -dependencies = [ - "bitflags", - "crossterm_winapi", - "libc", - "mio 0.8.4", - "parking_lot", - "signal-hook", - "signal-hook-mio", - "winapi 0.3.9", -] - -[[package]] -name = "crossterm_winapi" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ae1b35a484aa10e07fe0638d02301c5ad24de82d310ccbd2f3693da5f09bf1c" -dependencies = [ - "winapi 0.3.9", -] - [[package]] name = "crypto-common" version = "0.1.6" @@ -547,39 +366,6 @@ dependencies = [ "typenum", ] -[[package]] -name = "csv" -version = "1.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22813a6dc45b335f9bade10bf7271dc477e81113e89eb251a0bc2a8a81c536e1" -dependencies = [ - "bstr", - "csv-core", - "itoa 0.4.8", - "ryu", - "serde", -] - -[[package]] -name = "csv-core" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b2466559f260f48ad25fe6317b3c8dac77b5bdb5763ac7d9d6103530663bc90" -dependencies = [ - "memchr", -] - -[[package]] -name = "dialoguer" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a92e7e37ecef6857fdc0c0c5d42fd5b0938e46590c2183cc92dd310a6d078eb1" -dependencies = [ - "console", - "tempfile", - "zeroize", -] - [[package]] name = "digest" version = "0.10.5" @@ -591,25 +377,6 @@ dependencies = [ "subtle", ] -[[package]] -name = "directories" -version = "4.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f51c5d4ddabd36886dd3e1438cb358cdcb0d7c499cb99cb4ac2e38e18b5cb210" -dependencies = [ - "dirs-sys", -] - -[[package]] -name = "directories-next" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "339ee130d97a610ea5a5872d2bbb130fdf68884ff09d3028b81bec8a1ac23bbc" -dependencies = [ - "cfg-if 1.0.0", - "dirs-sys-next", -] - [[package]] name = "dirs" version = "4.0.0" @@ -630,23 +397,6 @@ dependencies = [ "winapi 0.3.9", ] -[[package]] -name = "dirs-sys-next" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" -dependencies = [ - "libc", - "redox_users", - "winapi 0.3.9", -] - -[[package]] -name = "either" -version = "1.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797" - [[package]] name = "embuild" version = "0.30.3" @@ -710,63 +460,6 @@ dependencies = [ "libc", ] -[[package]] -name = "espflash" -version = "1.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7353f886e9b14407c37a0ef89657d7ff88ecf7dcaf97074301777c148208014d" -dependencies = [ - "base64", - "binread", - "bytemuck", - "clap 3.2.22", - "comfy-table", - "crossterm 0.25.0", - "csv", - "dialoguer", - "directories-next", - "espmonitor", - "flate2", - "indicatif", - "log", - "maplit", - "md5", - "miette", - "parse_int", - "regex", - "serde", - "serde-hex", - "serde_json", - "serde_plain", - "serialport", - "sha2", - "slip-codec", - "strum", - "strum_macros", - "thiserror", - "toml", - "tracing-subscriber", - "update-informer", - "xmas-elf", -] - -[[package]] -name = "espmonitor" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02d8108f9eddda1613b8c558a3bf0a363187e743f9b4825613dd924b9f422e6d" -dependencies = [ - "addr2line", - "clap 3.2.22", - "crossterm 0.23.2", - "gimli", - "lazy_static", - "nix", - "object 0.27.1", - "regex", - "serial", -] - [[package]] name = "espup" version = "0.1.0" @@ -779,7 +472,6 @@ dependencies = [ "dirs", "embuild", "env_logger", - "espflash", "flate2", "git2", "guess_host_triple", @@ -788,6 +480,8 @@ dependencies = [ "md5", "num_cpus", "reqwest", + "serde", + "strum", "tar", "tempfile", "tokio 1.21.1", @@ -800,12 +494,6 @@ dependencies = [ "zip", ] -[[package]] -name = "fallible-iterator" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" - [[package]] name = "fastrand" version = "1.8.0" @@ -993,17 +681,6 @@ dependencies = [ "wasi 0.11.0+wasi-snapshot-preview1", ] -[[package]] -name = "gimli" -version = "0.26.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22030e2c5a68ec659fde1e949a745124b48e6fa8b045b7ed5bd1fe4ccc5c4e5d" -dependencies = [ - "fallible-iterator", - "indexmap", - "stable_deref_trait", -] - [[package]] name = "git2" version = "0.15.0" @@ -1191,17 +868,6 @@ dependencies = [ "hashbrown", ] -[[package]] -name = "indicatif" -version = "0.17.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfddc9561e8baf264e0e45e197fd7696320026eb10a8180340debc27b18f535b" -dependencies = [ - "console", - "number_prefix", - "unicode-width", -] - [[package]] name = "instant" version = "0.1.12" @@ -1211,15 +877,6 @@ dependencies = [ "cfg-if 1.0.0", ] -[[package]] -name = "ioctl-rs" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7970510895cee30b3e9128319f2cefd4bde883a39f38baa279567ba3a7eb97d" -dependencies = [ - "libc", -] - [[package]] name = "iovec" version = "0.1.4" @@ -1235,12 +892,6 @@ version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "879d54834c8c76457ef4293a689b2a8c59b076067ad77b15efafbb05f92a592b" -[[package]] -name = "is_ci" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "616cde7c720bb2bb5824a224687d8f77bfd38922027f01d825cd7453be5099fb" - [[package]] name = "itoa" version = "0.4.8" @@ -1327,26 +978,6 @@ dependencies = [ "vcpkg", ] -[[package]] -name = "libudev" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78b324152da65df7bb95acfcaab55e3097ceaab02fb19b228a9eb74d55f135e0" -dependencies = [ - "libc", - "libudev-sys", -] - -[[package]] -name = "libudev-sys" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c8469b4a23b962c1396b9b451dda50ef5b283e8dd309d69033475fa9b334324" -dependencies = [ - "libc", - "pkg-config", -] - [[package]] name = "libz-sys" version = "1.1.8" @@ -1389,45 +1020,6 @@ dependencies = [ "pkg-config", ] -[[package]] -name = "mach" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fd13ee2dd61cc82833ba05ade5a30bb3d63f7ced605ef827063c63078302de9" -dependencies = [ - "libc", -] - -[[package]] -name = "mach" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b823e83b2affd8f40a9ee8c29dbc56404c1e34cd2710921f2801e2cf29527afa" -dependencies = [ - "libc", -] - -[[package]] -name = "maplit" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d" - -[[package]] -name = "matchers" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" -dependencies = [ - "regex-automata", -] - -[[package]] -name = "maybe-uninit" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" - [[package]] name = "md5" version = "0.7.0" @@ -1440,46 +1032,6 @@ version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" -[[package]] -name = "memoffset" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" -dependencies = [ - "autocfg", -] - -[[package]] -name = "miette" -version = "5.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a28d6092d7e94a90bb9ea8e6c26c99d5d112d49dda2afdb4f7ea8cf09e1a5a6d" -dependencies = [ - "atty", - "backtrace", - "miette-derive", - "once_cell", - "owo-colors", - "supports-color", - "supports-hyperlinks", - "supports-unicode", - "terminal_size", - "textwrap 0.15.1", - "thiserror", - "unicode-width", -] - -[[package]] -name = "miette-derive" -version = "5.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f2485ed7d1fe80704928e3eb86387439609bd0c6bb96db8208daa364cfd1e09" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "mime" version = "0.3.16" @@ -1577,24 +1129,6 @@ dependencies = [ "winapi 0.3.9", ] -[[package]] -name = "nix" -version = "0.24.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "195cdbc1741b8134346d515b3a56a1c94b0912758009cfd53f99ea0f57b065fc" -dependencies = [ - "bitflags", - "cfg-if 1.0.0", - "libc", - "memoffset", -] - -[[package]] -name = "nodrop" -version = "0.1.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" - [[package]] name = "num-integer" version = "0.1.45" @@ -1633,31 +1167,6 @@ dependencies = [ "libc", ] -[[package]] -name = "number_prefix" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" - -[[package]] -name = "object" -version = "0.27.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67ac1d3f9a1d3616fd9a60c8d74296f22406a238b6a72f5cc1e6f314df4ffbf9" -dependencies = [ - "flate2", - "memchr", -] - -[[package]] -name = "object" -version = "0.29.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21158b2c33aa6d4561f1c0a6ea283ca92bc54802a93b263e910746d679a7eb53" -dependencies = [ - "memchr", -] - [[package]] name = "once_cell" version = "1.14.0" @@ -1721,12 +1230,6 @@ version = "6.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ff7415e9ae3fff1225851df9e0d9e4e5479f947619774677a63572e55e80eff" -[[package]] -name = "owo-colors" -version = "3.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1b04fb49957986fdce4d6ee7a65027d55d4b6d2265e5848bbb507b58ccfdb6f" - [[package]] name = "parking_lot" version = "0.12.1" @@ -1746,19 +1249,10 @@ dependencies = [ "cfg-if 1.0.0", "libc", "redox_syscall", - "smallvec 1.9.0", + "smallvec", "windows-sys", ] -[[package]] -name = "parse_int" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d695b79916a2c08bcff7be7647ab60d1402885265005a6658ffe6d763553c5a" -dependencies = [ - "num-traits", -] - [[package]] name = "password-hash" version = "0.3.2" @@ -1911,15 +1405,6 @@ dependencies = [ "regex-syntax", ] -[[package]] -name = "regex-automata" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" -dependencies = [ - "regex-syntax", -] - [[package]] name = "regex-syntax" version = "0.6.27" @@ -1970,39 +1455,6 @@ dependencies = [ "winreg 0.7.0", ] -[[package]] -name = "ring" -version = "0.16.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" -dependencies = [ - "cc", - "libc", - "once_cell", - "spin", - "untrusted", - "web-sys", - "winapi 0.3.9", -] - -[[package]] -name = "rustc-demangle" -version = "0.1.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ef03e0a2b150c7a90d01faf6254c9c48a41e95fb2a8c2ac1c6f0d2b9aefc342" - -[[package]] -name = "rustls" -version = "0.20.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aab8ee6c7097ed6057f43c187a62418d0c05a4bd5f18b3571db50ee0f9ce033" -dependencies = [ - "log", - "ring", - "sct", - "webpki", -] - [[package]] name = "rustversion" version = "1.0.9" @@ -2040,16 +1492,6 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" -[[package]] -name = "sct" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" -dependencies = [ - "ring", - "untrusted", -] - [[package]] name = "security-framework" version = "2.7.0" @@ -2073,12 +1515,6 @@ dependencies = [ "libc", ] -[[package]] -name = "semver" -version = "1.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e25dfac463d778e353db5be2449d1cce89bd6fd23c9f1ea21310ce6e5a1b29c4" - [[package]] name = "serde" version = "1.0.144" @@ -2088,17 +1524,6 @@ dependencies = [ "serde_derive", ] -[[package]] -name = "serde-hex" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca37e3e4d1b39afd7ff11ee4e947efae85adfddf4841787bfa47c470e96dc26d" -dependencies = [ - "array-init", - "serde", - "smallvec 0.6.14", -] - [[package]] name = "serde_derive" version = "1.0.144" @@ -2121,15 +1546,6 @@ dependencies = [ "serde", ] -[[package]] -name = "serde_plain" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95455e7e29fada2052e72170af226fbe368a4ca33dee847875325d9fdb133858" -dependencies = [ - "serde", -] - [[package]] name = "serde_urlencoded" version = "0.7.1" @@ -2142,65 +1558,6 @@ dependencies = [ "serde", ] -[[package]] -name = "serial" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1237a96570fc377c13baa1b88c7589ab66edced652e43ffb17088f003db3e86" -dependencies = [ - "serial-core", - "serial-unix", - "serial-windows", -] - -[[package]] -name = "serial-core" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f46209b345401737ae2125fe5b19a77acce90cd53e1658cda928e4fe9a64581" -dependencies = [ - "libc", -] - -[[package]] -name = "serial-unix" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f03fbca4c9d866e24a459cbca71283f545a37f8e3e002ad8c70593871453cab7" -dependencies = [ - "ioctl-rs", - "libc", - "serial-core", - "termios", -] - -[[package]] -name = "serial-windows" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15c6d3b776267a75d31bbdfd5d36c0ca051251caafc285827052bc53bcdc8162" -dependencies = [ - "libc", - "serial-core", -] - -[[package]] -name = "serialport" -version = "4.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aab92efb5cf60ad310548bc3f16fa6b0d950019cb7ed8ff41968c3d03721cf12" -dependencies = [ - "CoreFoundation-sys", - "IOKit-sys", - "bitflags", - "cfg-if 1.0.0", - "libudev", - "mach 0.3.2", - "nix", - "regex", - "winapi 0.3.9", -] - [[package]] name = "sha1" version = "0.10.5" @@ -2223,42 +1580,12 @@ dependencies = [ "digest", ] -[[package]] -name = "sharded-slab" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" -dependencies = [ - "lazy_static", -] - [[package]] name = "shlex" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3" -[[package]] -name = "signal-hook" -version = "0.3.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a253b5e89e2698464fc26b545c9edceb338e18a89effeeecfea192c3025be29d" -dependencies = [ - "libc", - "signal-hook-registry", -] - -[[package]] -name = "signal-hook-mio" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29ad2e15f37ec9a6cc544097b78a1ec90001e9f71b81338ca39f430adaca99af" -dependencies = [ - "libc", - "mio 0.8.4", - "signal-hook", -] - [[package]] name = "signal-hook-registry" version = "1.4.0" @@ -2277,33 +1604,12 @@ dependencies = [ "autocfg", ] -[[package]] -name = "slip-codec" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16f79a64a7c3cf9c25da0e0ef422db7ba3694b58b2e218692cb9f5c47fbaaff4" - -[[package]] -name = "smallvec" -version = "0.6.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97fcaeba89edba30f044a10c6a3cc39df9c3f17d7cd829dd1446cab35f890e0" -dependencies = [ - "maybe-uninit", -] - [[package]] name = "smallvec" version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2fd0db749597d91ff862fd1d55ea87f7855a744a8425a64695b6fca237d1dad1" -[[package]] -name = "smawk" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f67ad224767faa3c7d8b6d91985b78e70a1324408abcb1cfcc2be4c06bc06043" - [[package]] name = "socket2" version = "0.3.19" @@ -2325,18 +1631,6 @@ dependencies = [ "winapi 0.3.9", ] -[[package]] -name = "spin" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" - -[[package]] -name = "stable_deref_trait" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" - [[package]] name = "strsim" version = "0.8.0" @@ -2354,6 +1648,9 @@ name = "strum" version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" +dependencies = [ + "strum_macros", +] [[package]] name = "strum_macros" @@ -2374,34 +1671,6 @@ version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" -[[package]] -name = "supports-color" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4872ced36b91d47bae8a214a683fe54e7078875b399dfa251df346c9b547d1f9" -dependencies = [ - "atty", - "is_ci", -] - -[[package]] -name = "supports-hyperlinks" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "590b34f7c5f01ecc9d78dba4b3f445f31df750a67621cf31626f3b7441ce6406" -dependencies = [ - "atty", -] - -[[package]] -name = "supports-unicode" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8b945e45b417b125a8ec51f1b7df2f8df7920367700d1f98aedd21e5735f8b2" -dependencies = [ - "atty", -] - [[package]] name = "syn" version = "1.0.99" @@ -2457,15 +1726,6 @@ dependencies = [ "winapi 0.3.9", ] -[[package]] -name = "termios" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5d9cf598a6d7ce700a4e6a9199da127e6819a61e64b68609683cc9a01b5683a" -dependencies = [ - "libc", -] - [[package]] name = "textwrap" version = "0.11.0" @@ -2480,11 +1740,6 @@ name = "textwrap" version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "949517c0cf1bf4ee812e2e07e08ab448e3ae0d23472aee8a06c985f0c8815b16" -dependencies = [ - "smawk", - "unicode-linebreak", - "unicode-width", -] [[package]] name = "thiserror" @@ -2506,15 +1761,6 @@ dependencies = [ "syn", ] -[[package]] -name = "thread_local" -version = "1.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5516c27b78311c50bf42c071425c560ac799b11c30b31f87e3081965fe5e0180" -dependencies = [ - "once_cell", -] - [[package]] name = "time" version = "0.1.44" @@ -2633,15 +1879,6 @@ dependencies = [ "tokio 0.2.25", ] -[[package]] -name = "toml" -version = "0.5.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7" -dependencies = [ - "serde", -] - [[package]] name = "tower-service" version = "0.3.2" @@ -2667,7 +1904,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5aeea4303076558a00714b823f9ad67d58a3bbda1df83d8827d21193156e22f7" dependencies = [ "once_cell", - "valuable", ] [[package]] @@ -2680,35 +1916,6 @@ dependencies = [ "tracing", ] -[[package]] -name = "tracing-log" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922" -dependencies = [ - "lazy_static", - "log", - "tracing-core", -] - -[[package]] -name = "tracing-subscriber" -version = "0.3.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60db860322da191b40952ad9affe65ea23e7dd6a5c442c2c42865810c6ab8e6b" -dependencies = [ - "ansi_term", - "matchers", - "once_cell", - "regex", - "sharded-slab", - "smallvec 1.9.0", - "thread_local", - "tracing", - "tracing-core", - "tracing-log", -] - [[package]] name = "try-lock" version = "0.2.3" @@ -2742,15 +1949,6 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dcc811dc4066ac62f84f11307873c4850cb653bfa9b1719cee2bd2204a4bc5dd" -[[package]] -name = "unicode-linebreak" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a52dcaab0c48d931f7cc8ef826fa51690a08e1ea55117ef26f89864f532383f" -dependencies = [ - "regex", -] - [[package]] name = "unicode-normalization" version = "0.1.22" @@ -2766,44 +1964,6 @@ version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" -[[package]] -name = "untrusted" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" - -[[package]] -name = "update-informer" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f154aee470c0882ea0f3b1cc2a46c5f4d24f282655f7b0cec065614fe24c447f" -dependencies = [ - "directories", - "semver", - "serde", - "serde_json", - "ureq", -] - -[[package]] -name = "ureq" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97acb4c28a254fd7a4aeec976c46a7fa404eac4d7c134b30c75144846d7cb8f" -dependencies = [ - "base64", - "chunked_transfer", - "flate2", - "log", - "once_cell", - "rustls", - "serde", - "serde_json", - "url", - "webpki", - "webpki-roots", -] - [[package]] name = "url" version = "2.3.1" @@ -2815,12 +1975,6 @@ dependencies = [ "percent-encoding", ] -[[package]] -name = "valuable" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" - [[package]] name = "vcpkg" version = "0.2.15" @@ -2950,25 +2104,6 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "webpki" -version = "0.22.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f095d78192e208183081cc07bc5515ef55216397af48b873e5edcd72637fa1bd" -dependencies = [ - "ring", - "untrusted", -] - -[[package]] -name = "webpki-roots" -version = "0.22.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1c760f0d366a6c24a02ed7816e23e691f5d92291f94d15e836006fd11b04daf" -dependencies = [ - "webpki", -] - [[package]] name = "widestring" version = "1.0.2" @@ -3114,15 +2249,6 @@ dependencies = [ "libc", ] -[[package]] -name = "xmas-elf" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d29b4d8e7beaceb4e77447ba941a7600d23d0319ab52da0461abea214832d5a" -dependencies = [ - "zero", -] - [[package]] name = "xz2" version = "0.1.7" @@ -3132,18 +2258,6 @@ dependencies = [ "lzma-sys", ] -[[package]] -name = "zero" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f1bc8a6b2005884962297587045002d8cfb8dcec9db332f4ca216ddc5de82c5" - -[[package]] -name = "zeroize" -version = "1.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c394b5bd0c6f669e7275d9c20aa90ae064cb22e75a1cad54e1b34088034b149f" - [[package]] name = "zip" version = "0.6.2" diff --git a/Cargo.toml b/Cargo.toml index 0be80b2..13293de 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -33,13 +33,14 @@ winapi = { version = "*", features = [ ] } zip = "*" xz2 = "0.1.6" -espflash = "1.6.0" console = "0.15.1" tempfile = "3.3.0" clap-verbosity-flag = "1.0.1" log = "0.4.17" env_logger = "0.9.0" embuild = "0.30.3" +strum = { version = "0.24", features = ["derive"] } +serde = { version = "1.0", features = ["derive"] } [target.'cfg(windows)'.dependencies] winreg = "0.10.1" diff --git a/src/chip.rs b/src/chip.rs new file mode 100644 index 0000000..3956f53 --- /dev/null +++ b/src/chip.rs @@ -0,0 +1,31 @@ +//! ESP32 chip variants support. + +use strum::{Display, EnumString}; + +#[derive(Clone, Copy, PartialEq, Eq, Debug, Display, EnumString)] +pub enum Chip { + /// Xtensa LX7 based dual core + #[strum(serialize = "esp32")] + ESP32 = 0, + /// Xtensa LX7 based single core + #[strum(serialize = "esp32s2")] + ESP32S2, + /// Xtensa LX7 based single core + #[strum(serialize = "esp32s3")] + ESP32S3, + /// RISC-V based single core + #[strum(serialize = "esp32c3")] + ESP32C3, +} + +impl Chip { + /// The name of the gcc toolchain. + pub fn gcc_toolchain(&self) -> &'static str { + match self { + Self::ESP32 => "xtensa-esp32-elf", + Self::ESP32S2 => "xtensa-esp32s2-elf", + Self::ESP32S3 => "xtensa-esp32s3-elf", + Self::ESP32C3 => "riscv32-esp-elf", + } + } +} diff --git a/src/main.rs b/src/main.rs index 9312d9d..01906a5 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,18 +1,19 @@ +use crate::chip::*; use crate::toolchain::*; use crate::utils::*; -use clap::Parser; -use espflash::Chip; -use std::fs::File; -use std::io::Write; -use std::path::{Path, PathBuf}; -mod emoji; -mod toolchain; -mod utils; use anyhow::Result; +use clap::Parser; use clap_verbosity_flag::{InfoLevel, Verbosity}; use embuild::cmd; use log::{info, warn}; +use std::fs::File; +use std::io::Write; +use std::path::{Path, PathBuf}; +mod chip; +mod emoji; +mod toolchain; +mod utils; #[derive(Parser)] struct Opts { #[clap(subcommand)] @@ -204,7 +205,7 @@ fn install(args: InstallOpts) -> Result<()> { let libclang_path = format!("{}/lib", get_tool_path("xtensa-esp32-elf-clang")); exports.push(format!("export LIBCLANG_PATH=\"{}\"", &libclang_path)); - if targets.contains(&Chip::Esp32c3) { + if targets.contains(&Chip::ESP32C3) { install_riscv_target(&args.nightly_version)?; } diff --git a/src/toolchain.rs b/src/toolchain.rs index 765c1c0..2675231 100644 --- a/src/toolchain.rs +++ b/src/toolchain.rs @@ -1,8 +1,8 @@ +use crate::chip::Chip; use crate::emoji; use crate::utils::*; use anyhow::{bail, Result}; use embuild::cmd; -use espflash::Chip; use log::{debug, info, warn}; use std::path::Path; use std::process::Stdio; @@ -125,39 +125,13 @@ pub fn install_extra_crate(crate_name: &str) -> Result<()> { pub fn install_gcc_targets(targets: Vec) -> Result> { let mut exports: Vec = Vec::new(); for target in targets { - match target { - Chip::Esp32 => { - install_gcc("xtensa-esp32-elf")?; - exports.push(format!( - "export PATH={}:$PATH", - get_tool_path("xtensa-esp32-elf/bin") - )); - } - Chip::Esp32s2 => { - install_gcc("xtensa-esp32s2-elf")?; - exports.push(format!( - "export PATH={}:$PATH", - get_tool_path("xtensa-esp32s2-elf/bin") - )); - } - Chip::Esp32s3 => { - install_gcc("xtensa-esp32s3-elf")?; - exports.push(format!( - "export PATH={}:$PATH", - get_tool_path("xtensa-esp32s3-elf/bin") - )); - } - Chip::Esp32c3 => { - install_gcc("riscv32-esp-elf")?; - exports.push(format!( - "export PATH={}:$PATH", - get_tool_path("riscv32-esp-elf/bin") - )); - } - _ => { - bail!("{} Unknown target: {:#?}", emoji::ERROR, target) - } - } + let gcc_target = target.gcc_toolchain(); + install_gcc(gcc_target)?; + #[cfg(unix)] + exports.push(format!( + "export PATH={}/bin:$PATH", + get_tool_path(gcc_target) + )); } Ok(exports) } diff --git a/src/utils.rs b/src/utils.rs index 64726c4..be09655 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -1,8 +1,8 @@ +use crate::chip::Chip; use crate::emoji; use crate::InstallOpts; use anyhow::{bail, Result}; use dirs::home_dir; -use espflash::Chip; use flate2::bufread::GzDecoder; use log::{debug, info}; use std::env; @@ -18,10 +18,10 @@ pub fn parse_targets(build_target: &str) -> Result, String> { debug!("{} Parsing targets: {}", emoji::DEBUG, build_target); let mut chips: Vec = Vec::new(); if build_target.contains("all") { - chips.push(Chip::Esp32); - chips.push(Chip::Esp32s2); - chips.push(Chip::Esp32s3); - chips.push(Chip::Esp32c3); + chips.push(Chip::ESP32); + chips.push(Chip::ESP32S2); + chips.push(Chip::ESP32S3); + chips.push(Chip::ESP32C3); return Ok(chips); } let targets: Vec<&str> = if build_target.contains(' ') || build_target.contains(',') { @@ -31,10 +31,10 @@ pub fn parse_targets(build_target: &str) -> Result, String> { }; for target in targets { match target { - "esp32" => chips.push(Chip::Esp32), - "esp32s2" => chips.push(Chip::Esp32s2), - "esp32s3" => chips.push(Chip::Esp32s3), - "esp32c3" => chips.push(Chip::Esp32c3), + "esp32" => chips.push(Chip::ESP32), + "esp32s2" => chips.push(Chip::ESP32S2), + "esp32s3" => chips.push(Chip::ESP32S3), + "esp32c3" => chips.push(Chip::ESP32C3), _ => { return Err(format!("Unknown target: {}", target)); }