Skip to content

Commit 3c4291d

Browse files
committed
Merge branch 'develop' into feat/#104
2 parents 8d10e99 + 6a8aed4 commit 3c4291d

176 files changed

Lines changed: 6131 additions & 1765 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

HMH_Tuist_iOS/HMH-Tuist-iOS.xcworkspace/xcshareddata/xcschemes/HMH-Tuist-iOS-Workspace.xcscheme

Lines changed: 24 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -62,20 +62,6 @@
6262
ReferencedContainer = "container:Projects/Features/ChallengeFeature/ChallengeFeature.xcodeproj">
6363
</BuildableReference>
6464
</BuildActionEntry>
65-
<BuildActionEntry
66-
buildForTesting = "YES"
67-
buildForRunning = "YES"
68-
buildForProfiling = "YES"
69-
buildForArchiving = "YES"
70-
buildForAnalyzing = "YES">
71-
<BuildableReference
72-
BuildableIdentifier = "primary"
73-
BlueprintIdentifier = "2538C1AD7CF9D7896689AB84"
74-
BuildableName = "ChallengeFeatureInterface.framework"
75-
BlueprintName = "ChallengeFeatureInterface"
76-
ReferencedContainer = "container:Projects/Features/ChallengeFeature/ChallengeFeature.xcodeproj">
77-
</BuildableReference>
78-
</BuildActionEntry>
7965
<BuildActionEntry
8066
buildForTesting = "YES"
8167
buildForRunning = "YES"
@@ -160,6 +146,20 @@
160146
ReferencedContainer = "container:Projects/Data/Data.xcodeproj">
161147
</BuildableReference>
162148
</BuildActionEntry>
149+
<BuildActionEntry
150+
buildForTesting = "YES"
151+
buildForRunning = "YES"
152+
buildForProfiling = "YES"
153+
buildForArchiving = "YES"
154+
buildForAnalyzing = "YES">
155+
<BuildableReference
156+
BuildableIdentifier = "primary"
157+
BlueprintIdentifier = "59D7D2F02BF6A0D0E7F83454"
158+
BuildableName = "DataTests.xctest"
159+
BlueprintName = "DataTests"
160+
ReferencedContainer = "container:Projects/Data/Data.xcodeproj">
161+
</BuildableReference>
162+
</BuildActionEntry>
163163
<BuildActionEntry
164164
buildForTesting = "YES"
165165
buildForRunning = "YES"
@@ -244,20 +244,6 @@
244244
ReferencedContainer = "container:Projects/Features/HomeFeature/HomeFeature.xcodeproj">
245245
</BuildableReference>
246246
</BuildActionEntry>
247-
<BuildActionEntry
248-
buildForTesting = "YES"
249-
buildForRunning = "YES"
250-
buildForProfiling = "YES"
251-
buildForArchiving = "YES"
252-
buildForAnalyzing = "YES">
253-
<BuildableReference
254-
BuildableIdentifier = "primary"
255-
BlueprintIdentifier = "854D3E4EFF471C42EE44119B"
256-
BuildableName = "HomeFeatureInterface.framework"
257-
BlueprintName = "HomeFeatureInterface"
258-
ReferencedContainer = "container:Projects/Features/HomeFeature/HomeFeature.xcodeproj">
259-
</BuildableReference>
260-
</BuildActionEntry>
261247
<BuildActionEntry
262248
buildForTesting = "YES"
263249
buildForRunning = "YES"
@@ -440,20 +426,6 @@
440426
ReferencedContainer = "container:Projects/Features/LoginFeature/LoginFeature.xcodeproj">
441427
</BuildableReference>
442428
</BuildActionEntry>
443-
<BuildActionEntry
444-
buildForTesting = "YES"
445-
buildForRunning = "YES"
446-
buildForProfiling = "YES"
447-
buildForArchiving = "YES"
448-
buildForAnalyzing = "YES">
449-
<BuildableReference
450-
BuildableIdentifier = "primary"
451-
BlueprintIdentifier = "CF6F649789711DC92E8F827C"
452-
BuildableName = "LoginFeatureInterface.framework"
453-
BlueprintName = "LoginFeatureInterface"
454-
ReferencedContainer = "container:Projects/Features/LoginFeature/LoginFeature.xcodeproj">
455-
</BuildableReference>
456-
</BuildActionEntry>
457429
<BuildActionEntry
458430
buildForTesting = "YES"
459431
buildForRunning = "YES"
@@ -510,20 +482,6 @@
510482
ReferencedContainer = "container:Projects/Features/MyPageFeature/MyPageFeature.xcodeproj">
511483
</BuildableReference>
512484
</BuildActionEntry>
513-
<BuildActionEntry
514-
buildForTesting = "YES"
515-
buildForRunning = "YES"
516-
buildForProfiling = "YES"
517-
buildForArchiving = "YES"
518-
buildForAnalyzing = "YES">
519-
<BuildableReference
520-
BuildableIdentifier = "primary"
521-
BlueprintIdentifier = "309D06068DD1002D94B61781"
522-
BuildableName = "MyPageFeatureInterface.framework"
523-
BlueprintName = "MyPageFeatureInterface"
524-
ReferencedContainer = "container:Projects/Features/MyPageFeature/MyPageFeature.xcodeproj">
525-
</BuildableReference>
526-
</BuildActionEntry>
527485
<BuildActionEntry
528486
buildForTesting = "YES"
529487
buildForRunning = "YES"
@@ -580,20 +538,6 @@
580538
ReferencedContainer = "container:Projects/Features/OnboardingFeature/OnboardingFeature.xcodeproj">
581539
</BuildableReference>
582540
</BuildActionEntry>
583-
<BuildActionEntry
584-
buildForTesting = "YES"
585-
buildForRunning = "YES"
586-
buildForProfiling = "YES"
587-
buildForArchiving = "YES"
588-
buildForAnalyzing = "YES">
589-
<BuildableReference
590-
BuildableIdentifier = "primary"
591-
BlueprintIdentifier = "192C7ACBD5A03867D013EBF3"
592-
BuildableName = "OnboardingFeatureInterface.framework"
593-
BlueprintName = "OnboardingFeatureInterface"
594-
ReferencedContainer = "container:Projects/Features/OnboardingFeature/OnboardingFeature.xcodeproj">
595-
</BuildableReference>
596-
</BuildActionEntry>
597541
<BuildActionEntry
598542
buildForTesting = "YES"
599543
buildForRunning = "YES"
@@ -672,6 +616,16 @@
672616
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
673617
shouldUseLaunchSchemeArgsEnv = "YES">
674618
<Testables>
619+
<TestableReference
620+
skipped = "NO">
621+
<BuildableReference
622+
BuildableIdentifier = "primary"
623+
BlueprintIdentifier = "59D7D2F02BF6A0D0E7F83454"
624+
BuildableName = "DataTests.xctest"
625+
BlueprintName = "DataTests"
626+
ReferencedContainer = "container:Projects/Data/Data.xcodeproj">
627+
</BuildableReference>
628+
</TestableReference>
675629
<TestableReference
676630
skipped = "NO">
677631
<BuildableReference

