기타

스크립트로 Swift 변수값 변경하기

Phililip
728x90

안녕하세요.

 

이번에는 shell command로 swift 파일의 특정 변수(상수)값을 바꿔보는 시간을 가져볼게요.

 


# 이게 왜 필요해...?

swift 파일의 값을 바꾸고 싶으면 직접 바꾸면 되지 왜 shell command까지 쓰면서 바꿔야 해...?

 

이런 의문이 들 수 있는데요.

 

맞는 말씀입니다.

 

 

근데 만약 전체 로직하고는 크게 연관 없지만 빌드(또는 배포)할 때 값이 바뀌어야 하는 경우라면 shell command로 자동화시키는 게 편할 수 있습니다.

 

 

예를 들어, 어떤 framework가 있고 framework 안에는 framework의 버전값을 출력해 주는 API가 있다고 해볼게요.

 

개발자가 직접 버전값을 수정하면 머지할 때 협업하는 사람하고 충돌이 발생할 가능성이 높으며, 버전값을 까먹고 수정 안 하는 경우도 생기겠죠?

 

 

뭐... 이런 상황을 고려했을 때, 스크립트로 자동화시키면 좋을 것이라 생각했고 간단한 shell command로 해결할 수 있어서 소개해보려고 합니다.

 

 

 

# sed command로 해결!

sed 명령어를 입력하면 변수값을 원하는 값으로 변경할 수 있습니다.

sed -i '' 's/{바꾸려고 하는 변수명} = .*/{바꾸려고 하는 변수명} = {원하는 값}/' {파일이름}

 

 

또는 이렇게 그룹을 사용해도 괜찮아요.

sed -i '' 's/\({바꾸려고 하는 변수명}\) = .*/\1 = {원하는 값}/' {파일이름}

 

 

## 예시

PublicClass.swift 파일의 VERSION 값을 "1.0.0" -> "2.0.0"으로 바꿔볼게요.

 

 

 

 

 

터미널에 아래 명령어를 실행시키면 변수값이 자동으로 바뀌게 됩니다. ^^

sed -i '' 's/\(public let VERSION: String\) =.*/\1 = "2.0.0"/' PublicClass.swift

 

 

 

(뭐... 당연히 PublicClass.swift 파일에 VERSION이란 변수가 하나 또 존재한다면 문제가 되겠지만... 그런 코드라면 고치는 게 좋겠죠..?)

 

 

 

# 참고

- https://www.ibm.com/docs/en/aix/7.2?topic=s-sed-command 

 

 


이번 글은 여기서 마무리.

 

 

 

반응형