in-cli를 사용해 정리하기

발행: (2026년 2월 2일 오전 04:12 GMT+9)
4 분 소요
원문: Dev.to

Source: Dev.to

많은 저장소 관리의 문제점

우리는 모두 마이크로서비스를 “사랑”합니다—이론적으로는 말이죠. 실제로는 의존성을 올리거나, 빌드를 실행하거나, 15개의 서로 다른 저장소에서 git pull을 해야 할 때, 그 과정은 금세 고통스러워집니다.

“탭 저장꾼” 전략

수동으로 15개의 터미널 탭을 열고, 각각 cd한 뒤 명령을 실행하며, 놓친 것이 없는지 바라봅니다.

“유닉스 마법사” 전략

디렉터리를 순회하는 원라인을 만들려고 시도합니다:

find . -maxdepth 1 -type d -exec sh -c 'cd "{}" && git pull' \;

작동하지만 순차적으로 실행돼 느립니다. 병렬 처리를 위해 xargs로 전환하면:

ls -d */ | xargs -P 4 -I {} bash -c "cd {} && pnpm update"

이제 또 다른 문제에 봉착합니다: xargs는 공백이 포함된 디렉터리 이름에서 깨집니다. 이를 해결하려면 find-print0를, xargs-0를 사용해야 하는데, 이 과정에서 간단했던 원라인이 읽기 어려운 80자짜리 복잡한 명령이 됩니다.

in‑cli 소개 🚀

GitHub – in‑cli

in-cli는 의존성이 전혀 없는 Bash CLI로, 모든 디렉터리에서 명령을 빠르게 실행합니다. 복잡한 파이프와 플래그를 사용할 필요 없이, 하고 싶은 일을 알려주기만 하면 됩니다.

기본 사용법

in [OPTIONS] [DIRECTORIES...] [--] COMMAND...

실제 시나리오

시나리오 1: 아침 루틴

~/work 폴더에 있는 20개의 저장소를 모두 업데이트합니다:

# Updates every repo in ~/work/ directory
in ~/work/* git pull

시나리오 2: “중요 수정” 배포

모든 서비스에서 빌드 스크립트를 병렬로 실행합니다:

# Run 'make build' in parallel across all subdirectories
in -P 8 ~/work/* make build

시나리오 3: 의존성 지옥

CVE 때문에 모든 서비스에서 lodash를 업데이트하고, 커밋한 뒤 푸시합니다:

in ~/work/* 'pnpm update lodash && git commit -am "updating lodash" && git push'

프로젝트에 포함된 EXAMPLES.md 파일에서 +50개의 다른 예시를 확인할 수 있습니다.

in‑cli를 사용하는 이유

  • Speed: 추가 플래그 없이 명령을 병렬로 실행합니다.
  • Simplicity: 복잡한 find | xargs 파이프라인을 기억할 필요가 없습니다.
  • Portability: 순수 Bash이며 외부 의존성이 전혀 없습니다.
  • Safety: 디렉터리 이름에 공백이나 특수 문자가 있어도 바로 처리합니다.

모노레포나 마이크로서비스가 가득한 폴더를 관리하고 있다면, 일회성 스크립트를 더 이상 작성하지 마세요. in‑cli를 한 번 써보고, 몇 번의 키 입력(그리고 정신 건강)까지 절약하게 되었다면 저자에게 알려 주세요.

즐기세요!

Back to Blog

관련 글

더 보기 »