Xcodes를 사용할 때, 간단하게 터미널로 심볼릭 링크를 만들어주는 파이썬 스크립트.
글 작성자: HEROHJK
import os
import sys
from pathlib import Path
# 사용 가능한 Xcode 버전을 검색하고 목록으로 반환하는 함수
def find_xcode_versions():
app_dir = Path('/Applications')
xcode_versions = [entry for entry in app_dir.iterdir() if entry.is_dir() and entry.name.startswith('Xcode-')]
return xcode_versions
# 심볼릭 링크를 생성하는 함수
def create_symlink(version):
xcode_symlink = Path("/Applications/Xcode.app")
if xcode_symlink.is_symlink(): # 기존 심볼릭 링크가 존재하면 삭제
xcode_symlink.unlink()
os.system(f"ln -s /Applications/{version} /Applications/Xcode.app") # 새 심볼릭 링크 생성
print(f"\033[32m심볼릭 링크가 /Applications/{version}로 설정되었습니다.\033[0m")
# 기본 Xcode 버전을 설정
os.system(f"sudo xcode-select -s /Applications/{version}/Contents/Developer")
print(f"\033[32m기본 Xcode 버전이 {version}로 설정되었습니다.\033[0m")
def version_tuple(version_str):
return tuple(map(int, (version_str.split("."))))
# 입력된 버전 문자열과 일치하는 가장 최신 버전을 반환하는 함수
def find_latest_matching_version(input_version, xcode_versions):
matching_versions = [version for version in xcode_versions if version.name.startswith(f"Xcode-{input_version}")]
if not matching_versions:
return None
latest_version = max(matching_versions, key=lambda x: version_tuple(x.name[6:-4]))
return latest_version.name
def get_current_xcode_version():
result = os.popen("xcode-select -p").read().strip()
if "/Applications/" in result:
xcode_path = result.split("/Contents/Developer")[0]
current_version = os.path.basename(xcode_path)
return current_version
else:
return None
def select_xcode_version():
xcode_versions = find_xcode_versions()
current_xcode_version = get_current_xcode_version()
if not xcode_versions:
print("\033[31mXcode 버전을 찾을 수 없습니다.\033[0m")
return
print("사용 가능한 Xcode 버전:")
for idx, version in enumerate(xcode_versions, start=1):
if version.name == current_xcode_version:
print(f"\033[32m{idx}: {version.name} (현재 설정된 버전)\033[0m")
else:
print(f"\033[32m{idx}: {version.name}\033[0m")
print("\033[31m0: 돌아가기\033[0m")
while True:
try:
user_choice = int(input("사용할 Xcode 버전 번호를 선택하세요: "))
if 1 <= user_choice <= len(xcode_versions):
selected_version = xcode_versions[user_choice - 1].name
create_symlink(selected_version)
break
elif user_choice == 0:
exit()
else:
print("\033[31m목록에 없는 번호입니다. 다시 시도해주세요.\033[0m")
except ValueError:
print("\033[31m올바른 숫자를 입력해주세요.\033[0m")
if __name__ == "__main__":
print("\n\n\n\n\n====================Xcode-Version-Selector====================")
if len(sys.argv) > 1:
input_version = sys.argv[1]
xcode_versions = find_xcode_versions()
xcode_version_names = [xcode_version.name for xcode_version in xcode_versions]
matching_version = find_latest_matching_version(input_version, xcode_versions)
if matching_version:
create_symlink(matching_version)
else:
print("\033[31m입력한 버전과 일치하는 Xcode를 찾을 수 없습니다. 사용 가능한 버전 목록을 표시합니다.\033[0m")
select_xcode_version()
else:
select_xcode_version()
Xcodes 앱은 Xcode를 설치할 때, 이렇게 설치를 해줍니다.
따라서, 빌드머신이나 스크립트로 ~/Applications/xcode.app 을 설정한 경우 경로를 찾을수 없어 난감해지는 경우가 있는데요,
심볼릭 링크를 만들고, xcode-select 커맨드를 이용하여 기본 버전으로 만들어 주어, 이를 해결해주는 파이썬 스크립트입니다.
저는 ~/.zshrc에 다음과같이 추가하여 사용하고 있습니다.
alias xcs='python3 /input_script_path/xcodeSelector.py'
그러면 터미널에 이렇게 입력하면 됩니다.
xcs
혹은
xcs 14.3
xcode의 버전은 네개로 나뉘어집니다.
14.3을 입력하면 14.3.x버전대의 가장 높은 버전을..
14를 입력하면 14.x.x 버전대의 가장 높은 버전을 선택 해 줍니다.
반응형
댓글
이 글 공유하기
다른 글
-
OpenCV를 이용하여 투명한 이미지 반전시키기
OpenCV를 이용하여 투명한 이미지 반전시키기
2020.06.04 -
PDF에 워터마크 삽입하기 [2/2]
PDF에 워터마크 삽입하기 [2/2]
2019.01.23 -
PDF에 워터마크 삽입하기 [1/2]
PDF에 워터마크 삽입하기 [1/2]
2019.01.23