unbash - Bash 명령의 구조를 실행 없이 분석하는 TypeScript 파서

10 hours ago 3
  • Bash 명령과 스크립트를 실행하지 않고 분석해, 명령어와 인자, 조건문, 파이프와 리다이렉트 등의 구조를 추상 구문 트리(AST)로 반환
  • 셸 명령의 실행 권한을 확인하거나, CI와 패키지 스크립트가 어떤 프로그램과 파일을 사용하는지 조사하는 도구를 만들 때 활용 가능
  • curl 명령을 가져와 변환할 때 뒤에 연결된 파이프나 다른 명령을 인자로 잘못 취급하지 않도록 명령 사이의 경계를 구분할 수 있음
  • 변수 확장, 산술식, 배열 인덱스와 heredoc 안에 중첩된 명령도 구조를 유지해 분석
  • 각 요소에 원본 코드의 위치가 포함돼 오류를 표시하거나, 주변 공백과 주석을 유지하면서 특정 명령과 옵션만 수정할 수 있음
  • 잘못됐거나 작성 중인 코드도 가능한 부분까지 분석하고 부분 AST와 오류 위치를 반환
  • 명령 실행, 변수 확장과 안전성 판단은 수행하지 않으며, 허용 여부를 결정하는 보안 정책은 별도로 구현해야 함
  • AST를 다시 Bash 코드로 출력하는 기본 프린터도 제공하지만, shebang을 제외한 주석과 공백은 보존하지 않음
  • 외부 의존성 없는 동기식 TypeScript API로, 네이티브 애드온이나 WASM 초기화 없이 사용 가능
  • Apple M1 Pro 벤치마크에서 tree-sitter-bash보다 약 6~17배 빠르며, gzip 압축 번들 크기는 19KB
  • npm install unbash로 설치
  • ISC 라이선스
Read Entire Article