Skip to content

Instantly share code, notes, and snippets.

@skyofdwarf
Created December 2, 2022 11:11
Show Gist options
  • Save skyofdwarf/dd06a5fa6d2a8f06ba1ac018a56e1ef2 to your computer and use it in GitHub Desktop.
Save skyofdwarf/dd06a5fa6d2a8f06ba1ac018a56e1ef2 to your computer and use it in GitHub Desktop.
CFBundleVersion 갱신 스크립트

빌드 시 마다 CFBundleVersion을 갱신하기 위한 스크립트이다.

변경된 CFBundleVersion 값 적용을 위해 Build Phases 순서가 소스컴파일 이전에 와야 한다.

아래 스크립트는 Tuist에서 사용한 스크립트 문자열로 앱버전을 위해 appVersion 변수를 참조하고 있지만 주석처리된 코드를 사용해 현재 Info.list에 정의된 앱 버전 값(CFBundleShortVersionString)을 참조 할 수도 있다.

값 형식은 앞 3개의 숫자(Major.Minor.Patch)는 CFBundleShortVersionString와 일치 시키고 뒤에 epoch 를 붙인다

epoch 대신 yyyyMMdd.HHmm 로 바꾸자

하.. sed 어렵다

"""
#!/usr/bin/env bash

epoch=`date +'%s'`
app_version=\(appVersion)
#app_version=`sed -n -E '/CFBundleShortVersionString/{n;s/.*<string>(.*)<\\/string>.*$/\\1/p;}' ${PROJECT_DIR}/${INFOPLIST_FILE}`

echo info plist: ${PROJECT_DIR}/${INFOPLIST_FILE}
echo epoch: $epoch
echo app version: $app_version

sed -i -n -E "/CFBundleVersion/{n;s/<string>(.*)<\\/string>/<string>$app_version.$epoch<\\/string>/;}" ${PROJECT_DIR}/${INFOPLIST_FILE}
"""
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment