xcode에서 사용할 shell script 작성하기 3/3

Leo Kang·2021년 7월 22일
0

shell script for xcode

목록 보기
3/3

이제 shell script 코딩을 좀 해볼까~!

나의 기본 전략은 이렇다.

  1. sns로그인에 사용할 plist의 키를 임시의 snsinfo.plist를 만들어 놓는다.
  2. 1에서 만든 키를 과감하게 info.plist에서 삭제한다.
  3. snsinfo.plist를 info.plist에 merge 한다.

plistbuddy에는 add 가 있는데...
얘는 키가 있으면 추가를 안한다.
array에서는 동일한 키가 있어도 추가를 한다.(뭐 map이 아니니까 이건 당연하겠는데...)

그리고 Set이 있는데...
얘는 기존 값을 업데이트를 해준다.
키가 없으면??? 그냥 아무것도 안한다.

즉, 키가 있으면 Set을 쓰고 없으면 add를 쓰면 합리적일 것 같았는데..
이렇게 하려면 키가 있는지 없는지 체크해야된다.

그래서 그냥 delete로 삭제하고 머지해서 업데이트의 효과를 노리는 것이다.

괴랄한 shell script 문법!!

if [ "$google" != "x" ]; then # [ $google != "x" ] 는 안먹음.
	...
fi

if문의 시작은 대괄호로 해야되고, 대괄호 안쪽으로는 띄어쓰기를 한칸씩 무적권 해야됨.
if문의 종료는 fi임. "end" 같은게 아니라?

거기다가. google이라고 선언한 변수는 if문에서 string compare를 하려면 또 따옴표로
묶어줘야 한다...

실제로 xcode에서 테스트를 하기 위해서 빌드를 엄청 많이 했다.

그리고 xcode에서 바로 스크립트를 작성하면 심하게 렉이 걸리니까
에디터에서 수정하고 붙여넣기로 작성하는걸 추천한다.

/usr/libexec/PlistBuddy -c "add :CFBundleURLTypes array" -c "add :CFBundleURLTypes:0 dict" -c "add :CFBundleURLTypes:0:CFBundleURLName string ${PRODUCT_BUNDLE_IDENTIFIER}" -c "add :CFBundleURLTypes:0:CFBundleTypeRole string 'Editor'" -c "add :CFBundleURLTypes:0:CFBundleURLSchemes array" -c "add :CFBundleURLTypes:0:CFBundleURLSchemes:0 string 'kakao${kakao}'" ${from}
# plist buddy에는 add if key not exist 가 없으므로 그냥 삭제하고 넣어줌.
/usr/libexec/PlistBuddy -c "Delete :KAKAO_APP_KEY" ${to}
/usr/libexec/PlistBuddy -c "Add :KAKAO_APP_KEY string ${kakao}" ${to}

#기존 info.plist에서 해당 키를 삭제
/usr/libexec/PlistBuddy  -c "Delete :CFBundleURLTypes" ${to}

echo "test from: ${from}"
#만들어진 plist 머지
/usr/libexec/PlistBuddy -c "Merge ${from}" ${to}

todo

구글키도 plist에 있는 값을 읽어오면 되는데
일단은 shell script는 쳐다보기도 싫다.
-> 부채로 남겨둔다.

카카오로그인 깃헙에 PR을 할까 고민중인데, 이건 스크립트를 좀 더 다듬고,
카카오에서만 쓸 수 있게 정리해서 할 생각이다.
array를 loop 돌면서 kakao를 prefix인 값을 찾아서 수정을 하기도 귀찮고..
clear dict를 써서 다 날리고 새로 적어야 되는데
그럼 구글, 카카오꺼도 써줘야 하고~ 기본적으로 스킴 설정해둔것도 새로 셋팅을 해줘야 하니...

회고

이제, sns로그인을 사용하는 구글, 네이버, 카카오는
txt 파일에 한줄씩 차례대로 적어주면 끝이다. 그지같은 plist 파일을 매번 수정하지 않아도
plist 세팅이 끝난다.
암튼 이틀에걸친 노가다가 끝나니 후련하다.

profile
iOS developer

0개의 댓글