CLI 환경에서 폴더/파일 구조 템플릿을 쉽게 생성하고 적용할 수 있는 도구입니다. 변수를 사용하여 동적인 구조 생성을 지원합니다.
- 템플릿 생성 (TUI): TUI 환경에서 폴더/파일 구조를 입력하고 변수를 사용하여 템플릿 저장
- 템플릿 복제 (Clone): 기존 디렉토리 구조를 스캔하여 템플릿으로 저장
- 템플릿 적용: 저장된 템플릿을 원하는 경로에 적용 (변수 값 입력 지원)
- 템플릿 목록 보기 / 구조 보기: TUI를 통해 템플릿을 선택하거나 특정 템플릿의 구조를 트리 형태로 확인
- 템플릿 삭제: 저장된 템플릿 삭제 (TUI 또는 인자 사용)
- 기본 템플릿 설정/사용: 자주 사용하는 템플릿을 기본값으로 설정하고 간편하게 적용
brew tap wdwb/tree-generator
brew install tg# 프로젝트 루트 디렉토리에서 빌드
go build -o tg cmd/tg/main.go
# (선택사항) PATH에 포함된 디렉토리로 바이너리 이동 (예: /usr/local/bin)
# sudo mv tg /usr/local/bin/tg create- TUI가 실행되며, 순서대로 템플릿 이름, 설명을 입력합니다.
- 폴더/파일 경로를 한 줄씩 입력합니다.
- 폴더는 이름 끝에
/를 붙입니다 (예:src/). - 파일은 일반 파일명으로 입력합니다 (예:
README.md). - 변수를 사용하려면 경로 내에
{변수명}형식으로 포함합니다 (예:src/{componentName}/index.js).
- 폴더는 이름 끝에
- 경로 입력을 마치려면 빈 줄에서 Enter 키를 누릅니다.
- 템플릿은
~/.tree-generator/templates/에<이름>.json파일로 저장됩니다. 이때 사용된 변수(예:componentName)는 자동으로 추출되어 템플릿 파일에 저장됩니다.
# 사용법: tg clone <스캔할_경로> <저장할_템플릿_이름> "<템플릿_설명>"
# 현재 디렉토리 구조를 'my-project' 템플릿으로 저장
tg clone . my-project "My awesome project structure"
# 특정 경로의 구조를 템플릿으로 저장
tg clone ../other-dir lib-template "Standard library structure"
# 최대 깊이 2까지만 스캔하여 템플릿 저장
tg clone . shallow-clone "Shallow clone example" -d 2- 지정한
<스캔할_경로>아래의 모든 폴더와 파일을 스캔하여<저장할_템플릿_이름>으로 템플릿을 저장합니다. (.git,.DS_Store등은 제외) --depth또는-d플래그를 사용하여 스캔할 최대 디렉토리 깊이를 지정할 수 있습니다 (예:-d 1은 최상위 파일/폴더만 스캔). 기본값 0은 깊이 제한 없음을 의미합니다.- 템플릿 설명은 마지막 인자로 전달합니다. 공백이 포함된 경우 따옴표로 감싸야 합니다.
- 이 방식으로 생성된 템플릿에는 변수가 포함되지 않습니다.
# TUI를 통해 템플릿을 선택하고 구조 보기
tg list
# 특정 템플릿의 구조 보기
tg list <템플릿_이름>- 인자 없이 실행하면 TUI가 실행되어 보여줄 템플릿을 선택할 수 있습니다. (기본값 표시, 목록 순환)
- 템플릿 이름을 인자로 전달하면 해당 템플릿의 구조를 즉시 트리 형태로 출력합니다.
# TUI를 통해 기본 템플릿 선택 및 설정
tg use
# 특정 템플릿을 기본으로 바로 설정
tg use <템플릿_이름>- 인자 없이 실행하면 TUI가 실행되어 저장된 템플릿 목록을 보여줍니다.
- 현재 설정된 기본 템플릿은
(default)로 표시됩니다. - 키보드(위/아래 화살표, k/j)로 원하는 템플릿을 선택하고 Enter를 누르면 해당 템플릿이 새로운 기본 템플릿으로 설정됩니다 (
~/.tree-generator/config.json에 저장됨). 목록은 순환됩니다.
- 현재 설정된 기본 템플릿은
- 템플릿 이름을 인자로 전달하면 해당 템플릿이 즉시 기본 템플릿으로 설정됩니다.
# 사용법: tg apply [템플릿_이름] [-p 적용_경로]
# 기본 템플릿 적용 (현재 디렉토리에)
tg apply
# 특정 템플릿을 현재 디렉토리에 적용
tg apply <템플릿_이름>
# 특정 템플릿을 지정된 경로에 적용
tg apply <템플릿_이름> -p <적용_경로>
# 기본 템플릿을 지정된 경로에 적용
tg apply -p <적용_경로>- 템플릿 이름을 인자로 전달하면 해당 템플릿을 사용합니다.
- 템플릿 이름 없이 실행하면
tg use로 설정된 기본 템플릿을 사용합니다. 기본 템플릿이 없으면 오류가 발생합니다. -p플래그로 적용할 경로를 지정할 수 있습니다 (기본값: 현재 디렉토리.).- 적용할 템플릿에 변수가 정의되어 있는 경우, 각 변수의 값을 입력하라는 프롬프트가 표시됩니다. 입력된 값은 경로 생성 시 해당 변수 위치에 치환됩니다.
# TUI를 통해 삭제할 템플릿 선택
tg remove
# 특정 템플릿(들) 삭제
tg remove <템플릿1_이름> [템플릿2_이름 ...]- 인자 없이 실행하면 TUI가 실행됩니다.
- 키보드(위/아래 화살표, k/j)로 이동하고 Space 키로 삭제할 템플릿을 선택/해제합니다. (선택 시 빨간색 취소선 표시)
- Enter 키로 확정하고,
yes를 입력하면 선택된 템플릿들이 삭제됩니다.
- 삭제할 템플릿 이름을 인자로 하나 이상 전달하여 즉시 삭제할 수도 있습니다. (확인 절차 있음)
- 템플릿 파일:
~/.tree-generator/templates/<템플릿_이름>.json - 설정 파일 (기본 템플릿):
~/.tree-generator/config.json
새 버전을 Homebrew를 통해 배포하려면 다음 단계를 따릅니다:
- GitHub 릴리스 생성:
tree-generator저장소에서 새 버전 태그(예:v0.2.0)를 생성하고 GitHub Releases 페이지에서 해당 태그로 릴리스를 생성합니다. 릴리스 노트 등을 작성합니다. - 아카이브 정보 확인: 생성된 릴리스에서 소스 코드
.tar.gz파일의 URL과 SHA256 체크섬을 확인합니다.# 예시: 터미널에서 체크섬 계산 curl -L <릴리스_tar.gz_URL> | shasum -a 256
- Homebrew Tap 저장소 업데이트:
homebrew-tree-generator저장소(Tap 저장소)를 클론하거나 업데이트합니다. - Formula 파일 수정:
Formula/tg.rb파일을 열어 다음 부분을 새 릴리스 정보로 수정합니다.url: 새 릴리스의.tar.gzURL로 변경sha256: 새 아카이브의 SHA256 체크섬으로 변경version: 새 버전 번호(예:"0.2.0")로 변경
- 커밋 및 푸시: 수정된
tg.rb파일을 Tap 저장소에 커밋하고 푸시합니다.git add Formula/tg.rb git commit -m "Update tg formula to v0.2.0" git push origin main - 사용자 업데이트: 이제 사용자들은
brew update && brew upgrade tg명령어를 통해 새 버전을 설치할 수 있습니다.
MIT