HMH_Tuist_iOS/Plugins/ConfigPlugin/ProjectDescriptionHelpers/Configurations.swift

Lines changed: 100 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,64 @@ import ProjectDescription
1313
/// Target 분리 (The Modular Architecture 기반으로 분리했습니다)
1414

1515

16+
/// DEV : 테스트 BaseURL을 사용하는 debug scheme
17+
/// PROD : 실제 프로덕트 BaseURL을 사용하는 release scheme
18+
19+
public struct XCConfig {
20+
static func path(for target: BuildTarget) -> ProjectDescription.Path {
21+
.relativeToRoot("./XCConfig/\(target.rawValue).xcconfig")
22+
}
23+
24+
public static let configurations: [Configuration] = [
25+
.build(.dev),
26+
.build(.qa),
27+
.build(.prod)
28+
]
29+
}
30+
31+
public enum BuildTarget: String {
32+
case dev = "DEV"
33+
case qa = "QA"
34+
case prod = "PROD"
35+
}
36+
37+
public extension Configuration {
38+
static func build(_ target: BuildTarget) -> Self {
39+
switch target {
40+
case .dev:
41+
return .debug(
42+
name: "Development",
43+
xcconfig: XCConfig.path(for: .dev)
44+
)
45+
case .qa:
46+
return .release(
47+
name: "QA",
48+
xcconfig: XCConfig.path(for: .qa)
49+
)
50+
case .prod:
51+
return .release(
52+
name: "PROD",
53+
xcconfig: XCConfig.path(for: .prod)
54+
)
55+
}
56+
}
57+
}
58+
59+
//
60+
// Configurations.swift
61+
// MyPlugin
62+
//
63+
// Created by 류희재 on 7/13/24.
64+
//
65+
66+
import Foundation
67+
import ProjectDescription
68+
69+
/// 빌드할 환경에 대한 설정
70+
71+
/// Target 분리 (The Modular Architecture 기반으로 분리했습니다)
72+
73+
1674
/// DEV : 실제 프로덕트 BaseURL을 사용하는 debug scheme
1775
/// TEST : 테스트 BaseURL을 사용하는 debug scheme
1876
/// QA : 테스트 BaseURL을 사용하는 release scheme
@@ -23,38 +81,45 @@ import ProjectDescription
2381
/// 2) TEST, QA -> 테스트 BaseURL
2482

2583

