Files
gram/src/main.odin
T
2026-08-09 21:06:59 +02:00

68 lines
1.3 KiB
Odin

package main
import "core:fmt"
import "core:os"
import "src:chunks"
import "src:cli"
import "src:file"
VERSION :: #config(VERSION, "dev")
CLI_ERR :: 1
WORKING_DIR_ERR :: 2
LIST_DIR_ERR :: 3
WRITE_ASSETS_ERR :: 4
WRITE_METADATA_ERR :: 5
// -----------------------------------------
main :: proc() {
working_dir, wd_err := file.get_working_dir()
if wd_err != nil do os.exit(WORKING_DIR_ERR)
defer delete(working_dir)
opts, c_err := cli.parse(working_dir)
if c_err != nil do os.exit(CLI_ERR)
// fmt.println("verbose:", opts.verbose)
// fmt.println("compression:", opts.compression)
// fmt.println("size:", opts.size)
entries, ld_err := file.list_dir_recursive(opts.input, working_dir)
if ld_err != nil {
fmt.eprintln("error:", file.format_error(ld_err))
os.exit(LIST_DIR_ERR)
}
defer file.delete_entries(&entries)
w := chunks.writer_init(cast(u64)len(entries))
defer chunks.writer_destroy(&w)
wa_err := chunks.write_assets(
&w,
opts.output,
entries[:],
opts.size,
opts.compression,
)
if wa_err != nil {
fmt.eprintln("error:", chunks.format_error(wa_err))
os.exit(WRITE_ASSETS_ERR)
}
wm_err := chunks.write_metadata(
&w,
opts.output,
entries[:],
opts.size,
opts.compression,
)
if wm_err != nil {
fmt.eprintln("error:", chunks.format_error(wm_err))
os.exit(WRITE_METADATA_ERR)
}
}
// TODO: .chunkignore