관리 메뉴

김종권의 iOS 앱 개발 알아가기

[iOS - swift] xUnique (파일, 폴더 sorting 관리, pbxproj 솔팅 관리) 프레임워크 본문

iOS framework

[iOS - swift] xUnique (파일, 폴더 sorting 관리, pbxproj 솔팅 관리) 프레임워크

jake-kim 2022. 3. 23. 23:37

xUnique

  • 충돌 문제 대응
    • Xcode는 프로젝트 정보를 .xcodeproj 파일을 통해 관리하는데, 이 파일 에서는 파일을 새로 생성할 때마다 UUID가 달라지고, 파일들이 정렬되지 않아 충돌 문제가 존재
  • xUnique는 동일한 파일에 같은 UUID를 할당하고 이름을 기준으로 정렬하는 방식을 사용

xUnique은 python으로 설치해야 하므로 python 설치

  • home brew 설치
  • 파이썬 DI 관리 도구인 poetry 설치
    • python의 pip는 .lock파일이 없어서 버전관리가 번거롭지만, poetry는 lock파일이 존재하여 버전 관리에 용이 (DI 관리)
// intel
brew install poetry

// apple silicon chip
arch -arm64 brew install poetry
  • poetry --version을 입력하여 설치된 것 확인

poetry 준비

poetry new pip

생성된 pip파일 확인

  • 안에는 .toml파일과 .rst파일이 존재

  • .toml파일에서 xUnique 명시
[tool.poetry]
name = "pip"
version = "0.1.0"
description = ""
authors = ["jake <https://ios-development.tistory.com/>"]

[tool.poetry.dependencies]
python = "^3.10"

[tool.poetry.dev-dependencies]
xUnique = "^4.1.4"

[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"
  • xUnique 설치 (pytproject.toml가 있는 위치에서 아래 명령어 실행)
poetry install

xUnique를 ~/.zhsrc에 추가

  • 파이썬의 위치를 확인하기 위해서 아래 명령어 실행
pip3 install xUnique

위 블록을 복사

  • 파이썬의 위치 확인: /Users/jake/Library/Python/3.8/
  • 위치를 확인했다면, 파이썬 bin 폴더 하위에 $PATH를 추가
export PATH=/Users/jake/Library/Python/3.8/bin:$PATH

* 만약 기존 환경변수들이 삭제되었을 경우, bin 복구 커멘드

export PATH=$PATH:/bin:/usr/local/bin:/usr/bin
  • xunique파일 링크 설정: /usr/local/bin
ln -s "$(which xunique)" /usr/local/bin

gitHook 설정

  • 아래 명령어를 입력하면 git hook의 pre-commit에 자동으로 sorting할 파일들이 입력 
    • (프로젝트 root로 이동한 다음 아래 명령어 입력) 
    • 핵심은 ./{projectName}.xcodeproj와 ./Pods.xcodeproj
    • 프로젝트.xcodeproj파일과 Pods.xcodeproj을 xunique적용시킨다는 의미
{ echo '#!/bin/sh'; echo 'xunique ./ExXUnique.xcodeproj'; echo 'xunique ./Pods/Pods.xcodeproj'; } > .git/hooks/pre-commit
  • ./git/hooks/pre-commit 파일을 보면 아래처럼 입력된 것을 확인

  • 권한 추가
chmod 755 .git/hooks/pre-commit

사용

  • B123File, A123File 생성

  • 커밋 시 아래처럼 sort가 된 로그 확인자동으로 정렬된 파일들 확인

* 참고

https://python-poetry.org/docs/pyproject/

https://python-poetry.org/docs/

https://github.com/truebit/xUnique

Comments