cargo extension

Cargo 확장은 cargo가 PATH에서 실행 파일을 찾는 규칙이다

cargo foo는 내부 명령이 아니면 cargo-foo 실행 파일을 찾고, 나머지 인수를 그대로 넘긴다.

사용자 입력 cargo foo --bar

Cargo는 첫 단어가 내장 명령인지 먼저 확인한다.

이름 변환 cargo-foo

내장 명령이 아니면 하이픈이 붙은 실행 파일 이름으로 바꾼다.

PATH 탐색 $PATH

설치된 binary를 찾고 권한과 플랫폼 실행 가능 여부를 확인한다.

실행 결과 exit code

stdout, stderr, 종료 코드는 일반 CLI와 같은 규칙으로 돌아온다.

검사 확인할 점 실패 신호
이름 cargo-mytool처럼 cargo- 접두사를 붙인다. cargo가 “no such command”를 출력한다.
인수 cargo foo a ba b를 직접 파싱한다. 옵션이 Cargo 쪽 옵션과 섞여 해석된다.
배포 cargo install 후 PATH에 binary가 들어가는지 본다. 로컬에서는 되지만 다른 환경에서 명령을 못 찾는다.

핵심: 확장 명령은 Cargo 플러그인 API가 아니라 실행 파일 이름 규칙과 PATH 탐색 규칙을 이용한다.