From bab768082b9fb15768c7a6f85098cac5bf723c01 Mon Sep 17 00:00:00 2001
From: STEVAN Antoine <antoine.stevan@isae-supaero.fr>
Date: Wed, 6 Dec 2023 12:01:26 +0000
Subject: [PATCH] take bytes path as argument in `komodo.nu` and `cargo run`
 (dragoon/komodo!9)

this is to make the passing of bytes easier as `cargo run` wants strings.
---
 README.md   |  9 +++++++--
 komodo.nu   |  6 +++---
 src/main.rs | 11 +++++++----
 3 files changed, 17 insertions(+), 9 deletions(-)

diff --git a/README.md b/README.md
index cc7c7d7e..9a299f76 100644
--- a/README.md
+++ b/README.md
@@ -18,16 +18,21 @@ use komodo.nu [
 ]
 use binary.nu [ "bytes decode" ]
 
-let bytes = open komodo.nu
+use std assert
 
 komodo build
 
+let bytes = "tests/dragoon_32x32.png"
+
 komodo setup $bytes
 
 komodo prove $bytes --fec-params {k: 3, n: 5}
 komodo verify blocks/0.bin blocks/1.bin
 
-(komodo reconstruct blocks/0.bin blocks/2.bin blocks/3.bin | bytes decode) == $bytes
+let actual = komodo reconstruct blocks/0.bin blocks/2.bin blocks/3.bin | bytes decode
+let expected = open $bytes | into binary | to text | from json | bytes decode
+assert equal $actual $expected
+print "reconstruction was successful"
 ```
 
 `true` should be printed at the end :thumbsup:
diff --git a/komodo.nu b/komodo.nu
index 92dd8b05..752b87e9 100644
--- a/komodo.nu
+++ b/komodo.nu
@@ -11,7 +11,7 @@ def "nu-complete log-levels" []: nothing -> list<string> {
 }
 
 def run-komodo [
-    args: record<bytes: string, k: int, n: int, do_generate_powers: bool, powers_file: path, do_reconstruct_data: bool, do_verify_blocks: bool, block_files: list<string>>,
+    args: record<bytes: path, k: int, n: int, do_generate_powers: bool, powers_file: path, do_reconstruct_data: bool, do_verify_blocks: bool, block_files: list<string>>,
     --log-level: string,
 ]: nothing -> any {
     with-env {RUST_LOG: $log_level} {
@@ -37,7 +37,7 @@ export def "komodo build" [] {
 }
 
 export def "komodo setup" [
-    bytes: string,
+    bytes: path,
     --powers-file: path = "powers.bin",
     --log-level: string@"nu-complete log-levels" = "INFO"
 ]: nothing -> nothing {
@@ -54,7 +54,7 @@ export def "komodo setup" [
 }
 
 export def "komodo prove" [
-    bytes: string,
+    bytes: path,
     --fec-params: record<k: int, n: int>,
     --powers-file: path = "powers.bin",
     --log-level: string@"nu-complete log-levels" = "INFO"
diff --git a/src/main.rs b/src/main.rs
index 6a733041..f35deff1 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -24,11 +24,14 @@ const VALIDATE: Validate = Validate::Yes;
 const BLOCK_DIR: &str = "blocks/";
 
 fn parse_args() -> (Vec<u8>, usize, usize, bool, String, bool, bool, Vec<String>) {
-    let bytes = std::env::args()
+    let bytes_path = std::env::args()
         .nth(1)
-        .expect("expected bytes as first positional argument")
-        .as_bytes()
-        .to_vec();
+        .expect("expected path to bytes as first positional argument");
+    let bytes = if bytes_path.is_empty() {
+        vec![]
+    } else {
+        std::fs::read(bytes_path).unwrap()
+    };
     let k: usize = std::env::args()
         .nth(2)
         .expect("expected k as second positional argument")
-- 
GitLab