From cc7e2196a0d9979a06b28ada3f7ec582a4e049d1 Mon Sep 17 00:00:00 2001
From: Matt Johnston <matt@ucc.asn.au>
Date: Sat, 20 May 2023 23:23:07 +0800
Subject: [PATCH] Update to use local fork of menu

---
 embassy/demos/common/Cargo.toml       |  3 ++-
 embassy/demos/common/src/demo_menu.rs | 12 ++++++------
 embassy/demos/common/src/lib.rs       |  1 +
 embassy/demos/common/src/menu.rs      | 10 +---------
 embassy/demos/picow/Cargo.lock        | 10 ++--------
 embassy/demos/picow/Cargo.toml        |  3 ++-
 embassy/demos/picow/src/main.rs       |  2 +-
 embassy/demos/std/Cargo.lock          |  8 --------
 embassy/demos/std/Cargo.toml          |  3 ++-
 embassy/demos/std/src/main.rs         |  2 +-
 10 files changed, 18 insertions(+), 36 deletions(-)

diff --git a/embassy/demos/common/Cargo.toml b/embassy/demos/common/Cargo.toml
index f17b586..15e3728 100644
--- a/embassy/demos/common/Cargo.toml
+++ b/embassy/demos/common/Cargo.toml
@@ -18,7 +18,8 @@ embassy-net-driver = { version = "0.1.0" }
 embassy-futures = { version = "0.1.0" }
 
 heapless = "0.7.15"
-menu = "0.3"
+# using local fork
+# menu = "0.3"
 embedded-io = { version = "0.4", features = ["async"] }
 
 defmt = { version = "0.3", optional = true }
diff --git a/embassy/demos/common/src/demo_menu.rs b/embassy/demos/common/src/demo_menu.rs
index 81c69c5..bde29d5 100644
--- a/embassy/demos/common/src/demo_menu.rs
+++ b/embassy/demos/common/src/demo_menu.rs
@@ -1,4 +1,4 @@
-use menu::*;
+use crate::menu::{self, *};
 pub use crate::server::BufOutput;
 use core::fmt::Write;
 
@@ -93,31 +93,31 @@ fn select_foo<'a>(_menu: &Menu<BufOutput>, item: &Item<BufOutput>, args: &[&str]
     writeln!(
         context,
         "a = {:?}",
-        ::menu::argument_finder(item, args, "a")
+        menu::argument_finder(item, args, "a")
     )
     .unwrap();
     writeln!(
         context,
         "b = {:?}",
-        ::menu::argument_finder(item, args, "b")
+        menu::argument_finder(item, args, "b")
     )
     .unwrap();
     writeln!(
         context,
         "verbose = {:?}",
-        ::menu::argument_finder(item, args, "verbose")
+        menu::argument_finder(item, args, "verbose")
     )
     .unwrap();
     writeln!(
         context,
         "level = {:?}",
-        ::menu::argument_finder(item, args, "level")
+        menu::argument_finder(item, args, "level")
     )
     .unwrap();
     writeln!(
         context,
         "no_such_arg = {:?}",
-        ::menu::argument_finder(item, args, "no_such_arg")
+        menu::argument_finder(item, args, "no_such_arg")
     )
     .unwrap();
 }
diff --git a/embassy/demos/common/src/lib.rs b/embassy/demos/common/src/lib.rs
index d30e7b1..426fd96 100644
--- a/embassy/demos/common/src/lib.rs
+++ b/embassy/demos/common/src/lib.rs
@@ -7,6 +7,7 @@
 mod config;
 mod server;
 
+pub mod menu;
 pub mod demo_menu;
 
 pub use server::{Shell, listener};
diff --git a/embassy/demos/common/src/menu.rs b/embassy/demos/common/src/menu.rs
index 4720d00..f4b85c0 100644
--- a/embassy/demos/common/src/menu.rs
+++ b/embassy/demos/common/src/menu.rs
@@ -287,14 +287,6 @@ where
             return;
         }
         let outcome = if input == 0x0D {
-            #[cfg(not(feature = "echo"))]
-            {
-                // Echo the command
-                write!(self.context, "\r").unwrap();
-                if let Ok(s) = core::str::from_utf8(&self.buffer[0..self.used]) {
-                    write!(self.context, "{}", s).unwrap();
-                }
-            }
             // Handle the command
             self.process_command();
             Outcome::CommandProcessed
@@ -309,7 +301,7 @@ where
             self.buffer[self.used] = input;
             self.used += 1;
 
-            #[cfg(feature = "echo")]
+            // #[cfg(feature = "echo")]
             {
                 // We have to do this song and dance because `self.prompt()` needs
                 // a mutable reference to self, and we can't have that while
diff --git a/embassy/demos/picow/Cargo.lock b/embassy/demos/picow/Cargo.lock
index ada8471..5c3578e 100644
--- a/embassy/demos/picow/Cargo.lock
+++ b/embassy/demos/picow/Cargo.lock
@@ -1160,12 +1160,6 @@ version = "2.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
 
-[[package]]
-name = "menu"
-version = "0.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b03d7f798bfe97329ad6df937951142eec93886b37d87010502dd25e8cc75fd5"
-
 [[package]]
 name = "nb"
 version = "0.1.3"
@@ -1750,7 +1744,7 @@ dependencies = [
  "embassy-sync 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "embedded-io 0.4.0",
  "heapless",
- "menu",
+ "log",
  "sunset",
  "sunset-embassy",
  "sunset-sshwire-derive",
@@ -1782,7 +1776,7 @@ dependencies = [
  "embedded-io 0.4.0",
  "getrandom",
  "heapless",
- "menu",
+ "log",
  "panic-probe",
  "pin-utils",
  "rand",
diff --git a/embassy/demos/picow/Cargo.toml b/embassy/demos/picow/Cargo.toml
index 5fbdf85..f70f973 100644
--- a/embassy/demos/picow/Cargo.toml
+++ b/embassy/demos/picow/Cargo.toml
@@ -45,7 +45,8 @@ heapless = "0.7.15"
 getrandom = { version = "0.2", default-features = false, features = ["custom"]}
 pin-utils = "0.1"
 
-menu = "0.3"
+# using local fork
+# menu = "0.3"
 
 caprand = { git = "https://github.com/mkj/caprand" }
 
diff --git a/embassy/demos/picow/src/main.rs b/embassy/demos/picow/src/main.rs
index 1997203..fb4b19f 100644
--- a/embassy/demos/picow/src/main.rs
+++ b/embassy/demos/picow/src/main.rs
@@ -27,7 +27,7 @@ use heapless::{String, Vec};
 
 use static_cell::StaticCell;
 
-use menu::Runner as MenuRunner;
+use demo_common::menu::Runner as MenuRunner;
 use embedded_io::asynch::Read;
 use embassy_sync::signal::Signal;
 use embassy_sync::blocking_mutex::raw::NoopRawMutex;
diff --git a/embassy/demos/std/Cargo.lock b/embassy/demos/std/Cargo.lock
index c1f95de..22fe1b2 100644
--- a/embassy/demos/std/Cargo.lock
+++ b/embassy/demos/std/Cargo.lock
@@ -730,12 +730,6 @@ version = "2.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
 
-[[package]]
-name = "menu"
-version = "0.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b03d7f798bfe97329ad6df937951142eec93886b37d87010502dd25e8cc75fd5"
-
 [[package]]
 name = "nb"
 version = "0.1.3"
@@ -1063,7 +1057,6 @@ dependencies = [
  "embedded-io",
  "heapless",
  "log",
- "menu",
  "sunset",
  "sunset-embassy",
  "sunset-sshwire-derive",
@@ -1087,7 +1080,6 @@ dependencies = [
  "heapless",
  "libc",
  "log",
- "menu",
  "rand",
  "sha2",
  "static_cell",
diff --git a/embassy/demos/std/Cargo.toml b/embassy/demos/std/Cargo.toml
index 9a51c31..266bcf9 100644
--- a/embassy/demos/std/Cargo.toml
+++ b/embassy/demos/std/Cargo.toml
@@ -27,7 +27,8 @@ heapless = "0.7.15"
 libc = "0.2.101"
 async-io = "1.6.0"
 
-menu = "0.3"
+# using local fork
+# menu = "0.3"
 
 sunset-embassy = { path = "../../" }
 sunset = { path = "../../.." }
diff --git a/embassy/demos/std/src/main.rs b/embassy/demos/std/src/main.rs
index 4cd28b4..3f0e2c6 100644
--- a/embassy/demos/std/src/main.rs
+++ b/embassy/demos/std/src/main.rs
@@ -14,7 +14,7 @@ use static_cell::StaticCell;
 use rand::rngs::OsRng;
 use rand::RngCore;
 
-use menu::Runner as MenuRunner;
+use demo_common::menu::Runner as MenuRunner;
 use embedded_io::asynch::Read;
 use embassy_sync::signal::Signal;
 use embassy_sync::blocking_mutex::raw::NoopRawMutex;
-- 
GitLab