cp.rs
 1  use core::fmt::Write;
 2  use alloc::string::String as AllocString;
 3  use crate::filesystems::sd::copy_file;
 4  
 5  pub fn run(args: &str) -> AllocString {
 6      let parts: heapless::Vec<&str, 2> = args.splitn(2, ' ').collect();
 7      if parts.len() < 2 {
 8          return super::fmt_usage("cp <src> <dst>");
 9      }
10  
11      let src = parts[0].trim();
12      let dst = parts[1].trim();
13  
14      match copy_file(src, dst) {
15          Ok(bytes) => {
16              let mut out = AllocString::new();
17              let _ = write!(out, "copied {} -> {} ({} bytes)\r\n", src, dst, bytes);
18              out
19          }
20          Err(error) => super::fmt_error(&error),
21      }
22  }