🧐 문제 상황
이제 원하는 정보를 API를 통해 가져와야 한다. 주식 데이터는 공공데이터 포털에서 제공하는 금융위원회 주식시세정보를 가져오기로 했다. API를 활용하려면 Key가 필요할 때가 있는데 물론 국가에서 운영하는 공공데이터 포털의 Open API를 활용하면 가격이 무료이지만 트래픽 제한이 있고, 무료가 아닌 API를 사용하는데에는 API Key값을 필수적으로 감춰야 하기 때문에 소스코드에 절대 포함하면 안된다.
그래서 Xcode에서 사용하는 방법은 *.plist를 활용하는 방법, *.xcconfig를 활용하는 방법이 있다. 나는 *.xcconfig를 활용하여 API Key를 감추고자 했다. .gitignore파일에 아래의 내용을 추가하면 간단하게 추적을 막을 수 있었지만...
# xcconfig files
*.xcconfig
문제상황은 .xcodeproj/project.pbxproj파일에 아래와 같은 변경사항이 commit이 된다는 것이었다.
이 뜻은 Secrets.xcconfig라는 파일의 경로가 남는다는 것이었고, 클론을 다시 받게 된다면... 파일을 추적하지 않으니 빨간 글씨로 표시가 될 것이다. 이것이 왜인지 너무 싫어서 해결방법이 없을까? 고민했다.
🥸 해결 과정
Git Hook을 활용해보자!!!
.git/hooks 파일에 들어가보면 아래와 같이 어떠한 행동을 하기 전에 실행을 할 수 있는 스크립트를 작성할 수 있다.
만약에 pre-push.sample 파일에 들어가본다면 대충~ WIP이 들어간 커밋이 있다면 push하지 않게 만드는 스크립트가 작성되어 있다.
pre-commit 스크립트 작성해보기
아래와 같이 commit 전에 .pbxproj 파일에서 야무지게 .xcconfig 의 내용이 있는 부분을 삭제해주는 스크립트를 작성한다.
#!/bin/bash
# .pbxproj 파일에서 .xcconfig에 대한 참조를 제거하는 스크립트
PBXPROJ_FILE=$(find . -name "*.pbxproj")
# .pbxproj 파일이 없을 때
if [ -z "$PBXPROJ_FILE" ]; then
echo ".pbxproj 파일을 찾을 수 없습니다."
exit 0
fi
# .pbxproj 파일에서 .xcconfig 관련 라인을 제거
sed -i '' '/xcconfig/d' "$PBXPROJ_FILE"
# .pbxproj 파일을 git add로 추가
git add "$PBXPROJ_FILE"
echo "commit 전에 .pbxproj 파일에서 .xcconfig 참조를 제거했습니다."
확인 결과
아래와 같이 참조를 제거했다는 결과 문구를 확인할 수 있다.
또한 git show를 통해서 변경사항을 보면 .gitignore파일만 변경된 것을 확인 할 수 있다.
시점을 pre-push 로 변경
커밋할때마다 참조를 없애준다면 커밋 할때마다 다시 Secrets 파일을 넣어줘야하는 불편함이 생긴다. 잘 되는지는 확인했으니 시점을 원격 저장소에 올리는 push 시점으로 변경 해주었다.
#!/bin/bash
# .pbxproj 파일에서 .xcconfig에 대한 참조를 제거하는 스크립트
PBXPROJ_FILE=$(find . -name "*.pbxproj")
# .pbxproj 파일이 없을 때
if [ -z "$PBXPROJ_FILE" ]; then
echo ".pbxproj 파일을 찾을 수 없습니다."
exit 0
fi
# .pbxproj 파일에서 .xcconfig 관련 라인을 제거
sed -i '' '/xcconfig/d' "$PBXPROJ_FILE"
# .pbxproj 파일을 git add로 추가
git add "$PBXPROJ_FILE"
echo "push 전에 .pbxproj 파일에서 .xcconfig 참조를 제거했습니다."
주의 사항
hook은 로컬에만 적용되기 때문에 다른 컴퓨터에서 하게 된다면 적용이 안된다!!!!
'→ Guesser' 카테고리의 다른 글
[Project-Guesser] TDD 학습 및 적용 (1) | 2024.09.15 |
---|---|
[Project-Guesser] 프로젝트 시작 (0) | 2024.09.15 |