Makefile, ProcessInfo Environment

Jayven·2024년 4월 1일
1

모듈화 With Tuist

목록 보기
4/4



안녕하세요 제이븐입니다 😁

이번에는 Makefile과 ProcessInfo Environment를 알아보겠습니다


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


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로 간단한 자동화를 하면서 프로젝트 관리를 더 수월하게 할 수 있게 되었습니다

질문과 피드백은 언제나 환영합니다 🙇

profile
iOS 개발자

0개의 댓글