zopt - Zig를 위한 간결한 명령줄 인자 파서

11 hours ago 3

사전 스키마 정의 없이 애플리케이션이 조회할 때마다 argv를 탐색하는 Zig 명령줄 인자 파서임 std.process.Args의 얇은 래퍼로, 도움말 작성·오류와 값 부재 처리·기본값 설정은 애플리케이션 코드에 맡김 짧은·긴 플래그와 옵션뿐 아니라 반복 옵션과 정수·실수·열거형 변환도 지원함 조회한 플래그와 옵션을 추적해 위치 인자를 구분하지만, 오타가 난 옵션도 위치 인자로 취급할 수 있어 알 수 없는 인자를 먼저 검사해야 함 스키마 기반 파서의 이점보다 간결한 API와 사용 편의성을 우선하며, 옵션 수가 적고 스키마 검증이 필요 없는 소규모 명령줄 도구에 가장 적합함 설계와 적용 범위 지연 처리와 읽을 때 스키마를 적용하는 방식(schema on read) 을 사용함 사전 스키마 파싱 대신 각 조회 시점에 argv를 탐색함 스키마가 없어도 조회한 플래그와 옵션을 기록하므로, 이후 옵션·플래그가 아닌 위치 인자를 반환할 수 있음 std.process.Args 를 감싼 의도적으로 얇은 라이브러리로, 모든 기능을 갖춘 프레임워크는 아님 도움말 텍스트, 오류와 값 부재 처리, 기본값은 애플리케이션이 직접 구현함 스키마 기반 파서의 이점을 일부 포기하는 대신 간소하고 정돈된 API를 지향함 의존성은 zig fetch --save 로 추가하며, 변경 사항과 이용 가능한 버전은 변경 이력에서 확인할 수 있음 # 최신 버전 zig fetch --save git+https://codeberg.org/hgrsd/zopt/#HEAD # 특정 버전 zig fetch --save git+https://codeberg.org/hgrsd/zopt/#v0.0.11 API와 사용 시 주의점 Zopt.from 에 할당자와 프로세스 인자를 전달해 파서를 생성함 예제에서는 @import("zopt").Zopt를 가져오고, std.process.Init의 init.arena.allocator()와 init.minimal.args를 사용함 flag 로 짧은·긴 플래그와 묶음 플래그를 조회할 수 있음 z.flag('F', "foo")는 -F, --foo, -FAX 안의 F에 일치함 z.flag('F', null)처럼 긴 이름을 생략하면 짧은 플래그만 조회함 option 은 공백 또는 =로 구분한 옵션 값을 조회함 z.option('F', "foo")는 -F <value>, -F=<value>, --foo <value&g...

Read Entire Article