프로젝트 소개

dotcfg는 유연하고 개발자가 제어하는 애플리케이션 구성 관리를 위한 Rust 크레이트입니다. 고정된 디렉터리 전략을 강제하거나 읽기만 지원하는 크레이트와 달리, dotcfg는 구성 파일이 저장될 위치와 포함할 형식을 선택할 수 있게 하며, 기능 게이트 형식 지원으로 바이너리 크기를 작게 유지합니다. ### 저장 위치 기본적으로 구성은 `.cargo`나 `.ssh`와 유사하게 `~/.toolname/config.toml`에 저장됩니다. 사용자는 `.xdg()`를 통해 XDG 표준 경로를 선택하거나, `.at_dir()`로 임의의 절대 경로에 저장하거나, dotcfg가 현재 작업 디렉터리에서 상위로 올라가 프로젝트 로컬 구성을 찾도록 할 수 있습니다(Git이 `.git`을 찾는 방식과 유사). ### 형식 지원 TOML은 기본적으로 활성화됩니다. JSON과 YAML은 선택적 기능(`json`, `yaml`)으로 제공되며, 둘을 결합하여 하나의 바이너리가 여러 형식을 읽을 수 있습니다. 사용자 지정 파일 이름도 설정할 수 있습니다(예: `settings.json`). ### 로딩 전략 - `load()` — 파일이 존재하지 않으면 `None`을 반환하여 애플리케이션이 진행 방법을 결정하게 합니다. - `load_or_error()` — 파일이 없으면 오류를 반환하며, 사전 설정이 필요한 CLI에 적합합니다. - `load_or_default()` — 처음 사용할 때 `Default` 값으로 채워진 파일을 생성합니다. ### 키별 접근 전체 구성을 로드하거나 덮어쓰지 않고 개별 키를 읽고 씁니다: - `cfg.get("user.name")` / `cfg.set("user.name", "jane")` - `cfg.get_as::<u16>("port")` / `cfg.set_val("port", 8080u16)` 점 표기법을 사용한 중첩 키(예: `section.field`)가 지원되며 TOML 테이블, JSON 객체, YAML 매핑에 자연스럽게 대응합니다. 누락된 파일이나 디렉터리는 쓰기 시 생성됩니다. ### 환경 변수 재정의 접두사 기반 환경 변수 재정의를 통해 `MYAPP_PORT=9000`이 디스크 상태를 수정하지 않고 파일 값보다 우선합니다. `get`은 원시 문자열을 반환하고, `get_as`는 불리언, 숫자, 쉼표로 구분된 `Vec` 값을 파싱합니다. 쓰기 작업은 여전히 구성 파일만 대상으로 합니다. ### CLI 통합 이 라이브러리는 `clap`과 함께 작동하여 표준 우선순위 체계를 구현합니다: CLI 플래그 > 구성 파일 > 기본 폴백. ### 기타 유틸리티 `exists()`, `dir()`, `file_path()`, `delete_file()`, `delete_dir()`는 프로그래밍 방식의 검사 및 정리에 사용할 수 있습니다. ### 라이선스 MIT OR Apache-2.0에 따른 이중 라이선스입니다.