2026-07-09 16:36:04 +01:00
2026-07-06 15:16:50 +01:00
2026-07-09 16:15:12 +01:00
2026-07-09 16:36:04 +01:00

Go-like flags in Odin

This a very simple implementation of Go-like flags in Odin

How to use

	import "fleg"

	isRunning: bool
	isNumber: int
	isString: string
	isFloat: f32

	fleg.BoolVar(&isRunning, "isRunning", true, "A select piece of code is running!")
	fleg.IntVar(&isNumber, "isNumber", 3434, "A number!")
	fleg.StringVar(&isString, "isString", "Hellope!", "A string!")
	fleg.Float32Var(&isFloat, "isFloat", 3.1415, "A float!")

	fleg.parse_flags()

Supports: bool, int, string, f32

And on the command line, you pass flags like so:

./<program name> -isNumber=45 -isRunning=false ......

Help flag:

The package also contains a help context menu. This comes default and can be called like so (Note: You can also use "-h" or "--help"):

./<program name> -help

	Usage:
	-isRunning:
		A select piece of code is running! (default: true)

	-isNumber:
		A number! (default: 3434)

	-isString:
		A string! (default: Hellope!)

	-isFloat:
		A float! (default: 3.141)

Note: You can set the boolean FORCE_HELP_ON_EMPTY_ARGS to allow for the help context menu to be displayed when no arguments are passed

Custom Flag Format

A custom flag format can be created by overwriting the strings FLAG_START_CHAR and FLAG_SEP_CHAR. These cannot be the same however!

Custom Allocator

If needed, you are able to setup a custom allocator like so:

	arena: vmem.Arena
	arena_err := vmem.arena_init_growing(&arena)
	ensure(arena_err == nil)
	arena_alloc := vmem.arena_allocator(&arena)
	defer vmem.arena_destroy(&arena)

	fleg.init_custom_allocator(arena_alloc)
	defer fleg.destroy() //clean up flags
Description
Go-like flags in Odin that support custom formats and allocators
Readme 57 KiB
Languages
Odin 100%