26-
public struct XCConfig {
27-
private struct Path {
28-
static var framework: ProjectDescription.Path { .relativeToRoot("Configurations/Targets/iOS-Framework.xcconfig") }
29-
static var demo: ProjectDescription.Path { .relativeToRoot("Configurations/Targets/iOS-Demo.xcconfig") }
30-
static var tests: ProjectDescription.Path { .relativeToRoot("Configurations/Targets/iOS-Tests.xcconfig") }
31-
static func project(_ config: String) -> ProjectDescription.Path { .relativeToRoot("Configurations/Base/Projects/Project-\(config).xcconfig") }
32-
}
33-
34-
public static let framework: [Configuration] = [
35-
.debug(name: "Development", xcconfig: Path.framework),
36-
.debug(name: "Test", xcconfig: Path.framework),
37-
.release(name: "QA", xcconfig: Path.framework),
38-
.release(name: "PROD", xcconfig: Path.framework),
39-
]
40-
41-
public static let tests: [Configuration] = [
42-
.debug(name: "Development", xcconfig: Path.tests),
43-
.debug(name: "Test", xcconfig: Path.tests),
44-
.release(name: "QA", xcconfig: Path.tests),
45-
.release(name: "PROD", xcconfig: Path.tests),
46-
]
47-
public static let demo: [Configuration] = [
48-
.debug(name: "Development", xcconfig: Path.demo),
49-
.debug(name: "Test", xcconfig: Path.demo),
50-
.release(name: "QA", xcconfig: Path.demo),
51-
.release(name: "PROD", xcconfig: Path.demo),
52-
]
53-
public static let project: [Configuration] = [
54-
.debug(name: "Development", xcconfig: Path.project("Development")),
55-
.debug(name: "Test", xcconfig: Path.project("Test")),
56-
.release(name: "QA", xcconfig: Path.project("QA")),
57-
.release(name: "PROD", xcconfig: Path.project("PROD")),
58-
]
59-
}
60-
84+
//public struct XCConfig {
85+
// private struct Path {
86+
// static var framework: ProjectDescription.Path { .relativeToRoot("Configurations/Targets/iOS-Framework.xcconfig") }
87+
// static var demo: ProjectDescription.Path { .relativeToRoot("Configurations/Targets/iOS-Demo.xcconfig") }
88+
// static var tests: ProjectDescription.Path { .relativeToRoot("Configurations/Targets/iOS-Tests.xcconfig") }
89+
// static func project(_ config: String) -> ProjectDescription.Path { .relativeToRoot("Configurations/Base/Projects/Project-\(config).xcconfig") }
90+
// }
91+
//
92+
// public static let framework: [Configuration] = [
93+
// .debug(name: "Development", xcconfig: .relativeToRoot("XCConfig/DEV.xcconfig")),
94+
// .release(name: "PROD", xcconfig: .relativeToRoot("XCConfig/PROD.xcconfig"))
95+
//// .debug(name: "Development", xcconfig: Path.framework),
96+
//// .debug(name: "Test", xcconfig: Path.framework),
97+
//// .release(name: "QA", xcconfig: Path.framework),
98+
//// .release(name: "PROD", xcconfig: Path.framework),
99+
// ]
100+
//
101+
// public static let tests: [Configuration] = [
102+
// .debug(name: "Development", xcconfig: .relativeToRoot("XCConfig/DEV.xcconfig")),
103+
// .release(name: "PROD", xcconfig: .relativeToRoot("XCConfig/PROD.xcconfig"))
104+
//// .debug(name: "Development", xcconfig: Path.tests),
105+
////// .debug(name: "Test", xcconfig: Path.tests),
106+
////// .release(name: "QA", xcconfig: Path.tests),
107+
//// .release(name: "PROD", xcconfig: Path.tests),
108+
// ]
109+
// public static let demo: [Configuration] = [
110+
// .debug(name: "Development", xcconfig: .relativeToRoot("XCConfig/DEV.xcconfig")),
111+
// .release(name: "PROD", xcconfig: .relativeToRoot("XCConfig/PROD.xcconfig"))
112+
//// .debug(name: "Development", xcconfig: Path.demo),
113+
////// .debug(name: "Test", xcconfig: Path.demo),
114+
////// .release(name: "QA", xcconfig: Path.demo),
115+
//// .release(name: "PROD", xcconfig: Path.demo),
116+
// ]
117+
// public static let project: [Configuration] = [
118+
// .debug(name: "Development", xcconfig: .relativeToRoot("XCConfig/DEV.xcconfig")),
119+
// .release(name: "PROD", xcconfig: .relativeToRoot("XCConfig/PROD.xcconfig"))
120+
//// .debug(name: "Development", xcconfig: Path.project("Development")),
121+
////// .debug(name: "Test", xcconfig: Path.project("Test")),
122+
////// .release(name: "QA", xcconfig: Path.project("QA")),
123+
//// .release(name: "PROD", xcconfig: Path.project("PROD")),
124+
// ]
125+
//}

