Fix input/output cli flags for new core.os package

This commit is contained in:
Riyyi
2026-08-02 03:38:07 +02:00
parent 8c9bba3813
commit 1647b2b17b
3 changed files with 51 additions and 6 deletions
+9 -6
View File
@@ -5,11 +5,11 @@ import "core:fmt"
import "core:os"
Options :: struct {
verbose: bool `args:"name=verbose" usage:"Enable verbose output"`,
compression: u8 `args:"name=compression" usage:"Compression level, 0-12"`,
size: i64 `args:"name=size" usage:"Chunk size in bytes"`,
input: os.Handle `args:"name=input,file=r,required" usage:"Path to input directory"`,
output: os.Handle `args:"name=output,file=wc" usage:"Path to ouput directory"`,
verbose: bool `args:"name=verbose" usage:"Enable verbose output"`,
compression: u8 `args:"name=compression" usage:"Compression level, 0-12"`,
size: i64 `args:"name=size" usage:"Chunk size in bytes"`,
input: ^os.File `args:"name=input,file=r,required" usage:"Path to input directory"`,
output: ^os.File `args:"name=output,file=wc" usage:"Path to ouput directory"`,
// overflow: [dynamic]string,
}
@@ -24,7 +24,10 @@ parse :: proc() -> Options {
}
if opts.compression > 12 {
fmt.eprintln("error: compression should be between 0-12")
fmt.eprintln(
"error: compression higher than allowed maximum:",
opts.compression,
)
os.exit(1)
}
+36
View File
@@ -0,0 +1,36 @@
package file
import "core:fmt"
import "core:os"
// TODO:
// - list files in directory
// - get relative path
// - read file contents
// - write file contents
Asset :: struct {
path: string,
size: i64,
data: []u8,
}
read :: proc(f: ^os.File) -> Asset {
path := os.name(f)
size, err := os.file_size(f)
if err != nil {
fmt.eprintln("error: failed to get file size:", err)
os.exit(1)
}
data := make([]u8, size)
n, read_err := os.read_full(f, data)
if read_err != nil {
fmt.eprintln("read failed:", read_err, "got", n, "of", size, "bytes")
os.exit(1)
}
return Asset{path = path, size = size, data = data}
}
+6
View File
@@ -3,6 +3,7 @@ package main
import "core:fmt"
import "src:cli"
import "src:file"
VERSION :: #config(VERSION, "dev")
@@ -12,4 +13,9 @@ main :: proc() {
fmt.println("verbose:", opts.verbose)
fmt.println("compression:", opts.compression)
fmt.println("size:", opts.size)
asset := file.read(opts.input)
fmt.println("path:", asset.path)
fmt.println("size:", asset.size)
fmt.println("data:", asset.data)
}