Zut, Git! Claude와 함께 {saperlipopette}를 터미널로 포팅하기

R-Blogger · 블로그·해설 · 2026-03-01

R-Blogger블로그·해설한국어2026-03-01

Zut, Git! Claude와 함께 {saperlipopette}를 터미널로 포팅하기

프로젝트 배경몇 달 전, Rust를 배우기로 결심하고 책을 구매했습니다. 몇 달이 지난 뒤 작은 사이드 프로젝트를 시작했는데, R 패키지 saperlipopette를 Rust로 만든 CLI로 포팅하는 것이었습니다. 그러나 중간에 의욕이 사라져 프로젝트를 포기했습니다. 최근 saperlipopette를 활용한 Git 교육을 진행하면서 다시 한 번 R 외부에서도 학습자를 확대하고 싶어졌고, 그 과정에서 LLM, 특히 Claude Code (Opus 4.6)를 활용하면 CLI를 완성할 수 있겠다고 생각했습니다.기존 CLI가 가지고 있던 것CLI 프로젝트에는 saperlipopette의 “Oh shit, Git!” 연습 문제 몇 개가 포함되어 있었습니다. 초기 이름은 “ohcrabgit”으로, “Oh crap, Git!”과 Rust 로고인 게를 이용한 말장난이었습니다. 터미널에서 반복해서 입력하기엔 별로 좋지 않은 이름이었죠.사용 방법은 다음과 같습니다.# 연습 문제 폴더 생성 $ zut exercise_name# 생성된 폴더에서 $ cat instructions.txt # 수행할 내용 확인 $ cat tip.txt # 힌트 확인 (필요 시)이 인터페이스는 텍스트 파일을 읽을 수 있는 환경이라면 언제든 작동하도록 설계되었습니다.내부적으로는 git.rs파일에 init_playground, create_branch와 같은 유틸리티 함수가 있었으며, Git 기능 구현을 위해 git2크레이트를 사용했습니다. 각 코드는 검색 엔진과 컴파일러의 친절한 오류 메시지를 참고해 직접 작성했습니다.CLI에 바랐던 점Rust 코드를 직접 작성하는 일에 큰 흥미를 느끼지 못했습니다. 앞으로 필요할 수도 있지만 현재는 우선 saperlipopette와 동일한 기능을 제공하는 CLI를 만들고 싶었습니다. 구체적인 목표는 다음과 같습니다.연습 문제 수 확대설명 및 팁을 프랑스어와 스페인어로 번역도움말 포맷 개선 및 설치 안내 개선이렇게 하면 R 사용자뿐 아니라 일반 개발자에게도 워크숍을 진행할 수 있을 것입니다.Claude와 함께 진행한 작업Claude Code 구독 서비스를 이용해 터미널(Positron IDE)에서 Claude를 호출했습니다. 세션 제한에 걸려 Pilates 수업 전에 잠시 대기했지만 큰 문제는 없었습니다. 아래는 제가 검토한 주요 변경 사항입니다.도움말 포맷 개선ANSI 문자열을 최소화하고, 접근성이 높은 색상으로 교체했습니다.CLI 이름 변경프랑스어 욕설 “zut”(‘젠장’)으로 이름을 바꾸었습니다. Claude가 모든 파일에서 자동으로 이름을 교체했으며, 이는 제가 손쉽게 처리할 수 있었습니다.설치 안내대상 사용자가 주로 개발자임을 고려해 다음과 같이 안내했습니다.cargo install --git다국어 지원시스템 로케일, 환경 변수, 혹은 명령줄 플래그를 기반으로 설명과 팁을 다양한 언어로 출력하도록 구현했습니다. 기본값은 시스템 로케일로 설정했습니다.테스트 추가Claude가 요청하지 않은 단위 테스트와, 비어 있던 tests폴더에 통합 테스트를 추가했습니다.연습 문제 포팅모든 saperlipopette연습 문제를 프랑스어, 영어, 스페인어로 포팅했으며, 도움말 출력 및 README에 카테고리화했습니다. 실행 과정에서 작은 수정(파일 끝의 빈 줄)과 큰 수정(예: git bisect연습을 R 스크립트에서 쉘 스크립트로 변환) 등을 적용했습니다.버그 수정zut가 소스가 있는 폴더에서만 동작하던 문제를 해결했습니다.zut 현재 상태설치cargo install --git도움말 보기zut --help출력 예시:Create example Git messes to solve, inspired by Usage: zut [TARGET] In the exercise folder, open instructions.txt. Arguments: Name of the exercise Possible values: - time-machine : Oh shit, I did something terribly wrong, please tell me git has a magic time machine!?! - small-change : Oh shit, I committed and immediately realized I need to make one small change! - latest-message : Oh shit, I need to change the message on my last commit! - committed-to-main : Oh shit, I accidentally committed something to main that should have been on a brand new branch! - committed-to-wrong : Oh shit, I accidentally committed to the wrong branch! - undo-commit : Oh shit, I need to undo a commit from like 5 commits ago! - undo-file : Oh shit, I need to undo my changes to a file! - split-changes : Hey I'd like to split these changes to the same …위와 같이 다양한 연습 과제를 선택하여 Git을 실습할 수 있습니다.
원문 URL
전체 글은 원문 페이지에서 이어서 읽을 수 있습니다.
원문에서 전체 글 읽기
작성자
R-Blogger
출처
R-Blogger
플랫폼
R-Blogger
분류
블로그·해설
언어
한국어
발행일
2026-03-01