diff --git a/README.md b/README.md index cc7c7d7e7bf50b2166785c0eeedb04c79995fb05..9a299f763c209b5a5401321fa737794177f8c45b 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 92dd8b05697f919d93bf969253f35cd810038f7a..752b87e973b99f39dbd48004eb985212f24cff38 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 6a7330418327f599c7bb653056e25c3d1b290f1c..f35deff1a157bc304c21af2b5c60ae2ff8d70a31 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")