안녕하세요 제이븐입니다 😁
이번에는 Makefile과 ProcessInfo Environment를 알아보겠습니다
Tuist는 쉘에서 실행될 때, Tuist 환경 변수를 읽어서 사용할 수 있게 지원합니다
tuist generate
할 때 환경변수를 넣어서 원하는 타겟 앱만을 노출한다던지, 모듈의 framework 타입을 바꾸는 동작이 가능해집니다
Tuist 환경변수를 사용하려면 TUIST_
접두어를 붙여 작성하면 됩니다.
ex) TUIST_DEPLOY=Deploy tuist generate
이후에 ProcessInfo에서 환경변수를 가져와 사용하면 됩니다.
let tuistDeploy = ProcessInfo.processInfo.environment["TUIST_DEPLOY"]
let isDeploy: Bool = (tuistDeploy == "Deploy")
let project = isDeploy
? Project.makeModule(
name: "\(Environment.appName)-PROD",
targets: [.app],
internalDependencies: [
.Features.rootFeature
])
: Project.makeModule(
name: "\(Environment.appName)-DEV",
targets: [.app],
internalDependencies: [
.Features.rootFeature
]
)
let project = Project.makeModule(
name: "Domain",
targets: [isDeploy ? .dynamicFramework : .staticFramework],
internalDependencies: [
.Core.core
]
)
이러한 환경변수 사용에는 매번 입력하기 힘들고 오타의 위험이 있으니 아래 Makefile과 함께 사용하는 것이 좋다고 생각합니다.
Makefile은 Tuist의 빌드를 자동화 하는 도구입니다
Tuist의 환경변수 전달, Scaffold, 쉘스크립트 실행 등 프로젝트 생성 전에 여러 명령어를 실행해야 될 때 그 과정을 자동화 할 수 있습니다
실행 때 make 명령어가 참조 됩니다.
프로젝트 Root에서 Makefile을 생성하고 수정해보겠습니다
# 환경변수 입력
.PHONY: generate
deploy:
TUIST_DEPLOY=Deploy tuist generate
# 모듈 생성
module:
@tuist scaffold module --name ${name}
# 이미지를 다운로드 받아서 Assets에 넣어주는 스크립트 실행 후 프로젝트 생성
image:
@bash Script/makeIcon.sh
tuist generate
이런식으로 Makefile을 만들어서 아래와 같이 실행 할 수 있습니다.
make deploy
make module name=LoginFeature
make image
이번에는 Tuist의 환경변수 사용법과 Makefile에 대해서 포스팅을 했습니다
환경 변수를 사용함으로써 유연하게 동작하게 만들고 Makefile로 간단한 자동화를 하면서 프로젝트 관리를 더 수월하게 할 수 있게 되었습니다
질문과 피드백은 언제나 환영합니다 🙇