···1515 let vm = repo::virtual_machine::find_by_project_dir(pool, ¤t_dir).await?;
1616 match vm {
1717 Some(vm) => format!("{}.firecracker.local", vm.name),
1818- None => return Err(Error::msg("No virtual machine found with the given name or project directory.")),
1818+ None => {
1919+ return Err(Error::msg(
2020+ "No virtual machine found with the given name or project directory.",
2121+ ))
2222+ }
1923 }
2020- },
2424+ }
2125 };
2226 let app_dir = get_config_dir()?;
2327 let private_key = glob(format!("{}/id_rsa", app_dir).as_str())
+27-17
crates/firecracker-up/src/main.rs
···11use anyhow::Result;
22use clap::{arg, Arg, Command};
33use firecracker_vm::{
44- constants::{BRIDGE_DEV, TAP_DEV}, mac::generate_unique_mac, types::VmOptions
44+ constants::{BRIDGE_DEV, TAP_DEV},
55+ mac::generate_unique_mac,
66+ types::VmOptions,
57};
68use owo_colors::OwoColorize;
79···6769 )
6870 .subcommand(
6971 Command::new("down")
7070- .arg(
7171- arg!([name] "Name of the Firecracker MicroVM to reset")
7272- .required(false),
7373- )
7272+ .arg(arg!([name] "Name of the Firecracker MicroVM to reset").required(false))
7473 .about("Stop Firecracker MicroVM"),
7574 )
7675 .subcommand(Command::new("status").about("Check the status of Firecracker MicroVM"))
···8483 )
8584 .about("View the logs of the Firecracker MicroVM"),
8685 )
8787- .subcommand(Command::new("ssh")
8888- .arg(arg!([name] "Name of the Firecracker MicroVM to SSH into"))
8989- .about("SSH into the Firecracker MicroVM"))
8686+ .subcommand(
8787+ Command::new("ssh")
8888+ .arg(arg!([name] "Name of the Firecracker MicroVM to SSH into"))
8989+ .about("SSH into the Firecracker MicroVM"),
9090+ )
9091 .subcommand(
9192 Command::new("reset")
9292- .arg(
9393- arg!([name] "Name of the Firecracker MicroVM to reset")
9494- .required(false),
9595- )
9393+ .arg(arg!([name] "Name of the Firecracker MicroVM to reset").required(false))
9694 .about("Reset the Firecracker MicroVM"),
9795 )
9896 .arg(arg!(--debian "Prepare Debian MicroVM").default_value("false"))
···150148 let bootargs = matches.get_one::<String>("boot-args").cloned();
151149 let bridge = args.get_one::<String>("bridge").cloned().unwrap();
152150 let tap = args.get_one::<String>("tap").cloned().unwrap();
153153- let api_socket = args.get_one::<String>("api-socket").cloned().unwrap_or(default_socket);
154154- let mac_address = args.get_one::<String>("mac-address").cloned().unwrap_or(default_mac);
151151+ let api_socket = args
152152+ .get_one::<String>("api-socket")
153153+ .cloned()
154154+ .unwrap_or(default_socket);
155155+ let mac_address = args
156156+ .get_one::<String>("mac-address")
157157+ .cloned()
158158+ .unwrap_or(default_mac);
155159 let options = VmOptions {
156160 debian: args.get_one::<bool>("debian").copied(),
157161 alpine: args.get_one::<bool>("alpine").copied(),
···185189 Some(("ssh", args)) => {
186190 let name = args.get_one::<String>("name").cloned();
187191 ssh(pool, name).await?
188188- },
192192+ }
189193 Some(("reset", args)) => {
190194 let name = args.get_one::<String>("name").cloned().unwrap();
191195 let api_socket = format!("/tmp/firecracker-{}.sock", name);
···212216 let bootargs = matches.get_one::<String>("boot-args").cloned();
213217 let bridge = matches.get_one::<String>("bridge").cloned().unwrap();
214218 let tap = matches.get_one::<String>("tap").cloned().unwrap();
215215- let api_socket = matches.get_one::<String>("api-socket").cloned().unwrap_or(default_socket);
216216- let mac_address = matches.get_one::<String>("mac-address").cloned().unwrap_or(default_mac);
219219+ let api_socket = matches
220220+ .get_one::<String>("api-socket")
221221+ .cloned()
222222+ .unwrap_or(default_socket);
223223+ let mac_address = matches
224224+ .get_one::<String>("mac-address")
225225+ .cloned()
226226+ .unwrap_or(default_mac);
217227218228 let options = VmOptions {
219229 debian: Some(debian),
+18-13
crates/firecracker-vm/src/lib.rs
···2020 let distro: Distro = options.clone().into();
2121 let app_dir = get_config_dir().with_context(|| "Failed to get configuration directory")?;
22222323- let name = options.api_socket
2323+ let name = options
2424+ .api_socket
2425 .split('/')
2526 .last()
2627 .ok_or_else(|| anyhow!("Failed to extract VM name from API socket path"))?
···108109 Distro::NixOS => "nixos".into(),
109110 Distro::Ubuntu => "ubuntu".into(),
110111 };
111111- repo::virtual_machine::create(pool, VirtualMachine {
112112- vcpu: options.vcpu,
113113- memory: options.memory,
114114- api_socket: options.api_socket.clone(),
115115- bridge: options.bridge.clone(),
116116- tap: options.tap.clone(),
117117- mac_address: options.mac_address.clone(),
118118- name: name.clone(),
119119- pid: Some(pid),
120120- distro,
121121- ..Default::default()
122122- }).await?;
112112+ repo::virtual_machine::create(
113113+ pool,
114114+ VirtualMachine {
115115+ vcpu: options.vcpu,
116116+ memory: options.memory,
117117+ api_socket: options.api_socket.clone(),
118118+ bridge: options.bridge.clone(),
119119+ tap: options.tap.clone(),
120120+ mac_address: options.mac_address.clone(),
121121+ name: name.clone(),
122122+ pid: Some(pid),
123123+ distro,
124124+ ..Default::default()
125125+ },
126126+ )
127127+ .await?;
123128124129 println!("[✓] MicroVM booted and network is configured 🎉");
125130