aboutsummaryrefslogtreecommitdiff
path: root/tools/odinfmt/main.odin
diff options
context:
space:
mode:
Diffstat (limited to 'tools/odinfmt/main.odin')
-rw-r--r--tools/odinfmt/main.odin21
1 files changed, 14 insertions, 7 deletions
diff --git a/tools/odinfmt/main.odin b/tools/odinfmt/main.odin
index 3470ca5..b44af5c 100644
--- a/tools/odinfmt/main.odin
+++ b/tools/odinfmt/main.odin
@@ -5,6 +5,7 @@ import "core:flags"
import "core:fmt"
import "core:io"
import "core:mem"
+import vmem "core:mem/virtual"
import "core:odin/tokenizer"
import "core:os"
import "core:path/filepath"
@@ -17,6 +18,7 @@ Args :: struct {
write: bool `args:"name=w" usage:"write the new format to file"`,
stdin: bool `usage:"formats code from standard input"`,
path: string `args:"pos=0" usage:"set the file or directory to format"`,
+ config: string `usage:"path to a config file"`
}
format_file :: proc(filepath: string, config: printer.Config, allocator := context.allocator) -> (string, bool) {
@@ -44,10 +46,10 @@ walk_files :: proc(info: os.File_Info, in_err: os.Errno, user_data: rawptr) -> (
}
main :: proc() {
- arena: mem.Arena
- mem.arena_init(&arena, make([]byte, 50 * mem.Megabyte))
-
- arena_allocator := mem.arena_allocator(&arena)
+ arena: vmem.Arena
+ arena_err := vmem.arena_init_growing(&arena)
+ ensure(arena_err == nil)
+ arena_allocator := vmem.arena_allocator(&arena)
init_global_temporary_allocator(mem.Megabyte * 20) //enough space for the walk
@@ -70,9 +72,14 @@ main :: proc() {
write_failure := false
- watermark := 0
+ watermark : uint = 0
- config := format.find_config_file_or_default(args.path)
+ config: printer.Config
+ if args.config == "" {
+ config = format.find_config_file_or_default(args.path)
+ } else {
+ config = format.read_config_file_from_path_or_default(args.config)
+ }
if args.stdin {
data := make([dynamic]byte, arena_allocator)
@@ -137,7 +144,7 @@ main :: proc() {
write_failure = true
}
- watermark = max(watermark, arena.offset)
+ watermark = max(watermark, arena.total_used)
free_all(arena_allocator)
}