128 lines
5.4 KiB
Bash
Executable File
128 lines
5.4 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# iOS 앱 버전 관리 스크립트
|
|
# 사용법: ./ios-version-manager.sh
|
|
|
|
# 색상 정의
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
RED='\033[0;31m'
|
|
NC='\033[0m' # No Color
|
|
|
|
# 프로젝트 디렉토리로 이동
|
|
cd "$(dirname "$0")"
|
|
|
|
# 프로젝트 파일 경로
|
|
XCODEPROJ_FILE="ios/App/App.xcodeproj/project.pbxproj"
|
|
|
|
# 설정 파일 경로
|
|
CONFIG_FILE="$HOME/.zellyy_ios_build.conf"
|
|
|
|
# 버전 정보 관리 함수
|
|
manage_version_info() {
|
|
# 현재 버전 및 빌드 번호 가져오기
|
|
if [ -f "$XCODEPROJ_FILE" ]; then
|
|
MARKETING_VERSION=$(grep -A 1 "MARKETING_VERSION" "$XCODEPROJ_FILE" | grep -o 'MARKETING_VERSION = [0-9]\+\.[0-9]\+\(\.[0-9]\+\)*' | sed 's/MARKETING_VERSION = //' | head -1)
|
|
CURRENT_PROJECT_VERSION=$(grep -A 1 "CURRENT_PROJECT_VERSION" "$XCODEPROJ_FILE" | grep -o '[0-9]\+' | head -1)
|
|
|
|
echo -e "${YELLOW}현재 버전 정보:${NC}"
|
|
echo -e "마케팅 버전: ${GREEN}$MARKETING_VERSION${NC}"
|
|
echo -e "빌드 번호: ${GREEN}$CURRENT_PROJECT_VERSION${NC}"
|
|
|
|
# 설정 파일 확인 및 로드
|
|
if [ -f "$CONFIG_FILE" ]; then
|
|
source "$CONFIG_FILE"
|
|
fi
|
|
|
|
# 버전 수정 여부 확인
|
|
echo -e "\n${YELLOW}버전 정보를 수정하시겠습니까? (y/n) [${LAST_VERSION_CHOICE:-n}]:${NC}"
|
|
read -r UPDATE_VERSION
|
|
UPDATE_VERSION=${UPDATE_VERSION:-${LAST_VERSION_CHOICE:-n}}
|
|
|
|
if [[ "$UPDATE_VERSION" == "y" || "$UPDATE_VERSION" == "Y" ]]; then
|
|
echo -e "\n${YELLOW}새 마케팅 버전을 입력하세요 (현재: $MARKETING_VERSION) [${LAST_MARKETING_VERSION:-$MARKETING_VERSION}]:${NC}"
|
|
read -r NEW_MARKETING_VERSION
|
|
NEW_MARKETING_VERSION=${NEW_MARKETING_VERSION:-${LAST_MARKETING_VERSION:-$MARKETING_VERSION}}
|
|
|
|
if [ -z "$NEW_MARKETING_VERSION" ]; then
|
|
NEW_MARKETING_VERSION=$MARKETING_VERSION
|
|
fi
|
|
|
|
echo -e "${YELLOW}새 빌드 번호를 입력하세요 (현재: $CURRENT_PROJECT_VERSION) [${LAST_BUILD_NUMBER:-$CURRENT_PROJECT_VERSION}]:${NC}"
|
|
read -r NEW_PROJECT_VERSION
|
|
NEW_PROJECT_VERSION=${NEW_PROJECT_VERSION:-${LAST_BUILD_NUMBER:-$CURRENT_PROJECT_VERSION}}
|
|
|
|
if [ -z "$NEW_PROJECT_VERSION" ]; then
|
|
NEW_PROJECT_VERSION=$CURRENT_PROJECT_VERSION
|
|
fi
|
|
|
|
# 버전 정보 업데이트
|
|
# macOS에서는 sed -i에 백업 확장자를 지정해야 함
|
|
sed -i '' "s/MARKETING_VERSION = [0-9][0-9]*\.[0-9][0-9]*\(\.[0-9][0-9]*\)*/MARKETING_VERSION = $NEW_MARKETING_VERSION/g" "$XCODEPROJ_FILE"
|
|
sed -i '' "s/CURRENT_PROJECT_VERSION = $CURRENT_PROJECT_VERSION;/CURRENT_PROJECT_VERSION = $NEW_PROJECT_VERSION;/g" "$XCODEPROJ_FILE"
|
|
|
|
echo -e "\n${GREEN}버전 정보가 업데이트되었습니다:${NC}"
|
|
echo -e "마케팅 버전: ${GREEN}$NEW_MARKETING_VERSION${NC}"
|
|
echo -e "빌드 번호: ${GREEN}$NEW_PROJECT_VERSION${NC}"
|
|
|
|
# AppVersionInfo.tsx 파일의 하드코딩된 버전 정보 업데이트
|
|
update_app_version_info "$NEW_MARKETING_VERSION" "$NEW_PROJECT_VERSION"
|
|
|
|
# 설정 저장
|
|
echo "LAST_VERSION_CHOICE=y" > "$CONFIG_FILE"
|
|
echo "LAST_MARKETING_VERSION=$NEW_MARKETING_VERSION" >> "$CONFIG_FILE"
|
|
echo "LAST_BUILD_NUMBER=$NEW_PROJECT_VERSION" >> "$CONFIG_FILE"
|
|
|
|
# 성공 코드 반환
|
|
return 0
|
|
else
|
|
echo -e "${YELLOW}현재 버전 정보를 유지합니다.${NC}"
|
|
# 설정 저장
|
|
echo "LAST_VERSION_CHOICE=n" > "$CONFIG_FILE"
|
|
|
|
# 성공 코드 반환
|
|
return 0
|
|
fi
|
|
else
|
|
echo -e "${RED}프로젝트 파일을 찾을 수 없습니다: $XCODEPROJ_FILE${NC}"
|
|
# 실패 코드 반환
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
# AppVersionInfo.tsx 파일 업데이트 함수
|
|
update_app_version_info() {
|
|
local version_name=$1
|
|
local build_number=$2
|
|
local app_version_file="src/components/AppVersionInfo.tsx"
|
|
|
|
if [ ! -f "$app_version_file" ]; then
|
|
echo -e "${RED}AppVersionInfo.tsx 파일을 찾을 수 없습니다.${NC}"
|
|
return 1
|
|
fi
|
|
|
|
echo -e "${YELLOW}AppVersionInfo.tsx 파일의 버전 정보 업데이트 중...${NC}"
|
|
|
|
# 백업 파일 생성
|
|
cp "$app_version_file" "${app_version_file}.bak"
|
|
|
|
# AppVersionInfo.tsx 파일에서 하드코딩된 버전 정보 업데이트
|
|
# 인터페이스/타입 정의와 실제 값 할당 구분하여 패턴 수정
|
|
sed -i '' "s/versionName: '[^']*'/versionName: '$version_name'/" "$app_version_file"
|
|
|
|
# buildNumber 수정 - 객체 내에서만 수정
|
|
sed -i '' "/hardcodedVersionInfo/,/}/s/buildNumber: [0-9]*/buildNumber: $build_number/" "$app_version_file"
|
|
|
|
# versionCode 수정 - 객체 내에서만 수정 (iOS에서는 versionCode를 빌드 번호와 동일하게 설정)
|
|
sed -i '' "/hardcodedVersionInfo/,/}/s/versionCode: [0-9]*/versionCode: $build_number/" "$app_version_file"
|
|
|
|
echo -e "${GREEN}AppVersionInfo.tsx 파일의 버전 정보가 업데이트되었습니다.${NC}"
|
|
return 0
|
|
}
|
|
|
|
# 스크립트가 직접 실행될 때만 버전 관리 함수 실행
|
|
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
|
|
manage_version_info
|
|
exit $?
|
|
fi
|