summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlittleblack111 <littleblack11111@gmail.com>2025-10-24 13:36:24 +0800
committerlittleblack111 <littleblack11111@gmail.com>2025-10-24 13:36:24 +0800
commit5bece4655dc21426e18457c2bf9799ab8994f0ce (patch)
treec1015e2e40712a92ade8815f4b213fd88ef7c6e0
parentce9a33fe15654828b4e385ec6b9d827f46285559 (diff)
refactor: seperate cli and gui biniced
-rw-r--r--Cargo.toml8
-rw-r--r--src/cli.rs (renamed from src/ui.rs)35
-rw-r--r--src/daemon.rs18
-rw-r--r--src/main.rs44
4 files changed, 60 insertions, 45 deletions
diff --git a/Cargo.toml b/Cargo.toml
index 4c6fd2b..ff040bb 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -13,3 +13,11 @@ futures = "0.3.31"
rand = "0.9.2"
sha2 = "0.10.9"
bincode = "2.0.1"
+
+[[bin]]
+name = "bitcoin-cli"
+path = "src/cli.rs"
+
+[[bin]]
+name = "bitcoin-gui"
+path = "src/gui.rs"
diff --git a/src/ui.rs b/src/cli.rs
index 446fdb6..f171e5e 100644
--- a/src/ui.rs
+++ b/src/cli.rs
@@ -1,4 +1,8 @@
-use std::sync::{Arc, Weak};
+use crate::daemon::init;
+use std::{
+ io,
+ sync::{Arc, Weak},
+};
use bitcoin::{
client::Client,
@@ -7,6 +11,8 @@ use bitcoin::{
};
use tokio::sync::Mutex;
+pub mod daemon;
+
pub struct Ui {
network: Weak<Mutex<Network>>,
me: Client,
@@ -97,3 +103,30 @@ impl Ui {
None
}
}
+
+#[tokio::main]
+async fn main() {
+ let network = init().await;
+
+ let mut ui = Ui::new(
+ Arc::downgrade(&network),
+ *network
+ .lock()
+ .await
+ .get_me(),
+ );
+
+ loop {
+ let mut cmd = String::new();
+ io::stdin()
+ .read_line(&mut cmd)
+ .unwrap();
+
+ if let Some(req) = ui
+ .cmd(&cmd)
+ .await
+ {
+ Network::broadcast(network.clone(), req).await;
+ }
+ }
+}
diff --git a/src/daemon.rs b/src/daemon.rs
new file mode 100644
index 0000000..156e283
--- /dev/null
+++ b/src/daemon.rs
@@ -0,0 +1,18 @@
+use std::sync::Arc;
+
+use bitcoin::{
+ blocks::BlockChain,
+ network::{Network, Request},
+};
+use tokio::sync::Mutex;
+
+pub async fn init() -> Arc<Mutex<Network>> {
+ let bc = Arc::new(Mutex::new(BlockChain::default()));
+ let network = Network::new(bc).await;
+
+ Network::start(network.clone());
+
+ Network::broadcast(network.clone(), Request::Ibd(None)).await;
+
+ network
+}
diff --git a/src/main.rs b/src/main.rs
deleted file mode 100644
index 8f8ddf2..0000000
--- a/src/main.rs
+++ /dev/null
@@ -1,44 +0,0 @@
-use std::{io, sync::Arc};
-
-use bitcoin::{
- blocks::BlockChain,
- network::{Network, Request},
-};
-use tokio::sync::Mutex;
-
-use crate::ui::Ui;
-
-pub mod ui;
-
-#[tokio::main]
-async fn main() {
- let bc = Arc::new(Mutex::new(BlockChain::default()));
- let network = Network::new(bc).await;
-
- Network::start(network.clone());
-
- Network::broadcast(network.clone(), Request::Ibd(None)).await;
-
- let me = {
- let net = network
- .lock()
- .await;
- *net.get_me()
- };
-
- let mut ui = Ui::new(Arc::downgrade(&network), me);
-
- loop {
- let mut cmd = String::new();
- io::stdin()
- .read_line(&mut cmd)
- .unwrap();
-
- if let Some(req) = ui
- .cmd(&cmd)
- .await
- {
- Network::broadcast(network.clone(), req).await;
- }
- }
-}