HMH_Tuist_iOS/Plugins/EnvPlugin/ProjectDescriptionHelpers/SettingDictionary+.swift

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,55 +18,68 @@ public extension SettingsDictionary {
1818
]
1919
]
2020

21+
///역할: Objective-C 카테고리 및 클래스를 정적으로 링크하도록 보장.
22+
///사용 사례: Objective-C 기반 라이브러리를 사용할 때 기본적으로 필요.
2123
static let baseSettings: Self = [
2224
"OTHER_LDFLAGS" : [
2325
"$(inherited)",
2426
"-ObjC"
2527
]
2628
]
2729

30+
///번들 ID를 설정합니다.
2831
func setProductBundleIdentifier(_ value: String = "com.iOS$(BUNDLE_ID_SUFFIX)") -> SettingsDictionary {
2932
merging(["PRODUCT_BUNDLE_IDENTIFIER": SettingValue(stringLiteral: value)])
3033
}
3134

35+
///앱 아이콘 이름을 설정합니다.
3236
func setAssetcatalogCompilerAppIconName(_ value: String = "AppIcon$(BUNDLE_ID_SUFFIX)") -> SettingsDictionary {
3337
merging(["ASSETCATALOG_COMPILER_APPICON_NAME": SettingValue(stringLiteral: value)])
3438
}
3539

40+
///활성화된 아키텍처만 빌드할지 설정 (ONLY_ACTIVE_ARCH).
3641
func setBuildActiveArchitectureOnly(_ value: Bool) -> SettingsDictionary {
3742
merging(["ONLY_ACTIVE_ARCH": SettingValue(stringLiteral: value ? "YES" : "NO")])
3843
}
3944

45+
///특정 SDK에서 제외할 아키텍처를 설정 (EXCLUDED_ARCHS).
4046
func setExcludedArchitectures(sdk: String = "iphonesimulator*", _ value: String = "arm64") -> SettingsDictionary {
4147
merging(["EXCLUDED_ARCHS[sdk=\(sdk)]": SettingValue(stringLiteral: value)])
4248
}
4349

50+
///Swift 활성 컴파일 조건을 설정 (SWIFT_ACTIVE_COMPILATION_CONDITIONS).
4451
func setSwiftActiveComplationConditions(_ value: String) -> SettingsDictionary {
4552
merging(["SWIFT_ACTIVE_COMPILATION_CONDITIONS": SettingValue(stringLiteral: value)])
4653
}
4754

55+
///사용자 경로를 항상 검색할지 설정 (ALWAYS_SEARCH_USER_PATHS).
4856
func setAlwaysSearchUserPath(_ value: String = "NO") -> SettingsDictionary {
4957
merging(["ALWAYS_SEARCH_USER_PATHS": SettingValue(stringLiteral: value)])
5058
}
5159

60+
///복사 과정에서 디버그 심볼 제거 여부를 설정 (COPY_PHASE_STRIP).
5261
func setStripDebugSymbolsDuringCopy(_ value: String = "NO") -> SettingsDictionary {
5362
merging(["COPY_PHASE_STRIP": SettingValue(stringLiteral: value)])
5463
}
5564

65+
///동적 라이브러리 기본 설치 경로 설정 (DYLIB_INSTALL_NAME_BASE).
5666
func setDynamicLibraryInstallNameBase(_ value: String = "@rpath") -> SettingsDictionary {
5767
merging(["DYLIB_INSTALL_NAME_BASE": SettingValue(stringLiteral: value)])
5868
}
5969

70+
///설치 대상 여부를 설정 (SKIP_INSTALL).
6071
func setSkipInstall(_ value: Bool = false) -> SettingsDictionary {
6172
merging(["SKIP_INSTALL": SettingValue(stringLiteral: value ? "YES" : "NO")])
6273
}
6374

75+
///코드 서명을 수동으로 설정합니다.
6476
func setCodeSignManual() -> SettingsDictionary {
6577
merging(["CODE_SIGN_STYLE": SettingValue(stringLiteral: "Manual")])
6678
.merging(["DEVELOPMENT_TEAM": SettingValue(stringLiteral: "9K86FQHDLU")])
6779
.merging(["CODE_SIGN_IDENTITY": SettingValue(stringLiteral: "$(CODE_SIGN_IDENTITY)")])
6880
}
6981

82+
///프로비저닝 프로파일 설정.
7083
func setProvisioning() -> SettingsDictionary {
7184
merging(["PROVISIONING_PROFILE_SPECIFIER": SettingValue(stringLiteral: "$(APP_PROVISIONING_PROFILE)")])
7285
.merging(["PROVISIONING_PROFILE": SettingValue(stringLiteral: "$(APP_PROVISIONING_PROFILE)")])

0 commit comments

Comments
 (0)