Skip to content

Commit b96773e

Browse files
author
Eric Swanson
committed
refine, tests
1 parent 9298412 commit b96773e

File tree

13 files changed

+96
-48
lines changed

13 files changed

+96
-48
lines changed

.github/workflows/fmt.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ on:
44
push:
55
branches:
66
- main
7+
- ens/sdk-2108-local-network
78
pull_request:
89

910
jobs:

.github/workflows/lint.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ on:
44
push:
55
branches:
66
- main
7+
- ens/sdk-2108-local-network
78
pull_request:
89

910
jobs:

.github/workflows/test.yml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,17 @@ on:
44
push:
55
branches:
66
- main
7+
- ens/sdk-2108-local-network
78
pull_request:
89

10+
env:
11+
# When getting Rust dependencies, retry on network error:
12+
CARGO_NET_RETRY: 10
13+
# Use the local .curlrc
14+
CURL_HOME: .
15+
# Disable DFX telemetry
16+
DFX_TELEMETRY: 'off'
17+
918
jobs:
1019
test:
1120
name: ${{ matrix.test }} on ${{ matrix.os }}

Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

bin/icp-cli/Cargo.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,11 @@ name = "icp"
99
path = "src/main.rs"
1010

1111
[dependencies]
12-
clap = { version = "4.5.38", features = ["derive"] }
12+
clap = { version = "4.5.35", features = ["derive"] }
1313
directories = { workspace = true }
1414
icp-network = { path = "../../lib/icp-network" }
1515
icp-support = { path = "../../lib/icp-support" }
16+
snafu = { workspace = true }
1617
tokio = { workspace = true }
1718

1819
[dev-dependencies]

bin/icp-cli/src/commands.rs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1+
use crate::commands::network::NetworkCommandError;
12
use clap::{Parser, Subcommand};
3+
use snafu::Snafu;
24

35
mod network;
46

@@ -13,8 +15,15 @@ pub enum Subcmd {
1315
Network(network::Cmd),
1416
}
1517

16-
pub async fn exec(cli: Cli) {
18+
#[derive(Debug, Snafu)]
19+
pub enum DispatchError {
20+
#[snafu(transparent)]
21+
Network { source: NetworkCommandError },
22+
}
23+
24+
pub async fn dispatch(cli: Cli) -> Result<(), DispatchError> {
1725
match cli.subcommand {
18-
Subcmd::Network(opts) => network::exec(opts).await,
26+
Subcmd::Network(opts) => network::dispatch(opts).await?,
1927
}
28+
Ok(())
2029
}

bin/icp-cli/src/commands/network.rs

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
use crate::commands::{Cli, network};
1+
use crate::commands::network::run::RunNetworkError;
22
use clap::{Parser, Subcommand};
3+
use snafu::Snafu;
34

45
mod run;
56
mod start;
@@ -13,12 +14,16 @@ pub struct Cmd {
1314
#[derive(Subcommand, Debug)]
1415
pub enum Subcmd {
1516
Run(run::Cmd),
16-
Start(start::Cmd),
1717
}
1818

19-
pub async fn exec(cmd: Cmd) {
19+
#[derive(Debug, Snafu)]
20+
pub enum NetworkCommandError {
21+
#[snafu(transparent)]
22+
Run { source: RunNetworkError },
23+
}
24+
pub async fn dispatch(cmd: Cmd) -> Result<(), NetworkCommandError> {
2025
match cmd.subcmd {
21-
Subcmd::Run(cmd) => run::exec(cmd).await,
22-
Subcmd::Start(cmd) => todo!(), // start::exec(cmd).await,
26+
Subcmd::Run(cmd) => run::exec(cmd).await?,
2327
}
28+
Ok(())
2429
}
Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,38 @@
11
use crate::project::structure::ProjectStructure;
22
use clap::Parser;
33
use icp_network::structure::NetworkDirectoryStructure;
4-
use icp_network::{ManagedNetworkModel, run_local_network};
5-
use icp_support::fs::create_dir_all;
4+
use icp_network::{ManagedNetworkModel, StartLocalNetworkError, run_local_network};
5+
use icp_support::fs::{CreateDirAllError, create_dir_all};
6+
use snafu::Snafu;
67

78
#[derive(Parser, Debug)]
89
pub struct Cmd {}
910

10-
pub async fn exec(cmd: Cmd) {
11+
#[derive(Debug, Snafu)]
12+
pub enum RunNetworkError {
13+
#[snafu(display("Could not determine project structure"))]
14+
ProjectStructureNotFound,
15+
16+
#[snafu(transparent)]
17+
CreateDirFailed { source: CreateDirAllError },
18+
19+
#[snafu(transparent)]
20+
NetworkExecutionFailed { source: StartLocalNetworkError },
21+
}
22+
23+
pub async fn exec(cmd: Cmd) -> Result<(), RunNetworkError> {
1124
println!("Running network command");
1225

1326
let config = ManagedNetworkModel::default();
14-
let ps = ProjectStructure::find().unwrap();
27+
let ps = ProjectStructure::find().ok_or(RunNetworkError::ProjectStructureNotFound)?;
1528
eprintln!("Project structure root: {}", ps.root().display());
1629
let network_root = ps.network_root("local");
17-
create_dir_all(&network_root).unwrap();
30+
create_dir_all(&network_root)?;
1831

1932
eprintln!("Network root: {}", network_root.display());
2033

2134
let nds = NetworkDirectoryStructure::new(&network_root);
22-
run_local_network(config, nds).await.unwrap();
35+
run_local_network(config, nds).await?;
36+
37+
Ok(())
2338
}

bin/icp-cli/src/main.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,5 @@ async fn main() {
1111
println!("Hello, world!");
1212
let ps = ProjectStructure::find();
1313

14-
commands::exec(Cli::parse()).await;
14+
commands::dispatch(Cli::parse()).await;
1515
}

bin/icp-cli/tests/common/mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
mod test_env;
2-
mod os;
31
pub mod guard;
2+
mod os;
3+
mod test_env;
44

55
pub use test_env::TestEnv;

0 commit comments

Comments
 (0)