From 9bc29df2127d4d0dfbfe07722a8e1cc7b1ef1c89 Mon Sep 17 00:00:00 2001 From: Roy Date: Tue, 29 Jul 2025 11:01:38 +0900 Subject: [PATCH 1/5] =?UTF-8?q?=F0=9F=AA=9B[chore]:=20=20=20=EB=82=B4?= =?UTF-8?q?=EB=B6=80=20=20=EC=BD=94=EB=93=9C=20=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * stage, prod 추가 # Conflicts: # Plugins/ProjectTemplatePlugin/ProjectDescriptionHelpers/Project+Templete/Extension+String.swift # Plugins/ProjectTemplatePlugin/ProjectDescriptionHelpers/Project+Templete/Project+Template.swift # Plugins/ProjectTemplatePlugin/ProjectDescriptionHelpers/Setting/Project+Settings.swift --- Gemfile | 2 +- Gemfile.lock | 4 +- Projects/Core/Core/Project.swift | 2 +- Projects/Core/Data/API/Project.swift | 2 +- Projects/Core/Data/Model/Project.swift | 2 +- Projects/Core/Data/Repository/Project.swift | 2 +- Projects/Core/Data/Service/Project.swift | 2 +- .../Core/Domain/DomainInterface/Project.swift | 2 +- Projects/Core/Domain/UseCase/Project.swift | 2 +- .../Core/Network/Foundations/Project.swift | 2 +- Projects/Core/Network/Networks/Project.swift | 2 +- .../Core/Network/ThirdPartys/Project.swift | 2 +- .../Presentation/Presentation/Project.swift | 2 +- Projects/Shared/DesignSystem/Project.swift | 2 +- Projects/Shared/Shareds/Project.swift | 2 +- Projects/Shared/ThirdParty/Project.swift | 2 +- Projects/Shared/Utill/Project.swift | 2 +- fastlane/Fastfile | 48 +++---------------- 18 files changed, 25 insertions(+), 59 deletions(-) diff --git a/Gemfile b/Gemfile index 6fc2bbae..291c243d 100644 --- a/Gemfile +++ b/Gemfile @@ -1,6 +1,6 @@ source "https://rubygems.org" -gem 'fastlane', '~> 2.227.1' +gem 'fastlane', '~> 2.228.0' #em 'google-cloud-env', '< 2.0.0' # 충돌 방지 gem "logger" gem "abbrev" diff --git a/Gemfile.lock b/Gemfile.lock index 16616aa7..9b584278 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -71,7 +71,7 @@ GEM faraday_middleware (1.2.1) faraday (~> 1.0) fastimage (2.4.0) - fastlane (2.227.1) + fastlane (2.228.0) CFPropertyList (>= 2.3, < 4.0.0) addressable (>= 2.8, < 3.0.0) artifactory (~> 3.0) @@ -223,7 +223,7 @@ PLATFORMS DEPENDENCIES abbrev - fastlane (~> 2.227.1) + fastlane (~> 2.228.0) logger mutex_m diff --git a/Projects/Core/Core/Project.swift b/Projects/Core/Core/Project.swift index 33c99428..03a74e37 100644 --- a/Projects/Core/Core/Project.swift +++ b/Projects/Core/Core/Project.swift @@ -5,7 +5,7 @@ import ProjectTemplatePlugin import ProjectTemplatePlugin import DependencyPackagePlugin -let project = Project.makeAppModule( +let project = Project.makeModule( name: "Core", bundleId: .appBundleID(name: ".Core"), product: .staticFramework, diff --git a/Projects/Core/Data/API/Project.swift b/Projects/Core/Data/API/Project.swift index 4c8ab57f..710105e9 100644 --- a/Projects/Core/Data/API/Project.swift +++ b/Projects/Core/Data/API/Project.swift @@ -4,7 +4,7 @@ import DependencyPlugin import ProjectTemplatePlugin import DependencyPackagePlugin -let project = Project.makeAppModule( +let project = Project.makeModule( name: "API", bundleId: .appBundleID(name: ".API"), product: .staticFramework, diff --git a/Projects/Core/Data/Model/Project.swift b/Projects/Core/Data/Model/Project.swift index 9f029aee..f6d46a6f 100644 --- a/Projects/Core/Data/Model/Project.swift +++ b/Projects/Core/Data/Model/Project.swift @@ -5,7 +5,7 @@ import ProjectTemplatePlugin import ProjectTemplatePlugin import DependencyPackagePlugin -let project = Project.makeAppModule( +let project = Project.makeModule( name: "Model", bundleId: .appBundleID(name: ".Model"), product: .staticFramework, diff --git a/Projects/Core/Data/Repository/Project.swift b/Projects/Core/Data/Repository/Project.swift index 062ef052..80aaf791 100644 --- a/Projects/Core/Data/Repository/Project.swift +++ b/Projects/Core/Data/Repository/Project.swift @@ -5,7 +5,7 @@ import ProjectTemplatePlugin import ProjectTemplatePlugin import DependencyPackagePlugin -let project = Project.makeAppModule( +let project = Project.makeModule( name: "Repository", bundleId: .appBundleID(name: ".Repository"), product: .staticFramework, diff --git a/Projects/Core/Data/Service/Project.swift b/Projects/Core/Data/Service/Project.swift index 9fd93849..22d248bb 100644 --- a/Projects/Core/Data/Service/Project.swift +++ b/Projects/Core/Data/Service/Project.swift @@ -3,7 +3,7 @@ import ProjectDescription import DependencyPlugin import ProjectTemplatePlugin -let project = Project.makeAppModule( +let project = Project.makeModule( name: "Service", bundleId: .appBundleID(name: ".Service"), product: .staticFramework, diff --git a/Projects/Core/Domain/DomainInterface/Project.swift b/Projects/Core/Domain/DomainInterface/Project.swift index c058ef9a..f6719428 100644 --- a/Projects/Core/Domain/DomainInterface/Project.swift +++ b/Projects/Core/Domain/DomainInterface/Project.swift @@ -5,7 +5,7 @@ import ProjectTemplatePlugin import ProjectTemplatePlugin import DependencyPackagePlugin -let project = Project.makeAppModule( +let project = Project.makeModule( name: "DomainInterface", bundleId: .appBundleID(name: ".DomainInterface"), product: .staticFramework, diff --git a/Projects/Core/Domain/UseCase/Project.swift b/Projects/Core/Domain/UseCase/Project.swift index 912920ab..cfc8dc43 100644 --- a/Projects/Core/Domain/UseCase/Project.swift +++ b/Projects/Core/Domain/UseCase/Project.swift @@ -5,7 +5,7 @@ import ProjectTemplatePlugin import ProjectTemplatePlugin import DependencyPackagePlugin -let project = Project.makeAppModule( +let project = Project.makeModule( name: "UseCase", bundleId: .appBundleID(name: ".UseCase"), product: .staticFramework, diff --git a/Projects/Core/Network/Foundations/Project.swift b/Projects/Core/Network/Foundations/Project.swift index a5e3b782..60cfcf19 100644 --- a/Projects/Core/Network/Foundations/Project.swift +++ b/Projects/Core/Network/Foundations/Project.swift @@ -3,7 +3,7 @@ import ProjectDescription import DependencyPlugin import ProjectTemplatePlugin -let project = Project.makeAppModule( +let project = Project.makeModule( name: "Foundations", bundleId: .appBundleID(name: ".Foundations"), product: .staticFramework, diff --git a/Projects/Core/Network/Networks/Project.swift b/Projects/Core/Network/Networks/Project.swift index 6d7b92e6..2378de1c 100644 --- a/Projects/Core/Network/Networks/Project.swift +++ b/Projects/Core/Network/Networks/Project.swift @@ -4,7 +4,7 @@ import DependencyPlugin import ProjectTemplatePlugin import DependencyPackagePlugin -let project = Project.makeAppModule( +let project = Project.makeModule( name: "Networks", bundleId: .appBundleID(name: ".Networks"), product: .staticFramework, diff --git a/Projects/Core/Network/ThirdPartys/Project.swift b/Projects/Core/Network/ThirdPartys/Project.swift index 7679f08b..fa69794c 100644 --- a/Projects/Core/Network/ThirdPartys/Project.swift +++ b/Projects/Core/Network/ThirdPartys/Project.swift @@ -4,7 +4,7 @@ import DependencyPlugin import ProjectTemplatePlugin import DependencyPackagePlugin -let project = Project.makeAppModule( +let project = Project.makeModule( name: "ThirdPartys", bundleId: .appBundleID(name: ".ThirdPartys"), product: .staticFramework, diff --git a/Projects/Presentation/Presentation/Project.swift b/Projects/Presentation/Presentation/Project.swift index e7478206..f7d7f4d9 100644 --- a/Projects/Presentation/Presentation/Project.swift +++ b/Projects/Presentation/Presentation/Project.swift @@ -3,7 +3,7 @@ import ProjectDescription import DependencyPlugin import ProjectTemplatePlugin -let project = Project.makeAppModule( +let project = Project.makeModule( name: "Presentation", bundleId: .appBundleID(name: ".Presentation"), product: .staticFramework, diff --git a/Projects/Shared/DesignSystem/Project.swift b/Projects/Shared/DesignSystem/Project.swift index 2bf0ffd0..b16b9c08 100644 --- a/Projects/Shared/DesignSystem/Project.swift +++ b/Projects/Shared/DesignSystem/Project.swift @@ -4,7 +4,7 @@ import DependencyPlugin import ProjectTemplatePlugin import DependencyPackagePlugin -let project = Project.makeAppModule( +let project = Project.makeModule( name: "DesignSystem", bundleId: .appBundleID(name: ".DesignSystem"), product: .staticFramework, diff --git a/Projects/Shared/Shareds/Project.swift b/Projects/Shared/Shareds/Project.swift index 9eb71339..a47b3975 100644 --- a/Projects/Shared/Shareds/Project.swift +++ b/Projects/Shared/Shareds/Project.swift @@ -3,7 +3,7 @@ import ProjectDescription import DependencyPlugin import ProjectTemplatePlugin -let project = Project.makeAppModule( +let project = Project.makeModule( name: "Shareds", bundleId: .appBundleID(name: ".Shareds"), product: .staticFramework, diff --git a/Projects/Shared/ThirdParty/Project.swift b/Projects/Shared/ThirdParty/Project.swift index 0c465e3c..74a1ffdc 100644 --- a/Projects/Shared/ThirdParty/Project.swift +++ b/Projects/Shared/ThirdParty/Project.swift @@ -4,7 +4,7 @@ import DependencyPlugin import ProjectTemplatePlugin import DependencyPackagePlugin -let project = Project.makeAppModule( +let project = Project.makeModule( name: "ThirdParty", bundleId: .appBundleID(name: ".ThirdParty"), product: .staticFramework, diff --git a/Projects/Shared/Utill/Project.swift b/Projects/Shared/Utill/Project.swift index 8f68a1ac..55e078d5 100644 --- a/Projects/Shared/Utill/Project.swift +++ b/Projects/Shared/Utill/Project.swift @@ -4,7 +4,7 @@ import DependencyPlugin import ProjectTemplatePlugin import DependencyPackagePlugin -let project = Project.makeAppModule( +let project = Project.makeModule( name: "Utill", bundleId: .appBundleID(name: ".Utill"), product: .staticFramework, diff --git a/fastlane/Fastfile b/fastlane/Fastfile index a749b22b..56d21ed3 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -7,6 +7,7 @@ ENV["FASTLANE_XCODEBUILD_SETTINGS_TIMEOUT"] = "600" # 앱 관련 변수 APP_NAME = "DDDAttendance" SCHEME = "DDDAttendance" +STAGE_SCHEME = "DDDAttendance-Stage" BUNDLE_ID = "io.DDD.Attendance" OUTPUT_DIR = "./fastlane/output" IPA_FILENAME = "#{APP_NAME}.ipa" @@ -15,43 +16,11 @@ IPA_FILENAME = "#{APP_NAME}.ipa" APP_RELEASE_NAME = APP_NAME APP_RELEASE_SCHEME = SCHEME -platform :ios do - - # 🧹 output 폴더 정리 - private_lane :cleanup_output_folder do - sh "rm -rf #{OUTPUT_DIR}" - sh "mkdir -p #{OUTPUT_DIR}" - UI.message("🧹 기존 output 폴더 초기화 완료") - end - - # 🧼 ._ 파일 및 .DS_Store 제거 - private_lane :clean_symbols_from_ipa do |options| - ipa_path = options[:ipa_path] || File.expand_path("#{OUTPUT_DIR}/#{IPA_FILENAME}") - extract_dir = "#{OUTPUT_DIR}/extracted" - - unless File.exist?(ipa_path) - UI.user_error!("⚠️ IPA 파일이 존재하지 않습니다: #{ipa_path}") - end - - UI.message("✅ .ipa 생성 완료. ._Symbols 제거 작업 시작...") - - sh "rm -rf '#{extract_dir}'" - sh "unzip -q '#{ipa_path}' -d '#{extract_dir}'" - sh "find '#{extract_dir}' -name '._*' -delete" - sh "find '#{extract_dir}' -name '.DS_Store' -delete" +APP_STAGE_NAME = STAGE_SCHEME +APP_STAGE_SCHEME = STAGE_SCHEME - cleaned_ipa = ipa_path.sub(".ipa", "_clean.ipa") - - Dir.chdir(extract_dir) do - sh "zip -rX '#{cleaned_ipa}' Payload" - end - - sh "mv '#{ipa_path}' '#{ipa_path.sub('.ipa', '_original.ipa')}'" - sh "mv '#{cleaned_ipa}' '#{ipa_path}'" - sh "rm -rf '#{extract_dir}'" +platform :ios do - UI.success("🎉 ._Symbols 제거 완료! 최종 IPA 준비 완료.") - end # 📦 Debug 빌드 + 정리 desc "Build Debug IPA and clean ._Symbols" @@ -62,7 +31,7 @@ platform :ios do build_app( workspace: "#{APP_NAME}.xcworkspace", - scheme: "#{SCHEME}", + scheme: "DDDAttendance_Stage", output_directory: OUTPUT_DIR, output_name: IPA_FILENAME, export_method: "app-store", @@ -78,7 +47,6 @@ platform :ios do } ) - # clean_symbols_from_ipa(ipa_path: ipa_path) end # 📦 Release 빌드 + 정리 @@ -116,7 +84,7 @@ platform :ios do ipa_path = build_app( workspace: "#{APP_NAME}.xcworkspace", - scheme: "#{SCHEME}", + scheme: "#{APP_STAGE_SCHEME}", output_directory: OUTPUT_DIR, output_name: IPA_FILENAME, export_method: "app-store", @@ -132,12 +100,10 @@ platform :ios do } ) - # clean_symbols_from_ipa(ipa_path: ipa_path) - upload_to_testflight( ipa: ipa_path, changelog: "변경사항", - groups: ["DDD"], + groups: ["DDD", "ddd"], beta_app_description: "DDD 출석 앱입니다.", notify_external_testers: true, skip_waiting_for_build_processing: true From 178e2eb382a8a6281b324c7bf15456b920f3ff81 Mon Sep 17 00:00:00 2001 From: Roy Date: Wed, 30 Jul 2025 10:16:12 +0900 Subject: [PATCH 2/5] =?UTF-8?q?=F0=9F=AA=9B[chore]:=20=20=20QA=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Presentation/Sources/Auth/Login/Reducer/Login.swift | 5 ++++- .../Sources/Auth/SignUpPart/Reducer/SignUpPart.swift | 8 ++++---- .../ManagerProfile/View/ManagerProfileView.swift | 2 +- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/Projects/Presentation/Presentation/Sources/Auth/Login/Reducer/Login.swift b/Projects/Presentation/Presentation/Sources/Auth/Login/Reducer/Login.swift index d5e754b0..bd4f4926 100644 --- a/Projects/Presentation/Presentation/Sources/Auth/Login/Reducer/Login.swift +++ b/Projects/Presentation/Presentation/Sources/Auth/Login/Reducer/Login.swift @@ -251,7 +251,10 @@ public struct Login { if profileDTOData.isStaff == true { await send(.navigation(.presentCoreMemberMain)) - } else { + } else if profileDTOData.crew == .notTeam && profileDTOData.team == .notTeam { + await send(.navigation(.presentSignUpInviteView)) + } + else { await send(.navigation(.presentMemberMain)) } } diff --git a/Projects/Presentation/Presentation/Sources/Auth/SignUpPart/Reducer/SignUpPart.swift b/Projects/Presentation/Presentation/Sources/Auth/SignUpPart/Reducer/SignUpPart.swift index 42643076..c77a689b 100644 --- a/Projects/Presentation/Presentation/Sources/Auth/SignUpPart/Reducer/SignUpPart.swift +++ b/Projects/Presentation/Presentation/Sources/Auth/SignUpPart/Reducer/SignUpPart.swift @@ -87,9 +87,10 @@ public struct SignUpPart { action: View ) -> Effect { switch action { - + case .selectPartButton(let selectPart): if state.selectPart == selectPart { + // 동일한 파트 재선택 → 해제 state.selectPart = nil state.$userEntity.withLock { $0.role = nil } state.activeSelectPart = false @@ -97,10 +98,9 @@ public struct SignUpPart { } state.selectPart = selectPart - if let part = SelectPart(rawValue: selectPart.desc) { - state.$userEntity.withLock { $0.role = part } - } + state.$userEntity.withLock { $0.role = selectPart } state.activeSelectPart = true + #logDebug("selectPart", state.userEntity.role) return .none } } diff --git a/Projects/Presentation/Presentation/Sources/CoreMember/ManagerProfile/View/ManagerProfileView.swift b/Projects/Presentation/Presentation/Sources/CoreMember/ManagerProfile/View/ManagerProfileView.swift index 5b20db4f..d7cec3f9 100644 --- a/Projects/Presentation/Presentation/Sources/CoreMember/ManagerProfile/View/ManagerProfileView.swift +++ b/Projects/Presentation/Presentation/Sources/CoreMember/ManagerProfile/View/ManagerProfileView.swift @@ -206,7 +206,7 @@ extension ManagerProfileView { if isManaging { HStack { - Text("\(subTitle) / \(managingTeam)팀") + Text("\(subTitle) / \(managingTeam)") .pretendardCustomFont(textStyle: .title2NormalMedium) .foregroundStyle(.borderInverse) From dc530e68096dc22a71c58c12ee1a924fb714552e Mon Sep 17 00:00:00 2001 From: Roy Date: Wed, 30 Jul 2025 10:29:26 +0900 Subject: [PATCH 3/5] =?UTF-8?q?=F0=9F=AA=9B[chore]:=20=20=20QA=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Presentation/Sources/Auth/Login/Reducer/Login.swift | 2 +- .../Sources/CoreMember/QrCode/View/QRScannerView.swift | 4 ++-- .../Presentation/Sources/Splash/Reducer/Splash.swift | 2 ++ 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/Projects/Presentation/Presentation/Sources/Auth/Login/Reducer/Login.swift b/Projects/Presentation/Presentation/Sources/Auth/Login/Reducer/Login.swift index bd4f4926..eb3838ac 100644 --- a/Projects/Presentation/Presentation/Sources/Auth/Login/Reducer/Login.swift +++ b/Projects/Presentation/Presentation/Sources/Auth/Login/Reducer/Login.swift @@ -251,7 +251,7 @@ public struct Login { if profileDTOData.isStaff == true { await send(.navigation(.presentCoreMemberMain)) - } else if profileDTOData.crew == .notTeam && profileDTOData.team == .notTeam { + } else if profileDTOData.role == .all { await send(.navigation(.presentSignUpInviteView)) } else { diff --git a/Projects/Presentation/Presentation/Sources/CoreMember/QrCode/View/QRScannerView.swift b/Projects/Presentation/Presentation/Sources/CoreMember/QrCode/View/QRScannerView.swift index e6362b27..d7d24841 100644 --- a/Projects/Presentation/Presentation/Sources/CoreMember/QrCode/View/QRScannerView.swift +++ b/Projects/Presentation/Presentation/Sources/CoreMember/QrCode/View/QRScannerView.swift @@ -155,7 +155,7 @@ extension QRScannerView { Spacer() } - case .absent: + case .late: HStack(spacing: .zero){ Spacer() Image(asset: .qrCheck) @@ -174,7 +174,7 @@ extension QRScannerView { Spacer() } - case .late: + case .absent: HStack(spacing: .zero){ Spacer() Image(asset: .qrCheck) diff --git a/Projects/Presentation/Presentation/Sources/Splash/Reducer/Splash.swift b/Projects/Presentation/Presentation/Sources/Splash/Reducer/Splash.swift index 7fc5a25a..c2121eb1 100644 --- a/Projects/Presentation/Presentation/Sources/Splash/Reducer/Splash.swift +++ b/Projects/Presentation/Presentation/Sources/Splash/Reducer/Splash.swift @@ -123,6 +123,8 @@ public struct Splash { if profileDTOData.isStaff == true { await send(.navigation(.presentCoreMember)) + } else if profileDTOData.role == .all { + await send(.navigation(.presentLogin)) } else { await send(.navigation(.presentMember)) } From d610ff7c8eec42e64fc20ec5655e0130dad292cb Mon Sep 17 00:00:00 2001 From: Roy Date: Sat, 29 Nov 2025 05:25:39 +0900 Subject: [PATCH 4/5] Based on the git status and diff, this is a major architectural refactoring that: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. Restructures the project hierarchy by moving modules from `Projects/Core/Data/` to `Projects/Data/` 2. Reorganizes presentation layer by splitting into separate modules (Auth, Management, Member, Profile, Splash) 3. Updates dependency paths and module organization 4. Renames CoreMember to Management throughout the codebase 5. Updates plugin configurations and project templates Following the existing commit message pattern with the 🪛[chore] format: 🪛[chore]: 프로젝트 구조 리팩토링 - 모듈 분리 및 경로 재구성 --- .../TargetDependency+Module/Modules.swift | 3 +- .../Path+Modules.swift | 12 +- .../Project+Templete/Project+Template.swift | 76 +++--- .../Di/ Extension+RegisterModule..swift | 1 - .../Sources/Di/Extension+RegisterModule.swift | 133 ---------- Projects/App/Sources/Reducer/AppReducer.swift | 8 +- Projects/App/Sources/View/AppView.swift | 2 +- .../Sources/CoreMemberTest.swift | 0 .../Sources/DDDAttendance.xctestplan | 0 .../Sources/DDDAttendanceTests.swift | 0 .../Sources/CoreExported/CoreExported.swift | 3 + .../{CoreTests => Tests}/Sources/Test.swift | 0 Projects/{Core => }/Data/API/Project.swift | 0 .../API/Attandance/AttendanceAPI.swift | 0 .../Data/API/Sources/API/Auth/AuthAPI.swift | 0 .../Data/API/Sources/API/Base/BaseAPI.swift | 0 .../API/Sources/API/Profile/ProfileAPI.swift | 0 .../Data/API/Sources/API/QR/QRAPI.swift | 0 .../Sources/API/Schedule/ScheduleAPI.swift | 0 .../API/Sources/API/SignUp/SignUpAPI.swift | 0 .../API/Tests}/Sources/Test.swift | 0 Projects/{Core => }/Data/Model/Project.swift | 0 .../AttendanceCheck/AttendanceListModel.swift | 0 .../DTO/AttendanceListResponseDTOModel.swift | 0 .../Extension+AttendanceCheckDTOModel.swift | 0 .../AttendanceCountResponseDTO.swift | 0 .../AttendanceCountResponseModel.swift | 0 .../DTO/AttendanceCountDTOModel.swift | 0 .../Mapper/AttendanceCountResponseDTO+.swift | 0 .../Sources/Attendance/AttendanceDTO.swift | 0 .../Sources/Attendance/AttendanceModel.swift | 0 .../Sources/Attendance/AttendanceStatus.swift | 0 .../Sources/Attendance/AttendanceType.swift | 0 .../DTO/ModifyDTOAttendanceModel.swift | 0 .../Extension+ModifyDTOAttendanceModel.swift | 0 .../ModifyAttendanceModel.swift | 0 .../Sources/Auth/Entity/UserEntity.swift | 0 .../Auth/Login/DTO/LoginDTOModel.swift | 0 .../Auth/Login/Domain/LoginModel.swift | 0 .../Extension/Extension+LoginModel.swift | 0 .../OAuth/DTO/OAuthResponseDTOModel.swift | 0 .../Auth/OAuth/Domain/OAuthResponse.swift | 0 .../Extension+OAuthResponseModel.swift | 0 .../Data/Model/Sources/Auth/OAuthError.swift | 0 .../Model/Sources/Base/BaseResponse.swift | 0 .../Model/Sources/Base/BaseResponseDTO.swift | 0 .../Sources/Base/BaseResponseDomain.swift | 0 .../Model/Sources/Error/CustomError.swift | 0 .../Profile/DTO/ProfileResponseDTO.swift | 0 .../Profile/Mapper/ProfileResponseDTO+.swift | 0 .../Profile/ProfileResponseModel.swift | 0 .../QR/DTO/CreateQRCodeResponseDTO.swift | 0 .../Sources/QR/DTO/QRValidateDTOModel.swift | 0 .../Extension+QRValidateDTOModel.swift | 0 .../Data/Model/Sources/QR/QRValidate.swift | 0 .../Schedule/DTO/ScheduleDTOModel.swift | 0 .../Extension/Extension+ScheduleModel.swift | 0 .../Model/Sources/Schedule/Schedule.swift | 0 .../Sources/Schedule/ScheduleModel.swift | 0 .../CheckEmail/DTO/CheckEmailDTOModel.swift | 0 .../CheckEmail/Domain/CheckEmailModel.swift | 0 .../Extension/Extension+CheckEmailModel.swift | 0 .../InviteCode/DTO/InviteCodeDTOModel.swift | 0 .../InviteCode/Domain/InviteModel.swift | 0 .../Extension/Extension+InviteCodeModel.swift | 0 .../CoreMember/CoreMemberDTOSignUp.swift | 0 .../Extension+Member/Extension+Member.swift | 0 .../Model/Sources/SignUp/Member/Member.swift | 0 .../Member/Members/MemberDTOSignUp.swift | 0 .../Sources/SignUp/Member/UserDTOMember.swift | 0 .../Sources/SignUp/MemberType/Managing.swift | 0 .../SignUp/MemberType/MemberTeam.swift | 0 .../SignUp/MemberType/MemberType.swift | 0 .../SignUp/MemberType/SelectPart.swift | 0 .../SignUp/SignUpUser/DTO/SignUpModel.swift | 0 .../SignUpUser/Domain/SignUpDTOModel.swift | 0 .../Extension/Extension+SignUpModel.swift | 0 .../Model/Tests}/Sources/Test.swift | 0 .../{Core => }/Data/Repository/Project.swift | 3 +- .../Attendance/AttendanceRepositoryImpl.swift | 0 .../DefaultAttendanceRepositoryImpl.swift | 0 .../Auth/RefreshToken/AuthAPIManger.swift | 0 .../Auth/RefreshToken/AuthInterceptor.swift | 0 .../Auth/Repository/AuthRepositoryImpl.swift | 0 .../DefaultAuthRepositoryImpl.swift | 0 .../OAuth/Google/GoogleLoginManager.swift | 0 .../DefaultOAuthRepositoryImpl.swift | 0 .../Repository/OAuthRepositoryImpl.swift | 0 .../DefaultProfileRepositoryImpl.swift | 0 .../Profile/ProfileRepositoryImpl.swift | 0 .../QRCode/DefaultQRCodeRepositoryImpl.swift | 0 .../Sources/QRCode/QRCodeRepositoryImpl.swift | 0 .../DefaultScheduleRepositoryImpl.swift | 0 .../Schedule/ScheduleRepositoryImpl.swift | 0 .../SignUp/DefaultSignUpRepositoryImpl.swift | 0 .../Sources/SignUp/SignUpRepositoryImpl.swift | 0 .../Repository/Tests}/Sources/Test.swift | 0 .../{Core => }/Data/Service/Project.swift | 0 .../Service/ServiceTests/Sources/Test.swift | 0 .../Attendance/AttendanceService.swift | 0 .../Service/Sources/Auth/AuthService.swift | 0 .../Sources/Profile/ProfileService.swift | 0 .../Service/Sources/QRService/QRService.swift | 0 .../Sources/Schedule/ScheduleService.swift | 0 .../Sources/SignUp/SignUpService.swift | 0 .../Domain/DomainInterface/Project.swift | 0 .../Attandance/AttendanceInterface.swift | 0 .../Sources/Auth/AuthInterface.swift | 0 .../Exported/DomainInterfaceExported.swift | 0 .../Sources/OAuth/OAuthInterface.swift | 0 .../Sources/Profile/ProfileInterface.swift | 0 .../Sources/QRCode/QRCodeInterface.swift | 0 .../Sources/Schedule/ScheduleInterface.swift | 0 .../Sources/SignUp/SignUpInterface.swift | 0 .../DomainInterface/Tests}/Sources/Test.swift | 0 .../{Core => }/Domain/UseCase/Project.swift | 3 +- .../Attendance/AttendanceUseCaseImpl.swift | 0 .../Sources/Auth/AuthUseCaseImpl.swift | 0 .../Sources/OAuth/OAuthUseCaseImpl.swift | 0 .../Sources/Profile/ProfileUseCaseImpl.swift | 0 .../Sources/QRCode/QRCodeUseCaseImpl.swift | 0 .../Schedule/ScheduleUseCaseImpl.swift | 0 .../Sources/SignUp/ SignUpUseCaseImpl.swift | 0 .../UseCase/Tests}/Sources/Test.swift | 0 .../FoundationsTests/Sources/Test.swift | 0 .../Network/Foundations/Project.swift | 0 .../Sources/APIHeader/APIHeader.swift | 0 .../Sources/APIHeader/APIHeaderManger.swift | 0 .../Networks/NetworksTests/Sources/Test.swift | 0 .../{Core => }/Network/Networks/Project.swift | 0 .../Networks/Sources/NetworkingExport.swift | 1 - .../Network/ThirdPartys/Project.swift | 0 .../Sources/ThirdPartysExport.swift | 0 .../ThirdPartysTests/Sources/Test.swift | 0 Projects/Presentation/Auth/Project.swift | 23 ++ .../Reducer/AuthCoordinator.swift | 0 .../View/AuthCoordinatorView.swift | 0 .../AppleLoginManger/AppleLoginManager.swift | 0 .../Sources}/Login/Reducer/Login.swift | 0 .../Sources}/Login/View/LoginView.swift | 0 .../Reducer/SignUpInviteCode.swift | 0 .../View/SignUpInviteCodeView.swift | 0 .../SignUpName/Reducer/SignUpName.swift | 0 .../SignUpName/View/SignUpNameView.swift | 0 .../SignUpPart/Reducer/SignUpPart.swift | 0 .../SignUpPart/View/SignUpPartView.swift | 1 + .../Reducer/SignUpSelectManging.swift | 0 .../View/SignUpSelectMangingView.swift | 0 .../Reducer/SignUpSelectTeam.swift | 0 .../View/SignUpSelectTeamView.swift | 0 .../Auth/Tests/Sources/Test.swift | 8 + .../ManagementTests/Sources/Test.swift | 8 + .../Presentation/Management/Project.swift | 24 ++ .../Reducer/AttendanceCheck.swift | 0 .../View/AttendanceCheckView.swift | 0 .../Reducer/ManagementCoordinator.swift} | 16 +- .../View/ManagementCoordinatorView.swift} | 15 +- .../CoreMemberMain/Reducer/Management.swift} | 4 +- .../CoreMemberMain/View/ManagementView.swift} | 10 +- .../QRScannerRepresentable.swift | 0 .../Sources}/QrCode/Reducer/QRCode.swift | 0 .../Sources}/QrCode/View/QRScannerView.swift | 0 .../Reducer/ScheduleManager.swift | 0 .../ScheduleManager/View/ScheduleView.swift | 2 + .../Member/MemberTests/Sources/Test.swift | 8 + Projects/Presentation/Member/Project.swift | 25 ++ .../Reducer/MemberCoordinator.swift | 3 +- .../View/MemberCoordinatorView.swift | 3 +- .../MemberMain/Reducer/MemberMain.swift | 0 .../MemberMain/View/MemberMainView.swift | 0 .../QRCode/Reducer/MemberQRCode.swift | 0 .../QRCode/View/MemberQRCodeView.swift | 0 .../Presentation/Presentation/Project.swift | 8 +- .../Exported/PresentationExported.swift | 5 + .../Profile/ProfileTests/Sources/Test.swift | 8 + Projects/Presentation/Profile/Project.swift | 24 ++ .../Sources/CreateApp/Reducer/CreateApp.swift | 0 .../CreateApp/View/CreateAppView.swift | 2 + .../Main/Reducer/ProfileReducer.swift} | 4 +- .../Sources/Main/View/ProfileView.swift} | 9 +- Projects/Presentation/Splash/Project.swift | 24 ++ .../Sources}/Reducer/Splash.swift | 1 - .../Sources}/View/SplashView.swift | 0 .../Splash/Tests/Sources/Test.swift | 8 + Tuist/Templates/Module/Project.stencil | 2 +- TuistTool.swift | 241 ++++++++++++++---- make | Bin 228280 -> 245224 bytes 187 files changed, 466 insertions(+), 265 deletions(-) delete mode 100644 Projects/App/Sources/Di/Extension+RegisterModule.swift rename Projects/App/{DDDAttendanceTests => Tests}/Sources/CoreMemberTest.swift (100%) rename Projects/App/{DDDAttendanceTests => Tests}/Sources/DDDAttendance.xctestplan (100%) rename Projects/App/{DDDAttendanceTests => Tests}/Sources/DDDAttendanceTests.swift (100%) rename Projects/Core/Core/{CoreTests => Tests}/Sources/Test.swift (100%) rename Projects/{Core => }/Data/API/Project.swift (100%) rename Projects/{Core => }/Data/API/Sources/API/Attandance/AttendanceAPI.swift (100%) rename Projects/{Core => }/Data/API/Sources/API/Auth/AuthAPI.swift (100%) rename Projects/{Core => }/Data/API/Sources/API/Base/BaseAPI.swift (100%) rename Projects/{Core => }/Data/API/Sources/API/Profile/ProfileAPI.swift (100%) rename Projects/{Core => }/Data/API/Sources/API/QR/QRAPI.swift (100%) rename Projects/{Core => }/Data/API/Sources/API/Schedule/ScheduleAPI.swift (100%) rename Projects/{Core => }/Data/API/Sources/API/SignUp/SignUpAPI.swift (100%) rename Projects/{Core/Data/API/APITests => Data/API/Tests}/Sources/Test.swift (100%) rename Projects/{Core => }/Data/Model/Project.swift (100%) rename Projects/{Core => }/Data/Model/Sources/Attendance/AttendanceCheck/AttendanceListModel.swift (100%) rename Projects/{Core => }/Data/Model/Sources/Attendance/AttendanceCheck/DTO/AttendanceListResponseDTOModel.swift (100%) rename Projects/{Core => }/Data/Model/Sources/Attendance/AttendanceCheck/Extension/Extension+AttendanceCheckDTOModel.swift (100%) rename Projects/{Core => }/Data/Model/Sources/Attendance/AttendanceCount/AttendanceCountResponseDTO.swift (100%) rename Projects/{Core => }/Data/Model/Sources/Attendance/AttendanceCount/AttendanceCountResponseModel.swift (100%) rename Projects/{Core => }/Data/Model/Sources/Attendance/AttendanceCount/DTO/AttendanceCountDTOModel.swift (100%) rename Projects/{Core => }/Data/Model/Sources/Attendance/AttendanceCount/Mapper/AttendanceCountResponseDTO+.swift (100%) rename Projects/{Core => }/Data/Model/Sources/Attendance/AttendanceDTO.swift (100%) rename Projects/{Core => }/Data/Model/Sources/Attendance/AttendanceModel.swift (100%) rename Projects/{Core => }/Data/Model/Sources/Attendance/AttendanceStatus.swift (100%) rename Projects/{Core => }/Data/Model/Sources/Attendance/AttendanceType.swift (100%) rename Projects/{Core => }/Data/Model/Sources/Attendance/ModifyAttendance/DTO/ModifyDTOAttendanceModel.swift (100%) rename Projects/{Core => }/Data/Model/Sources/Attendance/ModifyAttendance/Extension/Extension+ModifyDTOAttendanceModel.swift (100%) rename Projects/{Core => }/Data/Model/Sources/Attendance/ModifyAttendance/ModifyAttendanceModel.swift (100%) rename Projects/{Core => }/Data/Model/Sources/Auth/Entity/UserEntity.swift (100%) rename Projects/{Core => }/Data/Model/Sources/Auth/Login/DTO/LoginDTOModel.swift (100%) rename Projects/{Core => }/Data/Model/Sources/Auth/Login/Domain/LoginModel.swift (100%) rename Projects/{Core => }/Data/Model/Sources/Auth/Login/Extension/Extension+LoginModel.swift (100%) rename Projects/{Core => }/Data/Model/Sources/Auth/OAuth/DTO/OAuthResponseDTOModel.swift (100%) rename Projects/{Core => }/Data/Model/Sources/Auth/OAuth/Domain/OAuthResponse.swift (100%) rename Projects/{Core => }/Data/Model/Sources/Auth/OAuth/Extension/Extension+OAuthResponseModel.swift (100%) rename Projects/{Core => }/Data/Model/Sources/Auth/OAuthError.swift (100%) rename Projects/{Core => }/Data/Model/Sources/Base/BaseResponse.swift (100%) rename Projects/{Core => }/Data/Model/Sources/Base/BaseResponseDTO.swift (100%) rename Projects/{Core => }/Data/Model/Sources/Base/BaseResponseDomain.swift (100%) rename Projects/{Core => }/Data/Model/Sources/Error/CustomError.swift (100%) rename Projects/{Core => }/Data/Model/Sources/Profile/DTO/ProfileResponseDTO.swift (100%) rename Projects/{Core => }/Data/Model/Sources/Profile/Mapper/ProfileResponseDTO+.swift (100%) rename Projects/{Core => }/Data/Model/Sources/Profile/ProfileResponseModel.swift (100%) rename Projects/{Core => }/Data/Model/Sources/QR/DTO/CreateQRCodeResponseDTO.swift (100%) rename Projects/{Core => }/Data/Model/Sources/QR/DTO/QRValidateDTOModel.swift (100%) rename Projects/{Core => }/Data/Model/Sources/QR/Extension/Extension+QRValidateDTOModel.swift (100%) rename Projects/{Core => }/Data/Model/Sources/QR/QRValidate.swift (100%) rename Projects/{Core => }/Data/Model/Sources/Schedule/DTO/ScheduleDTOModel.swift (100%) rename Projects/{Core => }/Data/Model/Sources/Schedule/Extension/Extension+ScheduleModel.swift (100%) rename Projects/{Core => }/Data/Model/Sources/Schedule/Schedule.swift (100%) rename Projects/{Core => }/Data/Model/Sources/Schedule/ScheduleModel.swift (100%) rename Projects/{Core => }/Data/Model/Sources/SignUp/CheckEmail/DTO/CheckEmailDTOModel.swift (100%) rename Projects/{Core => }/Data/Model/Sources/SignUp/CheckEmail/Domain/CheckEmailModel.swift (100%) rename Projects/{Core => }/Data/Model/Sources/SignUp/CheckEmail/Extension/Extension+CheckEmailModel.swift (100%) rename Projects/{Core => }/Data/Model/Sources/SignUp/InviteCode/DTO/InviteCodeDTOModel.swift (100%) rename Projects/{Core => }/Data/Model/Sources/SignUp/InviteCode/Domain/InviteModel.swift (100%) rename Projects/{Core => }/Data/Model/Sources/SignUp/InviteCode/Extension/Extension+InviteCodeModel.swift (100%) rename Projects/{Core => }/Data/Model/Sources/SignUp/Member/CoreMember/CoreMemberDTOSignUp.swift (100%) rename Projects/{Core => }/Data/Model/Sources/SignUp/Member/Extension+Member/Extension+Member.swift (100%) rename Projects/{Core => }/Data/Model/Sources/SignUp/Member/Member.swift (100%) rename Projects/{Core => }/Data/Model/Sources/SignUp/Member/Members/MemberDTOSignUp.swift (100%) rename Projects/{Core => }/Data/Model/Sources/SignUp/Member/UserDTOMember.swift (100%) rename Projects/{Core => }/Data/Model/Sources/SignUp/MemberType/Managing.swift (100%) rename Projects/{Core => }/Data/Model/Sources/SignUp/MemberType/MemberTeam.swift (100%) rename Projects/{Core => }/Data/Model/Sources/SignUp/MemberType/MemberType.swift (100%) rename Projects/{Core => }/Data/Model/Sources/SignUp/MemberType/SelectPart.swift (100%) rename Projects/{Core => }/Data/Model/Sources/SignUp/SignUpUser/DTO/SignUpModel.swift (100%) rename Projects/{Core => }/Data/Model/Sources/SignUp/SignUpUser/Domain/SignUpDTOModel.swift (100%) rename Projects/{Core => }/Data/Model/Sources/SignUp/SignUpUser/Extension/Extension+SignUpModel.swift (100%) rename Projects/{Core/Data/Model/ModelTests => Data/Model/Tests}/Sources/Test.swift (100%) rename Projects/{Core => }/Data/Repository/Project.swift (90%) rename Projects/{Core => }/Data/Repository/Sources/Attendance/AttendanceRepositoryImpl.swift (100%) rename Projects/{Core => }/Data/Repository/Sources/Attendance/DefaultAttendanceRepositoryImpl.swift (100%) rename Projects/{Core => }/Data/Repository/Sources/Auth/RefreshToken/AuthAPIManger.swift (100%) rename Projects/{Core => }/Data/Repository/Sources/Auth/RefreshToken/AuthInterceptor.swift (100%) rename Projects/{Core => }/Data/Repository/Sources/Auth/Repository/AuthRepositoryImpl.swift (100%) rename Projects/{Core => }/Data/Repository/Sources/Auth/Repository/DefaultAuthRepositoryImpl.swift (100%) rename Projects/{Core => }/Data/Repository/Sources/OAuth/Google/GoogleLoginManager.swift (100%) rename Projects/{Core => }/Data/Repository/Sources/OAuth/Repository/DefaultOAuthRepositoryImpl.swift (100%) rename Projects/{Core => }/Data/Repository/Sources/OAuth/Repository/OAuthRepositoryImpl.swift (100%) rename Projects/{Core => }/Data/Repository/Sources/Profile/DefaultProfileRepositoryImpl.swift (100%) rename Projects/{Core => }/Data/Repository/Sources/Profile/ProfileRepositoryImpl.swift (100%) rename Projects/{Core => }/Data/Repository/Sources/QRCode/DefaultQRCodeRepositoryImpl.swift (100%) rename Projects/{Core => }/Data/Repository/Sources/QRCode/QRCodeRepositoryImpl.swift (100%) rename Projects/{Core => }/Data/Repository/Sources/Schedule/DefaultScheduleRepositoryImpl.swift (100%) rename Projects/{Core => }/Data/Repository/Sources/Schedule/ScheduleRepositoryImpl.swift (100%) rename Projects/{Core => }/Data/Repository/Sources/SignUp/DefaultSignUpRepositoryImpl.swift (100%) rename Projects/{Core => }/Data/Repository/Sources/SignUp/SignUpRepositoryImpl.swift (100%) rename Projects/{Core/Data/Repository/RepositoryTests => Data/Repository/Tests}/Sources/Test.swift (100%) rename Projects/{Core => }/Data/Service/Project.swift (100%) rename Projects/{Core => }/Data/Service/ServiceTests/Sources/Test.swift (100%) rename Projects/{Core => }/Data/Service/Sources/Attendance/AttendanceService.swift (100%) rename Projects/{Core => }/Data/Service/Sources/Auth/AuthService.swift (100%) rename Projects/{Core => }/Data/Service/Sources/Profile/ProfileService.swift (100%) rename Projects/{Core => }/Data/Service/Sources/QRService/QRService.swift (100%) rename Projects/{Core => }/Data/Service/Sources/Schedule/ScheduleService.swift (100%) rename Projects/{Core => }/Data/Service/Sources/SignUp/SignUpService.swift (100%) rename Projects/{Core => }/Domain/DomainInterface/Project.swift (100%) rename Projects/{Core => }/Domain/DomainInterface/Sources/Attandance/AttendanceInterface.swift (100%) rename Projects/{Core => }/Domain/DomainInterface/Sources/Auth/AuthInterface.swift (100%) rename Projects/{Core => }/Domain/DomainInterface/Sources/Exported/DomainInterfaceExported.swift (100%) rename Projects/{Core => }/Domain/DomainInterface/Sources/OAuth/OAuthInterface.swift (100%) rename Projects/{Core => }/Domain/DomainInterface/Sources/Profile/ProfileInterface.swift (100%) rename Projects/{Core => }/Domain/DomainInterface/Sources/QRCode/QRCodeInterface.swift (100%) rename Projects/{Core => }/Domain/DomainInterface/Sources/Schedule/ScheduleInterface.swift (100%) rename Projects/{Core => }/Domain/DomainInterface/Sources/SignUp/SignUpInterface.swift (100%) rename Projects/{Core/Domain/DomainInterface/DomainInterfaceTests => Domain/DomainInterface/Tests}/Sources/Test.swift (100%) rename Projects/{Core => }/Domain/UseCase/Project.swift (90%) rename Projects/{Core => }/Domain/UseCase/Sources/Attendance/AttendanceUseCaseImpl.swift (100%) rename Projects/{Core => }/Domain/UseCase/Sources/Auth/AuthUseCaseImpl.swift (100%) rename Projects/{Core => }/Domain/UseCase/Sources/OAuth/OAuthUseCaseImpl.swift (100%) rename Projects/{Core => }/Domain/UseCase/Sources/Profile/ProfileUseCaseImpl.swift (100%) rename Projects/{Core => }/Domain/UseCase/Sources/QRCode/QRCodeUseCaseImpl.swift (100%) rename Projects/{Core => }/Domain/UseCase/Sources/Schedule/ScheduleUseCaseImpl.swift (100%) rename Projects/{Core => }/Domain/UseCase/Sources/SignUp/ SignUpUseCaseImpl.swift (100%) rename Projects/{Core/Domain/UseCase/UseCaseTests => Domain/UseCase/Tests}/Sources/Test.swift (100%) rename Projects/{Core => }/Network/Foundations/FoundationsTests/Sources/Test.swift (100%) rename Projects/{Core => }/Network/Foundations/Project.swift (100%) rename Projects/{Core => }/Network/Foundations/Sources/APIHeader/APIHeader.swift (100%) rename Projects/{Core => }/Network/Foundations/Sources/APIHeader/APIHeaderManger.swift (100%) rename Projects/{Core => }/Network/Networks/NetworksTests/Sources/Test.swift (100%) rename Projects/{Core => }/Network/Networks/Project.swift (100%) rename Projects/{Core => }/Network/Networks/Sources/NetworkingExport.swift (86%) rename Projects/{Core => }/Network/ThirdPartys/Project.swift (100%) rename Projects/{Core => }/Network/ThirdPartys/Sources/ThirdPartysExport.swift (100%) rename Projects/{Core => }/Network/ThirdPartys/ThirdPartysTests/Sources/Test.swift (100%) create mode 100644 Projects/Presentation/Auth/Project.swift rename Projects/Presentation/{Presentation/Sources/Auth => Auth/Sources}/AuthCoordinator/Reducer/AuthCoordinator.swift (100%) rename Projects/Presentation/{Presentation/Sources/Auth => Auth/Sources}/AuthCoordinator/View/AuthCoordinatorView.swift (100%) rename Projects/Presentation/{Presentation/Sources/Auth => Auth/Sources}/Login/AppleLoginManger/AppleLoginManager.swift (100%) rename Projects/Presentation/{Presentation/Sources/Auth => Auth/Sources}/Login/Reducer/Login.swift (100%) rename Projects/Presentation/{Presentation/Sources/Auth => Auth/Sources}/Login/View/LoginView.swift (100%) rename Projects/Presentation/{Presentation/Sources/Auth => Auth/Sources}/SignUpInviteCode/Reducer/SignUpInviteCode.swift (100%) rename Projects/Presentation/{Presentation/Sources/Auth => Auth/Sources}/SignUpInviteCode/View/SignUpInviteCodeView.swift (100%) rename Projects/Presentation/{Presentation/Sources/Auth => Auth/Sources}/SignUpName/Reducer/SignUpName.swift (100%) rename Projects/Presentation/{Presentation/Sources/Auth => Auth/Sources}/SignUpName/View/SignUpNameView.swift (100%) rename Projects/Presentation/{Presentation/Sources/Auth => Auth/Sources}/SignUpPart/Reducer/SignUpPart.swift (100%) rename Projects/Presentation/{Presentation/Sources/Auth => Auth/Sources}/SignUpPart/View/SignUpPartView.swift (99%) rename Projects/Presentation/{Presentation/Sources/Auth => Auth/Sources}/SignUpSelectManging/Reducer/SignUpSelectManging.swift (100%) rename Projects/Presentation/{Presentation/Sources/Auth => Auth/Sources}/SignUpSelectManging/View/SignUpSelectMangingView.swift (100%) rename Projects/Presentation/{Presentation/Sources/Auth => Auth/Sources}/SignUpSelectTeam/Reducer/SignUpSelectTeam.swift (100%) rename Projects/Presentation/{Presentation/Sources/Auth => Auth/Sources}/SignUpSelectTeam/View/SignUpSelectTeamView.swift (100%) create mode 100644 Projects/Presentation/Auth/Tests/Sources/Test.swift create mode 100644 Projects/Presentation/Management/ManagementTests/Sources/Test.swift create mode 100644 Projects/Presentation/Management/Project.swift rename Projects/Presentation/{Presentation/Sources/CoreMember => Management/Sources}/AttendanceCheck/Reducer/AttendanceCheck.swift (100%) rename Projects/Presentation/{Presentation/Sources/CoreMember => Management/Sources}/AttendanceCheck/View/AttendanceCheckView.swift (100%) rename Projects/Presentation/{Presentation/Sources/CoreMember/Coordinator/Reducer/CoreMemberCoordinator.swift => Management/Sources/Coordinator/Reducer/ManagementCoordinator.swift} (93%) rename Projects/Presentation/{Presentation/Sources/CoreMember/Coordinator/View/CoreMemberCoordinatorView.swift => Management/Sources/Coordinator/View/ManagementCoordinatorView.swift} (65%) rename Projects/Presentation/{Presentation/Sources/CoreMember/CoreMemberMain/Reducer/CoreMember.swift => Management/Sources/CoreMemberMain/Reducer/Management.swift} (98%) rename Projects/Presentation/{Presentation/Sources/CoreMember/CoreMemberMain/View/CoreMemberMainView.swift => Management/Sources/CoreMemberMain/View/ManagementView.swift} (96%) rename Projects/Presentation/{Presentation/Sources/CoreMember => Management/Sources}/QrCode/QRScannerManger/QRScannerRepresentable.swift (100%) rename Projects/Presentation/{Presentation/Sources/CoreMember => Management/Sources}/QrCode/Reducer/QRCode.swift (100%) rename Projects/Presentation/{Presentation/Sources/CoreMember => Management/Sources}/QrCode/View/QRScannerView.swift (100%) rename Projects/Presentation/{Presentation/Sources/CoreMember => Management/Sources}/ScheduleManager/Reducer/ScheduleManager.swift (100%) rename Projects/Presentation/{Presentation/Sources/CoreMember => Management/Sources}/ScheduleManager/View/ScheduleView.swift (98%) create mode 100644 Projects/Presentation/Member/MemberTests/Sources/Test.swift create mode 100644 Projects/Presentation/Member/Project.swift rename Projects/Presentation/{Presentation/Sources/Member => Member/Sources}/Coordinator/Reducer/MemberCoordinator.swift (98%) rename Projects/Presentation/{Presentation/Sources/Member => Member/Sources}/Coordinator/View/MemberCoordinatorView.swift (94%) rename Projects/Presentation/{Presentation/Sources/Member => Member/Sources}/MemberMain/Reducer/MemberMain.swift (100%) rename Projects/Presentation/{Presentation/Sources/Member => Member/Sources}/MemberMain/View/MemberMainView.swift (100%) rename Projects/Presentation/{Presentation/Sources/Member => Member/Sources}/QRCode/Reducer/MemberQRCode.swift (100%) rename Projects/Presentation/{Presentation/Sources/Member => Member/Sources}/QRCode/View/MemberQRCodeView.swift (100%) create mode 100644 Projects/Presentation/Profile/ProfileTests/Sources/Test.swift create mode 100644 Projects/Presentation/Profile/Project.swift rename Projects/Presentation/{Presentation => Profile}/Sources/CreateApp/Reducer/CreateApp.swift (100%) rename Projects/Presentation/{Presentation => Profile}/Sources/CreateApp/View/CreateAppView.swift (98%) rename Projects/Presentation/{Presentation/Sources/CoreMember/ManagerProfile/Reducer/ManagerProfile.swift => Profile/Sources/Main/Reducer/ProfileReducer.swift} (98%) rename Projects/Presentation/{Presentation/Sources/CoreMember/ManagerProfile/View/ManagerProfileView.swift => Profile/Sources/Main/View/ProfileView.swift} (97%) create mode 100644 Projects/Presentation/Splash/Project.swift rename Projects/Presentation/{Presentation/Sources/Splash => Splash/Sources}/Reducer/Splash.swift (99%) rename Projects/Presentation/{Presentation/Sources/Splash => Splash/Sources}/View/SplashView.swift (100%) create mode 100644 Projects/Presentation/Splash/Tests/Sources/Test.swift mode change 100644 => 100755 TuistTool.swift diff --git a/Plugins/DependencyPlugin/ProjectDescriptionHelpers/TargetDependency+Module/Modules.swift b/Plugins/DependencyPlugin/ProjectDescriptionHelpers/TargetDependency+Module/Modules.swift index a424098a..b99bf728 100644 --- a/Plugins/DependencyPlugin/ProjectDescriptionHelpers/TargetDependency+Module/Modules.swift +++ b/Plugins/DependencyPlugin/ProjectDescriptionHelpers/TargetDependency+Module/Modules.swift @@ -34,11 +34,12 @@ public extension ModulePath { case Presentation case Splash case Auth + case Management case Profile case Member - case Management public static let name: String = "Presentation" + } } diff --git a/Plugins/DependencyPlugin/ProjectDescriptionHelpers/TargetDependency+Module/Path+Modules.swift b/Plugins/DependencyPlugin/ProjectDescriptionHelpers/TargetDependency+Module/Path+Modules.swift index e0dd00fd..8201d5e0 100644 --- a/Plugins/DependencyPlugin/ProjectDescriptionHelpers/TargetDependency+Module/Path+Modules.swift +++ b/Plugins/DependencyPlugin/ProjectDescriptionHelpers/TargetDependency+Module/Path+Modules.swift @@ -45,32 +45,32 @@ public extension ProjectDescription.Path { // MARK: - Network public extension ProjectDescription.Path { static var Networking: Self { - return .relativeToRoot("Projects/\(ModulePath.Cores.name)/\(ModulePath.Networks.name)") + return .relativeToRoot("Projects/\(ModulePath.Networks.name)") } static func Network(implementation module: ModulePath.Networks) -> Self { - return .relativeToRoot("Projects/\(ModulePath.Cores.name)/\(ModulePath.Networks.name)/\(module.rawValue)") + return .relativeToRoot("Projects/\(ModulePath.Networks.name)/\(module.rawValue)") } } // MARK: - Domain public extension ProjectDescription.Path { static var Domain: Self { - return .relativeToRoot("Projects/\(ModulePath.Cores.name)/\(ModulePath.Domains.name)") + return .relativeToRoot("Projects/\(ModulePath.Domains.name)") } static func Domain(implementation module: ModulePath.Domains) -> Self { - return .relativeToRoot("Projects/\(ModulePath.Cores.name)/\(ModulePath.Domains.name)/\(module.rawValue)") + return .relativeToRoot("Projects/\(ModulePath.Domains.name)/\(module.rawValue)") } } // MARK: - Data public extension ProjectDescription.Path { static var Data: Self { - return .relativeToRoot("Projects/\(ModulePath.Cores.name)/\(ModulePath.Datas.name)") + return .relativeToRoot("Projects/\(ModulePath.Datas.name)") } static func Data(implementation module: ModulePath.Datas) -> Self { - return .relativeToRoot("Projects/\(ModulePath.Cores.name)/\(ModulePath.Datas.name)/\(module.rawValue)") + return .relativeToRoot("Projects/\(ModulePath.Datas.name)/\(module.rawValue)") } } diff --git a/Plugins/ProjectTemplatePlugin/ProjectDescriptionHelpers/Project+Templete/Project+Template.swift b/Plugins/ProjectTemplatePlugin/ProjectDescriptionHelpers/Project+Templete/Project+Template.swift index 40b77546..c3453466 100644 --- a/Plugins/ProjectTemplatePlugin/ProjectDescriptionHelpers/Project+Templete/Project+Template.swift +++ b/Plugins/ProjectTemplatePlugin/ProjectDescriptionHelpers/Project+Templete/Project+Template.swift @@ -23,7 +23,8 @@ public extension Project { resources: ProjectDescription.ResourceFileElements? = nil, infoPlist: ProjectDescription.InfoPlist = .default, entitlements: ProjectDescription.Entitlements? = nil, - schemes: [ProjectDescription.Scheme] = [] + schemes: [ProjectDescription.Scheme] = [], + hasTests: Bool = false ) -> Project { let appTarget: Target = .target( @@ -84,18 +85,21 @@ public extension Project { dependencies: dependencies ) - let appTestTarget : Target = .target( - name: "\(name)Tests", - destinations: destinations, - product: .unitTests, - bundleId: "\(bundleId).\(name)Tests", - deploymentTargets: deploymentTarget, - infoPlist: .default, - sources: ["\(name)Tests/Sources/**"], - dependencies: [.target(name: name)] - ) - - let targets = [appTarget, appDevTarget, appStageTarget, appProdTarget ,appTestTarget] + var targets: [Target] = [appTarget, appDevTarget, appStageTarget, appProdTarget] + + if hasTests { + let appTestTarget : Target = .target( + name: "\(name)Tests", + destinations: destinations, + product: .unitTests, + bundleId: "\(bundleId).\(name)Tests", + deploymentTargets: deploymentTarget, + infoPlist: .default, + sources: ["Tests/Sources/**"], + dependencies: [.target(name: name)] + ) + targets.append(appTestTarget) + } return Project( name: name, @@ -125,7 +129,8 @@ public extension Project { resources: ProjectDescription.ResourceFileElements? = nil, infoPlist: ProjectDescription.InfoPlist = .default, entitlements: ProjectDescription.Entitlements? = nil, - schemes: [ProjectDescription.Scheme] = [] + schemes: [ProjectDescription.Scheme] = [], + hasTests: Bool = false ) -> Project { let appTarget: Target = .target( @@ -141,33 +146,22 @@ public extension Project { scripts: scripts, dependencies: dependencies ) - - let appDevTarget: Target = .target( - name: "\(name)-QA", - destinations: destinations, - product: product, - bundleId: "\(bundleId)", - deploymentTargets: deploymentTarget, - infoPlist: infoPlist, - sources: sources, - resources: resources, - entitlements: entitlements, - scripts: scripts, - dependencies: dependencies - ) - - let appTestTarget : Target = .target( - name: "\(name)Tests", - destinations: destinations, - product: .unitTests, - bundleId: "\(bundleId).\(name)Tests", - deploymentTargets: deploymentTarget, - infoPlist: .default, - sources: ["\(name)Tests/Sources/**"], - dependencies: [.target(name: name)] - ) - - let targets = [appTarget, appDevTarget, appTestTarget] + + var targets: [Target] = [appTarget] + + if hasTests { + let appTestTarget : Target = .target( + name: "\(name)Tests", + destinations: destinations, + product: .unitTests, + bundleId: "\(bundleId).\(name)Tests", + deploymentTargets: deploymentTarget, + infoPlist: .default, + sources: ["Tests/Sources/**"], + dependencies: [.target(name: name)] + ) + targets.append(appTestTarget) + } return Project( name: name, diff --git a/Projects/App/Sources/Di/ Extension+RegisterModule..swift b/Projects/App/Sources/Di/ Extension+RegisterModule..swift index 622da5f8..d7afb4ce 100644 --- a/Projects/App/Sources/Di/ Extension+RegisterModule..swift +++ b/Projects/App/Sources/Di/ Extension+RegisterModule..swift @@ -8,7 +8,6 @@ import WeaveDI import Core -import Repository public extension RegisterModule { diff --git a/Projects/App/Sources/Di/Extension+RegisterModule.swift b/Projects/App/Sources/Di/Extension+RegisterModule.swift deleted file mode 100644 index ce20a613..00000000 --- a/Projects/App/Sources/Di/Extension+RegisterModule.swift +++ /dev/null @@ -1,133 +0,0 @@ -// -// Extension+RegisterModule.swift -// DDDAttendance -// -// Created by Wonji Suh on 11/24/25. -// - - -import WeaveDI -import Core -import Repository - -public extension RegisterModule { - - var attendanceUseCaseImplModule: @Sendable () -> Module { - makeUseCaseWithRepository( - AttendanceInterface.self, - repositoryProtocol: AttendanceInterface.self, - repositoryFallback: DefaultAttendanceRepositoryImpl(), - factory: { repo in - AttendanceUseCaseImpl(repository: repo) - } - ) - } - - var attendanceRepositoryImplModule: @Sendable () -> Module { - makeDependency(AttendanceInterface.self) { - AttendanceRepositoryImpl() - } - } - - var authUseCaseImplModule: @Sendable () -> Module { - makeUseCaseWithRepository( - AuthInterface.self, - repositoryProtocol: AuthInterface.self, - repositoryFallback: DefaultAuthRepositoryImpl(), - factory: { repo in - AuthUseCaseImpl(repository: repo) - } - ) - } - - var authRepositoryImplModule: @Sendable () -> Module { - makeDependency(AuthInterface.self) { - AuthRepositoryImpl() - } - } - - var oAuthUseCaseImplModule: @Sendable () -> Module { - makeUseCaseWithRepository( - OAuthInterface.self, - repositoryProtocol: OAuthInterface.self, - repositoryFallback: DefaultOAuthRepositoryImpl(), - factory: { repo in - OAuthUseCaseImpl(repository: repo) - } - ) - } - - var oAuthRepositoryImplModule: @Sendable () -> Module { - makeDependency(OAuthInterface.self) { - OAuthRepositoryImpl() - } - } - - var profileUseCaseImplModule: @Sendable () -> Module { - makeUseCaseWithRepository( - ProfileInterface.self, - repositoryProtocol: ProfileInterface.self, - repositoryFallback: DefaultProfileRepositoryImpl(), - factory: { repo in - ProfileUseCaseImpl(repository: repo) - } - ) - } - - var profileRepositoryImplModule: @Sendable () -> Module { - makeDependency(ProfileInterface.self) { - ProfileRepositoryImpl() - } - } - - var qrCodeUseCaseImplModule: @Sendable () -> Module { - makeUseCaseWithRepository( - QRCodeInterface.self, - repositoryProtocol: QRCodeInterface.self, - repositoryFallback: DefaultQRCodeRepositoryImpl(), - factory: { repo in - QRCodeUseCaseImpl(repository: repo) - } - ) - } - - var qrCodeRepositoryImplModule: @Sendable () -> Module { - makeDependency(QRCodeInterface.self) { - QRCodeRepositoryImpl() - } - } - - var scheduleUseCaseImplModule: @Sendable () -> Module { - makeUseCaseWithRepository( - ScheduleInterface.self, - repositoryProtocol: ScheduleInterface.self, - repositoryFallback: DefaultScheduleRepositoryImpl(), - factory: { repo in - ScheduleUseCaseImpl(repository: repo) - } - ) - } - - var scheduleRepositoryImplModule: @Sendable () -> Module { - makeDependency(ScheduleInterface.self) { - ScheduleRepositoryImpl() - } - } - - var signUpUseCaseImplModoule: @Sendable () -> Module { - makeUseCaseWithRepository( - SignUpInterface.self, - repositoryProtocol: SignUpInterface.self, - repositoryFallback: DefaultSignUpRepositoryImpl(), - factory: { repo in - SignUpUseCaseImpl(repository: repo) - } - ) - } - - var signUpRepositoryImplModoule: @Sendable () -> Module { - makeDependency(SignUpInterface.self) { - SignUpRepositoryImpl() - } - } -} diff --git a/Projects/App/Sources/Reducer/AppReducer.swift b/Projects/App/Sources/Reducer/AppReducer.swift index 28368e0c..b1d88a65 100644 --- a/Projects/App/Sources/Reducer/AppReducer.swift +++ b/Projects/App/Sources/Reducer/AppReducer.swift @@ -16,7 +16,7 @@ struct AppReducer { enum State { case splash(Splash.State) case auth(AuthCoordinator.State) - case coreMember(CoreMemberCoordinator.State) + case coreMember(ManagementCoordinator.State) case member(MemberCoordinator.State) init() { @@ -36,7 +36,7 @@ struct AppReducer { case splash(Splash.Action) case auth(AuthCoordinator.Action) - case coreMember(CoreMemberCoordinator.Action) + case coreMember(ManagementCoordinator.Action) case member(MemberCoordinator.Action) } @@ -56,13 +56,15 @@ struct AppReducer { AuthCoordinator() } .ifCaseLet(\.coreMember, action: \.view.coreMember) { - CoreMemberCoordinator() + ManagementCoordinator() } .ifCaseLet(\.member, action: \.view.member) { MemberCoordinator() } } +} +extension AppReducer { func handleViewAction( _ state: inout State, action: View diff --git a/Projects/App/Sources/View/AppView.swift b/Projects/App/Sources/View/AppView.swift index 98551bdf..27b9a376 100644 --- a/Projects/App/Sources/View/AppView.swift +++ b/Projects/App/Sources/View/AppView.swift @@ -29,7 +29,7 @@ struct AppView: View { case .coreMember: if let store = store.scope(state: \.coreMember, action: \.view.coreMember) { - CoreMemberCoordinatorView(store: store) + ManagementCoordinatorView(store: store) } case .member: diff --git a/Projects/App/DDDAttendanceTests/Sources/CoreMemberTest.swift b/Projects/App/Tests/Sources/CoreMemberTest.swift similarity index 100% rename from Projects/App/DDDAttendanceTests/Sources/CoreMemberTest.swift rename to Projects/App/Tests/Sources/CoreMemberTest.swift diff --git a/Projects/App/DDDAttendanceTests/Sources/DDDAttendance.xctestplan b/Projects/App/Tests/Sources/DDDAttendance.xctestplan similarity index 100% rename from Projects/App/DDDAttendanceTests/Sources/DDDAttendance.xctestplan rename to Projects/App/Tests/Sources/DDDAttendance.xctestplan diff --git a/Projects/App/DDDAttendanceTests/Sources/DDDAttendanceTests.swift b/Projects/App/Tests/Sources/DDDAttendanceTests.swift similarity index 100% rename from Projects/App/DDDAttendanceTests/Sources/DDDAttendanceTests.swift rename to Projects/App/Tests/Sources/DDDAttendanceTests.swift diff --git a/Projects/Core/Core/Sources/CoreExported/CoreExported.swift b/Projects/Core/Core/Sources/CoreExported/CoreExported.swift index ac0b740b..790149bb 100644 --- a/Projects/Core/Core/Sources/CoreExported/CoreExported.swift +++ b/Projects/Core/Core/Sources/CoreExported/CoreExported.swift @@ -8,3 +8,6 @@ @_exported import Networks @_exported import UseCase @_exported import DomainInterface +@_exported import Model +@_exported import Repository + diff --git a/Projects/Core/Core/CoreTests/Sources/Test.swift b/Projects/Core/Core/Tests/Sources/Test.swift similarity index 100% rename from Projects/Core/Core/CoreTests/Sources/Test.swift rename to Projects/Core/Core/Tests/Sources/Test.swift diff --git a/Projects/Core/Data/API/Project.swift b/Projects/Data/API/Project.swift similarity index 100% rename from Projects/Core/Data/API/Project.swift rename to Projects/Data/API/Project.swift diff --git a/Projects/Core/Data/API/Sources/API/Attandance/AttendanceAPI.swift b/Projects/Data/API/Sources/API/Attandance/AttendanceAPI.swift similarity index 100% rename from Projects/Core/Data/API/Sources/API/Attandance/AttendanceAPI.swift rename to Projects/Data/API/Sources/API/Attandance/AttendanceAPI.swift diff --git a/Projects/Core/Data/API/Sources/API/Auth/AuthAPI.swift b/Projects/Data/API/Sources/API/Auth/AuthAPI.swift similarity index 100% rename from Projects/Core/Data/API/Sources/API/Auth/AuthAPI.swift rename to Projects/Data/API/Sources/API/Auth/AuthAPI.swift diff --git a/Projects/Core/Data/API/Sources/API/Base/BaseAPI.swift b/Projects/Data/API/Sources/API/Base/BaseAPI.swift similarity index 100% rename from Projects/Core/Data/API/Sources/API/Base/BaseAPI.swift rename to Projects/Data/API/Sources/API/Base/BaseAPI.swift diff --git a/Projects/Core/Data/API/Sources/API/Profile/ProfileAPI.swift b/Projects/Data/API/Sources/API/Profile/ProfileAPI.swift similarity index 100% rename from Projects/Core/Data/API/Sources/API/Profile/ProfileAPI.swift rename to Projects/Data/API/Sources/API/Profile/ProfileAPI.swift diff --git a/Projects/Core/Data/API/Sources/API/QR/QRAPI.swift b/Projects/Data/API/Sources/API/QR/QRAPI.swift similarity index 100% rename from Projects/Core/Data/API/Sources/API/QR/QRAPI.swift rename to Projects/Data/API/Sources/API/QR/QRAPI.swift diff --git a/Projects/Core/Data/API/Sources/API/Schedule/ScheduleAPI.swift b/Projects/Data/API/Sources/API/Schedule/ScheduleAPI.swift similarity index 100% rename from Projects/Core/Data/API/Sources/API/Schedule/ScheduleAPI.swift rename to Projects/Data/API/Sources/API/Schedule/ScheduleAPI.swift diff --git a/Projects/Core/Data/API/Sources/API/SignUp/SignUpAPI.swift b/Projects/Data/API/Sources/API/SignUp/SignUpAPI.swift similarity index 100% rename from Projects/Core/Data/API/Sources/API/SignUp/SignUpAPI.swift rename to Projects/Data/API/Sources/API/SignUp/SignUpAPI.swift diff --git a/Projects/Core/Data/API/APITests/Sources/Test.swift b/Projects/Data/API/Tests/Sources/Test.swift similarity index 100% rename from Projects/Core/Data/API/APITests/Sources/Test.swift rename to Projects/Data/API/Tests/Sources/Test.swift diff --git a/Projects/Core/Data/Model/Project.swift b/Projects/Data/Model/Project.swift similarity index 100% rename from Projects/Core/Data/Model/Project.swift rename to Projects/Data/Model/Project.swift diff --git a/Projects/Core/Data/Model/Sources/Attendance/AttendanceCheck/AttendanceListModel.swift b/Projects/Data/Model/Sources/Attendance/AttendanceCheck/AttendanceListModel.swift similarity index 100% rename from Projects/Core/Data/Model/Sources/Attendance/AttendanceCheck/AttendanceListModel.swift rename to Projects/Data/Model/Sources/Attendance/AttendanceCheck/AttendanceListModel.swift diff --git a/Projects/Core/Data/Model/Sources/Attendance/AttendanceCheck/DTO/AttendanceListResponseDTOModel.swift b/Projects/Data/Model/Sources/Attendance/AttendanceCheck/DTO/AttendanceListResponseDTOModel.swift similarity index 100% rename from Projects/Core/Data/Model/Sources/Attendance/AttendanceCheck/DTO/AttendanceListResponseDTOModel.swift rename to Projects/Data/Model/Sources/Attendance/AttendanceCheck/DTO/AttendanceListResponseDTOModel.swift diff --git a/Projects/Core/Data/Model/Sources/Attendance/AttendanceCheck/Extension/Extension+AttendanceCheckDTOModel.swift b/Projects/Data/Model/Sources/Attendance/AttendanceCheck/Extension/Extension+AttendanceCheckDTOModel.swift similarity index 100% rename from Projects/Core/Data/Model/Sources/Attendance/AttendanceCheck/Extension/Extension+AttendanceCheckDTOModel.swift rename to Projects/Data/Model/Sources/Attendance/AttendanceCheck/Extension/Extension+AttendanceCheckDTOModel.swift diff --git a/Projects/Core/Data/Model/Sources/Attendance/AttendanceCount/AttendanceCountResponseDTO.swift b/Projects/Data/Model/Sources/Attendance/AttendanceCount/AttendanceCountResponseDTO.swift similarity index 100% rename from Projects/Core/Data/Model/Sources/Attendance/AttendanceCount/AttendanceCountResponseDTO.swift rename to Projects/Data/Model/Sources/Attendance/AttendanceCount/AttendanceCountResponseDTO.swift diff --git a/Projects/Core/Data/Model/Sources/Attendance/AttendanceCount/AttendanceCountResponseModel.swift b/Projects/Data/Model/Sources/Attendance/AttendanceCount/AttendanceCountResponseModel.swift similarity index 100% rename from Projects/Core/Data/Model/Sources/Attendance/AttendanceCount/AttendanceCountResponseModel.swift rename to Projects/Data/Model/Sources/Attendance/AttendanceCount/AttendanceCountResponseModel.swift diff --git a/Projects/Core/Data/Model/Sources/Attendance/AttendanceCount/DTO/AttendanceCountDTOModel.swift b/Projects/Data/Model/Sources/Attendance/AttendanceCount/DTO/AttendanceCountDTOModel.swift similarity index 100% rename from Projects/Core/Data/Model/Sources/Attendance/AttendanceCount/DTO/AttendanceCountDTOModel.swift rename to Projects/Data/Model/Sources/Attendance/AttendanceCount/DTO/AttendanceCountDTOModel.swift diff --git a/Projects/Core/Data/Model/Sources/Attendance/AttendanceCount/Mapper/AttendanceCountResponseDTO+.swift b/Projects/Data/Model/Sources/Attendance/AttendanceCount/Mapper/AttendanceCountResponseDTO+.swift similarity index 100% rename from Projects/Core/Data/Model/Sources/Attendance/AttendanceCount/Mapper/AttendanceCountResponseDTO+.swift rename to Projects/Data/Model/Sources/Attendance/AttendanceCount/Mapper/AttendanceCountResponseDTO+.swift diff --git a/Projects/Core/Data/Model/Sources/Attendance/AttendanceDTO.swift b/Projects/Data/Model/Sources/Attendance/AttendanceDTO.swift similarity index 100% rename from Projects/Core/Data/Model/Sources/Attendance/AttendanceDTO.swift rename to Projects/Data/Model/Sources/Attendance/AttendanceDTO.swift diff --git a/Projects/Core/Data/Model/Sources/Attendance/AttendanceModel.swift b/Projects/Data/Model/Sources/Attendance/AttendanceModel.swift similarity index 100% rename from Projects/Core/Data/Model/Sources/Attendance/AttendanceModel.swift rename to Projects/Data/Model/Sources/Attendance/AttendanceModel.swift diff --git a/Projects/Core/Data/Model/Sources/Attendance/AttendanceStatus.swift b/Projects/Data/Model/Sources/Attendance/AttendanceStatus.swift similarity index 100% rename from Projects/Core/Data/Model/Sources/Attendance/AttendanceStatus.swift rename to Projects/Data/Model/Sources/Attendance/AttendanceStatus.swift diff --git a/Projects/Core/Data/Model/Sources/Attendance/AttendanceType.swift b/Projects/Data/Model/Sources/Attendance/AttendanceType.swift similarity index 100% rename from Projects/Core/Data/Model/Sources/Attendance/AttendanceType.swift rename to Projects/Data/Model/Sources/Attendance/AttendanceType.swift diff --git a/Projects/Core/Data/Model/Sources/Attendance/ModifyAttendance/DTO/ModifyDTOAttendanceModel.swift b/Projects/Data/Model/Sources/Attendance/ModifyAttendance/DTO/ModifyDTOAttendanceModel.swift similarity index 100% rename from Projects/Core/Data/Model/Sources/Attendance/ModifyAttendance/DTO/ModifyDTOAttendanceModel.swift rename to Projects/Data/Model/Sources/Attendance/ModifyAttendance/DTO/ModifyDTOAttendanceModel.swift diff --git a/Projects/Core/Data/Model/Sources/Attendance/ModifyAttendance/Extension/Extension+ModifyDTOAttendanceModel.swift b/Projects/Data/Model/Sources/Attendance/ModifyAttendance/Extension/Extension+ModifyDTOAttendanceModel.swift similarity index 100% rename from Projects/Core/Data/Model/Sources/Attendance/ModifyAttendance/Extension/Extension+ModifyDTOAttendanceModel.swift rename to Projects/Data/Model/Sources/Attendance/ModifyAttendance/Extension/Extension+ModifyDTOAttendanceModel.swift diff --git a/Projects/Core/Data/Model/Sources/Attendance/ModifyAttendance/ModifyAttendanceModel.swift b/Projects/Data/Model/Sources/Attendance/ModifyAttendance/ModifyAttendanceModel.swift similarity index 100% rename from Projects/Core/Data/Model/Sources/Attendance/ModifyAttendance/ModifyAttendanceModel.swift rename to Projects/Data/Model/Sources/Attendance/ModifyAttendance/ModifyAttendanceModel.swift diff --git a/Projects/Core/Data/Model/Sources/Auth/Entity/UserEntity.swift b/Projects/Data/Model/Sources/Auth/Entity/UserEntity.swift similarity index 100% rename from Projects/Core/Data/Model/Sources/Auth/Entity/UserEntity.swift rename to Projects/Data/Model/Sources/Auth/Entity/UserEntity.swift diff --git a/Projects/Core/Data/Model/Sources/Auth/Login/DTO/LoginDTOModel.swift b/Projects/Data/Model/Sources/Auth/Login/DTO/LoginDTOModel.swift similarity index 100% rename from Projects/Core/Data/Model/Sources/Auth/Login/DTO/LoginDTOModel.swift rename to Projects/Data/Model/Sources/Auth/Login/DTO/LoginDTOModel.swift diff --git a/Projects/Core/Data/Model/Sources/Auth/Login/Domain/LoginModel.swift b/Projects/Data/Model/Sources/Auth/Login/Domain/LoginModel.swift similarity index 100% rename from Projects/Core/Data/Model/Sources/Auth/Login/Domain/LoginModel.swift rename to Projects/Data/Model/Sources/Auth/Login/Domain/LoginModel.swift diff --git a/Projects/Core/Data/Model/Sources/Auth/Login/Extension/Extension+LoginModel.swift b/Projects/Data/Model/Sources/Auth/Login/Extension/Extension+LoginModel.swift similarity index 100% rename from Projects/Core/Data/Model/Sources/Auth/Login/Extension/Extension+LoginModel.swift rename to Projects/Data/Model/Sources/Auth/Login/Extension/Extension+LoginModel.swift diff --git a/Projects/Core/Data/Model/Sources/Auth/OAuth/DTO/OAuthResponseDTOModel.swift b/Projects/Data/Model/Sources/Auth/OAuth/DTO/OAuthResponseDTOModel.swift similarity index 100% rename from Projects/Core/Data/Model/Sources/Auth/OAuth/DTO/OAuthResponseDTOModel.swift rename to Projects/Data/Model/Sources/Auth/OAuth/DTO/OAuthResponseDTOModel.swift diff --git a/Projects/Core/Data/Model/Sources/Auth/OAuth/Domain/OAuthResponse.swift b/Projects/Data/Model/Sources/Auth/OAuth/Domain/OAuthResponse.swift similarity index 100% rename from Projects/Core/Data/Model/Sources/Auth/OAuth/Domain/OAuthResponse.swift rename to Projects/Data/Model/Sources/Auth/OAuth/Domain/OAuthResponse.swift diff --git a/Projects/Core/Data/Model/Sources/Auth/OAuth/Extension/Extension+OAuthResponseModel.swift b/Projects/Data/Model/Sources/Auth/OAuth/Extension/Extension+OAuthResponseModel.swift similarity index 100% rename from Projects/Core/Data/Model/Sources/Auth/OAuth/Extension/Extension+OAuthResponseModel.swift rename to Projects/Data/Model/Sources/Auth/OAuth/Extension/Extension+OAuthResponseModel.swift diff --git a/Projects/Core/Data/Model/Sources/Auth/OAuthError.swift b/Projects/Data/Model/Sources/Auth/OAuthError.swift similarity index 100% rename from Projects/Core/Data/Model/Sources/Auth/OAuthError.swift rename to Projects/Data/Model/Sources/Auth/OAuthError.swift diff --git a/Projects/Core/Data/Model/Sources/Base/BaseResponse.swift b/Projects/Data/Model/Sources/Base/BaseResponse.swift similarity index 100% rename from Projects/Core/Data/Model/Sources/Base/BaseResponse.swift rename to Projects/Data/Model/Sources/Base/BaseResponse.swift diff --git a/Projects/Core/Data/Model/Sources/Base/BaseResponseDTO.swift b/Projects/Data/Model/Sources/Base/BaseResponseDTO.swift similarity index 100% rename from Projects/Core/Data/Model/Sources/Base/BaseResponseDTO.swift rename to Projects/Data/Model/Sources/Base/BaseResponseDTO.swift diff --git a/Projects/Core/Data/Model/Sources/Base/BaseResponseDomain.swift b/Projects/Data/Model/Sources/Base/BaseResponseDomain.swift similarity index 100% rename from Projects/Core/Data/Model/Sources/Base/BaseResponseDomain.swift rename to Projects/Data/Model/Sources/Base/BaseResponseDomain.swift diff --git a/Projects/Core/Data/Model/Sources/Error/CustomError.swift b/Projects/Data/Model/Sources/Error/CustomError.swift similarity index 100% rename from Projects/Core/Data/Model/Sources/Error/CustomError.swift rename to Projects/Data/Model/Sources/Error/CustomError.swift diff --git a/Projects/Core/Data/Model/Sources/Profile/DTO/ProfileResponseDTO.swift b/Projects/Data/Model/Sources/Profile/DTO/ProfileResponseDTO.swift similarity index 100% rename from Projects/Core/Data/Model/Sources/Profile/DTO/ProfileResponseDTO.swift rename to Projects/Data/Model/Sources/Profile/DTO/ProfileResponseDTO.swift diff --git a/Projects/Core/Data/Model/Sources/Profile/Mapper/ProfileResponseDTO+.swift b/Projects/Data/Model/Sources/Profile/Mapper/ProfileResponseDTO+.swift similarity index 100% rename from Projects/Core/Data/Model/Sources/Profile/Mapper/ProfileResponseDTO+.swift rename to Projects/Data/Model/Sources/Profile/Mapper/ProfileResponseDTO+.swift diff --git a/Projects/Core/Data/Model/Sources/Profile/ProfileResponseModel.swift b/Projects/Data/Model/Sources/Profile/ProfileResponseModel.swift similarity index 100% rename from Projects/Core/Data/Model/Sources/Profile/ProfileResponseModel.swift rename to Projects/Data/Model/Sources/Profile/ProfileResponseModel.swift diff --git a/Projects/Core/Data/Model/Sources/QR/DTO/CreateQRCodeResponseDTO.swift b/Projects/Data/Model/Sources/QR/DTO/CreateQRCodeResponseDTO.swift similarity index 100% rename from Projects/Core/Data/Model/Sources/QR/DTO/CreateQRCodeResponseDTO.swift rename to Projects/Data/Model/Sources/QR/DTO/CreateQRCodeResponseDTO.swift diff --git a/Projects/Core/Data/Model/Sources/QR/DTO/QRValidateDTOModel.swift b/Projects/Data/Model/Sources/QR/DTO/QRValidateDTOModel.swift similarity index 100% rename from Projects/Core/Data/Model/Sources/QR/DTO/QRValidateDTOModel.swift rename to Projects/Data/Model/Sources/QR/DTO/QRValidateDTOModel.swift diff --git a/Projects/Core/Data/Model/Sources/QR/Extension/Extension+QRValidateDTOModel.swift b/Projects/Data/Model/Sources/QR/Extension/Extension+QRValidateDTOModel.swift similarity index 100% rename from Projects/Core/Data/Model/Sources/QR/Extension/Extension+QRValidateDTOModel.swift rename to Projects/Data/Model/Sources/QR/Extension/Extension+QRValidateDTOModel.swift diff --git a/Projects/Core/Data/Model/Sources/QR/QRValidate.swift b/Projects/Data/Model/Sources/QR/QRValidate.swift similarity index 100% rename from Projects/Core/Data/Model/Sources/QR/QRValidate.swift rename to Projects/Data/Model/Sources/QR/QRValidate.swift diff --git a/Projects/Core/Data/Model/Sources/Schedule/DTO/ScheduleDTOModel.swift b/Projects/Data/Model/Sources/Schedule/DTO/ScheduleDTOModel.swift similarity index 100% rename from Projects/Core/Data/Model/Sources/Schedule/DTO/ScheduleDTOModel.swift rename to Projects/Data/Model/Sources/Schedule/DTO/ScheduleDTOModel.swift diff --git a/Projects/Core/Data/Model/Sources/Schedule/Extension/Extension+ScheduleModel.swift b/Projects/Data/Model/Sources/Schedule/Extension/Extension+ScheduleModel.swift similarity index 100% rename from Projects/Core/Data/Model/Sources/Schedule/Extension/Extension+ScheduleModel.swift rename to Projects/Data/Model/Sources/Schedule/Extension/Extension+ScheduleModel.swift diff --git a/Projects/Core/Data/Model/Sources/Schedule/Schedule.swift b/Projects/Data/Model/Sources/Schedule/Schedule.swift similarity index 100% rename from Projects/Core/Data/Model/Sources/Schedule/Schedule.swift rename to Projects/Data/Model/Sources/Schedule/Schedule.swift diff --git a/Projects/Core/Data/Model/Sources/Schedule/ScheduleModel.swift b/Projects/Data/Model/Sources/Schedule/ScheduleModel.swift similarity index 100% rename from Projects/Core/Data/Model/Sources/Schedule/ScheduleModel.swift rename to Projects/Data/Model/Sources/Schedule/ScheduleModel.swift diff --git a/Projects/Core/Data/Model/Sources/SignUp/CheckEmail/DTO/CheckEmailDTOModel.swift b/Projects/Data/Model/Sources/SignUp/CheckEmail/DTO/CheckEmailDTOModel.swift similarity index 100% rename from Projects/Core/Data/Model/Sources/SignUp/CheckEmail/DTO/CheckEmailDTOModel.swift rename to Projects/Data/Model/Sources/SignUp/CheckEmail/DTO/CheckEmailDTOModel.swift diff --git a/Projects/Core/Data/Model/Sources/SignUp/CheckEmail/Domain/CheckEmailModel.swift b/Projects/Data/Model/Sources/SignUp/CheckEmail/Domain/CheckEmailModel.swift similarity index 100% rename from Projects/Core/Data/Model/Sources/SignUp/CheckEmail/Domain/CheckEmailModel.swift rename to Projects/Data/Model/Sources/SignUp/CheckEmail/Domain/CheckEmailModel.swift diff --git a/Projects/Core/Data/Model/Sources/SignUp/CheckEmail/Extension/Extension+CheckEmailModel.swift b/Projects/Data/Model/Sources/SignUp/CheckEmail/Extension/Extension+CheckEmailModel.swift similarity index 100% rename from Projects/Core/Data/Model/Sources/SignUp/CheckEmail/Extension/Extension+CheckEmailModel.swift rename to Projects/Data/Model/Sources/SignUp/CheckEmail/Extension/Extension+CheckEmailModel.swift diff --git a/Projects/Core/Data/Model/Sources/SignUp/InviteCode/DTO/InviteCodeDTOModel.swift b/Projects/Data/Model/Sources/SignUp/InviteCode/DTO/InviteCodeDTOModel.swift similarity index 100% rename from Projects/Core/Data/Model/Sources/SignUp/InviteCode/DTO/InviteCodeDTOModel.swift rename to Projects/Data/Model/Sources/SignUp/InviteCode/DTO/InviteCodeDTOModel.swift diff --git a/Projects/Core/Data/Model/Sources/SignUp/InviteCode/Domain/InviteModel.swift b/Projects/Data/Model/Sources/SignUp/InviteCode/Domain/InviteModel.swift similarity index 100% rename from Projects/Core/Data/Model/Sources/SignUp/InviteCode/Domain/InviteModel.swift rename to Projects/Data/Model/Sources/SignUp/InviteCode/Domain/InviteModel.swift diff --git a/Projects/Core/Data/Model/Sources/SignUp/InviteCode/Extension/Extension+InviteCodeModel.swift b/Projects/Data/Model/Sources/SignUp/InviteCode/Extension/Extension+InviteCodeModel.swift similarity index 100% rename from Projects/Core/Data/Model/Sources/SignUp/InviteCode/Extension/Extension+InviteCodeModel.swift rename to Projects/Data/Model/Sources/SignUp/InviteCode/Extension/Extension+InviteCodeModel.swift diff --git a/Projects/Core/Data/Model/Sources/SignUp/Member/CoreMember/CoreMemberDTOSignUp.swift b/Projects/Data/Model/Sources/SignUp/Member/CoreMember/CoreMemberDTOSignUp.swift similarity index 100% rename from Projects/Core/Data/Model/Sources/SignUp/Member/CoreMember/CoreMemberDTOSignUp.swift rename to Projects/Data/Model/Sources/SignUp/Member/CoreMember/CoreMemberDTOSignUp.swift diff --git a/Projects/Core/Data/Model/Sources/SignUp/Member/Extension+Member/Extension+Member.swift b/Projects/Data/Model/Sources/SignUp/Member/Extension+Member/Extension+Member.swift similarity index 100% rename from Projects/Core/Data/Model/Sources/SignUp/Member/Extension+Member/Extension+Member.swift rename to Projects/Data/Model/Sources/SignUp/Member/Extension+Member/Extension+Member.swift diff --git a/Projects/Core/Data/Model/Sources/SignUp/Member/Member.swift b/Projects/Data/Model/Sources/SignUp/Member/Member.swift similarity index 100% rename from Projects/Core/Data/Model/Sources/SignUp/Member/Member.swift rename to Projects/Data/Model/Sources/SignUp/Member/Member.swift diff --git a/Projects/Core/Data/Model/Sources/SignUp/Member/Members/MemberDTOSignUp.swift b/Projects/Data/Model/Sources/SignUp/Member/Members/MemberDTOSignUp.swift similarity index 100% rename from Projects/Core/Data/Model/Sources/SignUp/Member/Members/MemberDTOSignUp.swift rename to Projects/Data/Model/Sources/SignUp/Member/Members/MemberDTOSignUp.swift diff --git a/Projects/Core/Data/Model/Sources/SignUp/Member/UserDTOMember.swift b/Projects/Data/Model/Sources/SignUp/Member/UserDTOMember.swift similarity index 100% rename from Projects/Core/Data/Model/Sources/SignUp/Member/UserDTOMember.swift rename to Projects/Data/Model/Sources/SignUp/Member/UserDTOMember.swift diff --git a/Projects/Core/Data/Model/Sources/SignUp/MemberType/Managing.swift b/Projects/Data/Model/Sources/SignUp/MemberType/Managing.swift similarity index 100% rename from Projects/Core/Data/Model/Sources/SignUp/MemberType/Managing.swift rename to Projects/Data/Model/Sources/SignUp/MemberType/Managing.swift diff --git a/Projects/Core/Data/Model/Sources/SignUp/MemberType/MemberTeam.swift b/Projects/Data/Model/Sources/SignUp/MemberType/MemberTeam.swift similarity index 100% rename from Projects/Core/Data/Model/Sources/SignUp/MemberType/MemberTeam.swift rename to Projects/Data/Model/Sources/SignUp/MemberType/MemberTeam.swift diff --git a/Projects/Core/Data/Model/Sources/SignUp/MemberType/MemberType.swift b/Projects/Data/Model/Sources/SignUp/MemberType/MemberType.swift similarity index 100% rename from Projects/Core/Data/Model/Sources/SignUp/MemberType/MemberType.swift rename to Projects/Data/Model/Sources/SignUp/MemberType/MemberType.swift diff --git a/Projects/Core/Data/Model/Sources/SignUp/MemberType/SelectPart.swift b/Projects/Data/Model/Sources/SignUp/MemberType/SelectPart.swift similarity index 100% rename from Projects/Core/Data/Model/Sources/SignUp/MemberType/SelectPart.swift rename to Projects/Data/Model/Sources/SignUp/MemberType/SelectPart.swift diff --git a/Projects/Core/Data/Model/Sources/SignUp/SignUpUser/DTO/SignUpModel.swift b/Projects/Data/Model/Sources/SignUp/SignUpUser/DTO/SignUpModel.swift similarity index 100% rename from Projects/Core/Data/Model/Sources/SignUp/SignUpUser/DTO/SignUpModel.swift rename to Projects/Data/Model/Sources/SignUp/SignUpUser/DTO/SignUpModel.swift diff --git a/Projects/Core/Data/Model/Sources/SignUp/SignUpUser/Domain/SignUpDTOModel.swift b/Projects/Data/Model/Sources/SignUp/SignUpUser/Domain/SignUpDTOModel.swift similarity index 100% rename from Projects/Core/Data/Model/Sources/SignUp/SignUpUser/Domain/SignUpDTOModel.swift rename to Projects/Data/Model/Sources/SignUp/SignUpUser/Domain/SignUpDTOModel.swift diff --git a/Projects/Core/Data/Model/Sources/SignUp/SignUpUser/Extension/Extension+SignUpModel.swift b/Projects/Data/Model/Sources/SignUp/SignUpUser/Extension/Extension+SignUpModel.swift similarity index 100% rename from Projects/Core/Data/Model/Sources/SignUp/SignUpUser/Extension/Extension+SignUpModel.swift rename to Projects/Data/Model/Sources/SignUp/SignUpUser/Extension/Extension+SignUpModel.swift diff --git a/Projects/Core/Data/Model/ModelTests/Sources/Test.swift b/Projects/Data/Model/Tests/Sources/Test.swift similarity index 100% rename from Projects/Core/Data/Model/ModelTests/Sources/Test.swift rename to Projects/Data/Model/Tests/Sources/Test.swift diff --git a/Projects/Core/Data/Repository/Project.swift b/Projects/Data/Repository/Project.swift similarity index 90% rename from Projects/Core/Data/Repository/Project.swift rename to Projects/Data/Repository/Project.swift index 80aaf791..f473c52b 100644 --- a/Projects/Core/Data/Repository/Project.swift +++ b/Projects/Data/Repository/Project.swift @@ -16,5 +16,6 @@ let project = Project.makeModule( .SPM.googleSignIn ], - sources: ["Sources/**"] + sources: ["Sources/**"], + hasTests: true ) diff --git a/Projects/Core/Data/Repository/Sources/Attendance/AttendanceRepositoryImpl.swift b/Projects/Data/Repository/Sources/Attendance/AttendanceRepositoryImpl.swift similarity index 100% rename from Projects/Core/Data/Repository/Sources/Attendance/AttendanceRepositoryImpl.swift rename to Projects/Data/Repository/Sources/Attendance/AttendanceRepositoryImpl.swift diff --git a/Projects/Core/Data/Repository/Sources/Attendance/DefaultAttendanceRepositoryImpl.swift b/Projects/Data/Repository/Sources/Attendance/DefaultAttendanceRepositoryImpl.swift similarity index 100% rename from Projects/Core/Data/Repository/Sources/Attendance/DefaultAttendanceRepositoryImpl.swift rename to Projects/Data/Repository/Sources/Attendance/DefaultAttendanceRepositoryImpl.swift diff --git a/Projects/Core/Data/Repository/Sources/Auth/RefreshToken/AuthAPIManger.swift b/Projects/Data/Repository/Sources/Auth/RefreshToken/AuthAPIManger.swift similarity index 100% rename from Projects/Core/Data/Repository/Sources/Auth/RefreshToken/AuthAPIManger.swift rename to Projects/Data/Repository/Sources/Auth/RefreshToken/AuthAPIManger.swift diff --git a/Projects/Core/Data/Repository/Sources/Auth/RefreshToken/AuthInterceptor.swift b/Projects/Data/Repository/Sources/Auth/RefreshToken/AuthInterceptor.swift similarity index 100% rename from Projects/Core/Data/Repository/Sources/Auth/RefreshToken/AuthInterceptor.swift rename to Projects/Data/Repository/Sources/Auth/RefreshToken/AuthInterceptor.swift diff --git a/Projects/Core/Data/Repository/Sources/Auth/Repository/AuthRepositoryImpl.swift b/Projects/Data/Repository/Sources/Auth/Repository/AuthRepositoryImpl.swift similarity index 100% rename from Projects/Core/Data/Repository/Sources/Auth/Repository/AuthRepositoryImpl.swift rename to Projects/Data/Repository/Sources/Auth/Repository/AuthRepositoryImpl.swift diff --git a/Projects/Core/Data/Repository/Sources/Auth/Repository/DefaultAuthRepositoryImpl.swift b/Projects/Data/Repository/Sources/Auth/Repository/DefaultAuthRepositoryImpl.swift similarity index 100% rename from Projects/Core/Data/Repository/Sources/Auth/Repository/DefaultAuthRepositoryImpl.swift rename to Projects/Data/Repository/Sources/Auth/Repository/DefaultAuthRepositoryImpl.swift diff --git a/Projects/Core/Data/Repository/Sources/OAuth/Google/GoogleLoginManager.swift b/Projects/Data/Repository/Sources/OAuth/Google/GoogleLoginManager.swift similarity index 100% rename from Projects/Core/Data/Repository/Sources/OAuth/Google/GoogleLoginManager.swift rename to Projects/Data/Repository/Sources/OAuth/Google/GoogleLoginManager.swift diff --git a/Projects/Core/Data/Repository/Sources/OAuth/Repository/DefaultOAuthRepositoryImpl.swift b/Projects/Data/Repository/Sources/OAuth/Repository/DefaultOAuthRepositoryImpl.swift similarity index 100% rename from Projects/Core/Data/Repository/Sources/OAuth/Repository/DefaultOAuthRepositoryImpl.swift rename to Projects/Data/Repository/Sources/OAuth/Repository/DefaultOAuthRepositoryImpl.swift diff --git a/Projects/Core/Data/Repository/Sources/OAuth/Repository/OAuthRepositoryImpl.swift b/Projects/Data/Repository/Sources/OAuth/Repository/OAuthRepositoryImpl.swift similarity index 100% rename from Projects/Core/Data/Repository/Sources/OAuth/Repository/OAuthRepositoryImpl.swift rename to Projects/Data/Repository/Sources/OAuth/Repository/OAuthRepositoryImpl.swift diff --git a/Projects/Core/Data/Repository/Sources/Profile/DefaultProfileRepositoryImpl.swift b/Projects/Data/Repository/Sources/Profile/DefaultProfileRepositoryImpl.swift similarity index 100% rename from Projects/Core/Data/Repository/Sources/Profile/DefaultProfileRepositoryImpl.swift rename to Projects/Data/Repository/Sources/Profile/DefaultProfileRepositoryImpl.swift diff --git a/Projects/Core/Data/Repository/Sources/Profile/ProfileRepositoryImpl.swift b/Projects/Data/Repository/Sources/Profile/ProfileRepositoryImpl.swift similarity index 100% rename from Projects/Core/Data/Repository/Sources/Profile/ProfileRepositoryImpl.swift rename to Projects/Data/Repository/Sources/Profile/ProfileRepositoryImpl.swift diff --git a/Projects/Core/Data/Repository/Sources/QRCode/DefaultQRCodeRepositoryImpl.swift b/Projects/Data/Repository/Sources/QRCode/DefaultQRCodeRepositoryImpl.swift similarity index 100% rename from Projects/Core/Data/Repository/Sources/QRCode/DefaultQRCodeRepositoryImpl.swift rename to Projects/Data/Repository/Sources/QRCode/DefaultQRCodeRepositoryImpl.swift diff --git a/Projects/Core/Data/Repository/Sources/QRCode/QRCodeRepositoryImpl.swift b/Projects/Data/Repository/Sources/QRCode/QRCodeRepositoryImpl.swift similarity index 100% rename from Projects/Core/Data/Repository/Sources/QRCode/QRCodeRepositoryImpl.swift rename to Projects/Data/Repository/Sources/QRCode/QRCodeRepositoryImpl.swift diff --git a/Projects/Core/Data/Repository/Sources/Schedule/DefaultScheduleRepositoryImpl.swift b/Projects/Data/Repository/Sources/Schedule/DefaultScheduleRepositoryImpl.swift similarity index 100% rename from Projects/Core/Data/Repository/Sources/Schedule/DefaultScheduleRepositoryImpl.swift rename to Projects/Data/Repository/Sources/Schedule/DefaultScheduleRepositoryImpl.swift diff --git a/Projects/Core/Data/Repository/Sources/Schedule/ScheduleRepositoryImpl.swift b/Projects/Data/Repository/Sources/Schedule/ScheduleRepositoryImpl.swift similarity index 100% rename from Projects/Core/Data/Repository/Sources/Schedule/ScheduleRepositoryImpl.swift rename to Projects/Data/Repository/Sources/Schedule/ScheduleRepositoryImpl.swift diff --git a/Projects/Core/Data/Repository/Sources/SignUp/DefaultSignUpRepositoryImpl.swift b/Projects/Data/Repository/Sources/SignUp/DefaultSignUpRepositoryImpl.swift similarity index 100% rename from Projects/Core/Data/Repository/Sources/SignUp/DefaultSignUpRepositoryImpl.swift rename to Projects/Data/Repository/Sources/SignUp/DefaultSignUpRepositoryImpl.swift diff --git a/Projects/Core/Data/Repository/Sources/SignUp/SignUpRepositoryImpl.swift b/Projects/Data/Repository/Sources/SignUp/SignUpRepositoryImpl.swift similarity index 100% rename from Projects/Core/Data/Repository/Sources/SignUp/SignUpRepositoryImpl.swift rename to Projects/Data/Repository/Sources/SignUp/SignUpRepositoryImpl.swift diff --git a/Projects/Core/Data/Repository/RepositoryTests/Sources/Test.swift b/Projects/Data/Repository/Tests/Sources/Test.swift similarity index 100% rename from Projects/Core/Data/Repository/RepositoryTests/Sources/Test.swift rename to Projects/Data/Repository/Tests/Sources/Test.swift diff --git a/Projects/Core/Data/Service/Project.swift b/Projects/Data/Service/Project.swift similarity index 100% rename from Projects/Core/Data/Service/Project.swift rename to Projects/Data/Service/Project.swift diff --git a/Projects/Core/Data/Service/ServiceTests/Sources/Test.swift b/Projects/Data/Service/ServiceTests/Sources/Test.swift similarity index 100% rename from Projects/Core/Data/Service/ServiceTests/Sources/Test.swift rename to Projects/Data/Service/ServiceTests/Sources/Test.swift diff --git a/Projects/Core/Data/Service/Sources/Attendance/AttendanceService.swift b/Projects/Data/Service/Sources/Attendance/AttendanceService.swift similarity index 100% rename from Projects/Core/Data/Service/Sources/Attendance/AttendanceService.swift rename to Projects/Data/Service/Sources/Attendance/AttendanceService.swift diff --git a/Projects/Core/Data/Service/Sources/Auth/AuthService.swift b/Projects/Data/Service/Sources/Auth/AuthService.swift similarity index 100% rename from Projects/Core/Data/Service/Sources/Auth/AuthService.swift rename to Projects/Data/Service/Sources/Auth/AuthService.swift diff --git a/Projects/Core/Data/Service/Sources/Profile/ProfileService.swift b/Projects/Data/Service/Sources/Profile/ProfileService.swift similarity index 100% rename from Projects/Core/Data/Service/Sources/Profile/ProfileService.swift rename to Projects/Data/Service/Sources/Profile/ProfileService.swift diff --git a/Projects/Core/Data/Service/Sources/QRService/QRService.swift b/Projects/Data/Service/Sources/QRService/QRService.swift similarity index 100% rename from Projects/Core/Data/Service/Sources/QRService/QRService.swift rename to Projects/Data/Service/Sources/QRService/QRService.swift diff --git a/Projects/Core/Data/Service/Sources/Schedule/ScheduleService.swift b/Projects/Data/Service/Sources/Schedule/ScheduleService.swift similarity index 100% rename from Projects/Core/Data/Service/Sources/Schedule/ScheduleService.swift rename to Projects/Data/Service/Sources/Schedule/ScheduleService.swift diff --git a/Projects/Core/Data/Service/Sources/SignUp/SignUpService.swift b/Projects/Data/Service/Sources/SignUp/SignUpService.swift similarity index 100% rename from Projects/Core/Data/Service/Sources/SignUp/SignUpService.swift rename to Projects/Data/Service/Sources/SignUp/SignUpService.swift diff --git a/Projects/Core/Domain/DomainInterface/Project.swift b/Projects/Domain/DomainInterface/Project.swift similarity index 100% rename from Projects/Core/Domain/DomainInterface/Project.swift rename to Projects/Domain/DomainInterface/Project.swift diff --git a/Projects/Core/Domain/DomainInterface/Sources/Attandance/AttendanceInterface.swift b/Projects/Domain/DomainInterface/Sources/Attandance/AttendanceInterface.swift similarity index 100% rename from Projects/Core/Domain/DomainInterface/Sources/Attandance/AttendanceInterface.swift rename to Projects/Domain/DomainInterface/Sources/Attandance/AttendanceInterface.swift diff --git a/Projects/Core/Domain/DomainInterface/Sources/Auth/AuthInterface.swift b/Projects/Domain/DomainInterface/Sources/Auth/AuthInterface.swift similarity index 100% rename from Projects/Core/Domain/DomainInterface/Sources/Auth/AuthInterface.swift rename to Projects/Domain/DomainInterface/Sources/Auth/AuthInterface.swift diff --git a/Projects/Core/Domain/DomainInterface/Sources/Exported/DomainInterfaceExported.swift b/Projects/Domain/DomainInterface/Sources/Exported/DomainInterfaceExported.swift similarity index 100% rename from Projects/Core/Domain/DomainInterface/Sources/Exported/DomainInterfaceExported.swift rename to Projects/Domain/DomainInterface/Sources/Exported/DomainInterfaceExported.swift diff --git a/Projects/Core/Domain/DomainInterface/Sources/OAuth/OAuthInterface.swift b/Projects/Domain/DomainInterface/Sources/OAuth/OAuthInterface.swift similarity index 100% rename from Projects/Core/Domain/DomainInterface/Sources/OAuth/OAuthInterface.swift rename to Projects/Domain/DomainInterface/Sources/OAuth/OAuthInterface.swift diff --git a/Projects/Core/Domain/DomainInterface/Sources/Profile/ProfileInterface.swift b/Projects/Domain/DomainInterface/Sources/Profile/ProfileInterface.swift similarity index 100% rename from Projects/Core/Domain/DomainInterface/Sources/Profile/ProfileInterface.swift rename to Projects/Domain/DomainInterface/Sources/Profile/ProfileInterface.swift diff --git a/Projects/Core/Domain/DomainInterface/Sources/QRCode/QRCodeInterface.swift b/Projects/Domain/DomainInterface/Sources/QRCode/QRCodeInterface.swift similarity index 100% rename from Projects/Core/Domain/DomainInterface/Sources/QRCode/QRCodeInterface.swift rename to Projects/Domain/DomainInterface/Sources/QRCode/QRCodeInterface.swift diff --git a/Projects/Core/Domain/DomainInterface/Sources/Schedule/ScheduleInterface.swift b/Projects/Domain/DomainInterface/Sources/Schedule/ScheduleInterface.swift similarity index 100% rename from Projects/Core/Domain/DomainInterface/Sources/Schedule/ScheduleInterface.swift rename to Projects/Domain/DomainInterface/Sources/Schedule/ScheduleInterface.swift diff --git a/Projects/Core/Domain/DomainInterface/Sources/SignUp/SignUpInterface.swift b/Projects/Domain/DomainInterface/Sources/SignUp/SignUpInterface.swift similarity index 100% rename from Projects/Core/Domain/DomainInterface/Sources/SignUp/SignUpInterface.swift rename to Projects/Domain/DomainInterface/Sources/SignUp/SignUpInterface.swift diff --git a/Projects/Core/Domain/DomainInterface/DomainInterfaceTests/Sources/Test.swift b/Projects/Domain/DomainInterface/Tests/Sources/Test.swift similarity index 100% rename from Projects/Core/Domain/DomainInterface/DomainInterfaceTests/Sources/Test.swift rename to Projects/Domain/DomainInterface/Tests/Sources/Test.swift diff --git a/Projects/Core/Domain/UseCase/Project.swift b/Projects/Domain/UseCase/Project.swift similarity index 90% rename from Projects/Core/Domain/UseCase/Project.swift rename to Projects/Domain/UseCase/Project.swift index cfc8dc43..adf46495 100644 --- a/Projects/Core/Domain/UseCase/Project.swift +++ b/Projects/Domain/UseCase/Project.swift @@ -16,5 +16,6 @@ let project = Project.makeModule( .Data(implements: .Repository), ], - sources: ["Sources/**"] + sources: ["Sources/**"], + hasTests: true ) diff --git a/Projects/Core/Domain/UseCase/Sources/Attendance/AttendanceUseCaseImpl.swift b/Projects/Domain/UseCase/Sources/Attendance/AttendanceUseCaseImpl.swift similarity index 100% rename from Projects/Core/Domain/UseCase/Sources/Attendance/AttendanceUseCaseImpl.swift rename to Projects/Domain/UseCase/Sources/Attendance/AttendanceUseCaseImpl.swift diff --git a/Projects/Core/Domain/UseCase/Sources/Auth/AuthUseCaseImpl.swift b/Projects/Domain/UseCase/Sources/Auth/AuthUseCaseImpl.swift similarity index 100% rename from Projects/Core/Domain/UseCase/Sources/Auth/AuthUseCaseImpl.swift rename to Projects/Domain/UseCase/Sources/Auth/AuthUseCaseImpl.swift diff --git a/Projects/Core/Domain/UseCase/Sources/OAuth/OAuthUseCaseImpl.swift b/Projects/Domain/UseCase/Sources/OAuth/OAuthUseCaseImpl.swift similarity index 100% rename from Projects/Core/Domain/UseCase/Sources/OAuth/OAuthUseCaseImpl.swift rename to Projects/Domain/UseCase/Sources/OAuth/OAuthUseCaseImpl.swift diff --git a/Projects/Core/Domain/UseCase/Sources/Profile/ProfileUseCaseImpl.swift b/Projects/Domain/UseCase/Sources/Profile/ProfileUseCaseImpl.swift similarity index 100% rename from Projects/Core/Domain/UseCase/Sources/Profile/ProfileUseCaseImpl.swift rename to Projects/Domain/UseCase/Sources/Profile/ProfileUseCaseImpl.swift diff --git a/Projects/Core/Domain/UseCase/Sources/QRCode/QRCodeUseCaseImpl.swift b/Projects/Domain/UseCase/Sources/QRCode/QRCodeUseCaseImpl.swift similarity index 100% rename from Projects/Core/Domain/UseCase/Sources/QRCode/QRCodeUseCaseImpl.swift rename to Projects/Domain/UseCase/Sources/QRCode/QRCodeUseCaseImpl.swift diff --git a/Projects/Core/Domain/UseCase/Sources/Schedule/ScheduleUseCaseImpl.swift b/Projects/Domain/UseCase/Sources/Schedule/ScheduleUseCaseImpl.swift similarity index 100% rename from Projects/Core/Domain/UseCase/Sources/Schedule/ScheduleUseCaseImpl.swift rename to Projects/Domain/UseCase/Sources/Schedule/ScheduleUseCaseImpl.swift diff --git a/Projects/Core/Domain/UseCase/Sources/SignUp/ SignUpUseCaseImpl.swift b/Projects/Domain/UseCase/Sources/SignUp/ SignUpUseCaseImpl.swift similarity index 100% rename from Projects/Core/Domain/UseCase/Sources/SignUp/ SignUpUseCaseImpl.swift rename to Projects/Domain/UseCase/Sources/SignUp/ SignUpUseCaseImpl.swift diff --git a/Projects/Core/Domain/UseCase/UseCaseTests/Sources/Test.swift b/Projects/Domain/UseCase/Tests/Sources/Test.swift similarity index 100% rename from Projects/Core/Domain/UseCase/UseCaseTests/Sources/Test.swift rename to Projects/Domain/UseCase/Tests/Sources/Test.swift diff --git a/Projects/Core/Network/Foundations/FoundationsTests/Sources/Test.swift b/Projects/Network/Foundations/FoundationsTests/Sources/Test.swift similarity index 100% rename from Projects/Core/Network/Foundations/FoundationsTests/Sources/Test.swift rename to Projects/Network/Foundations/FoundationsTests/Sources/Test.swift diff --git a/Projects/Core/Network/Foundations/Project.swift b/Projects/Network/Foundations/Project.swift similarity index 100% rename from Projects/Core/Network/Foundations/Project.swift rename to Projects/Network/Foundations/Project.swift diff --git a/Projects/Core/Network/Foundations/Sources/APIHeader/APIHeader.swift b/Projects/Network/Foundations/Sources/APIHeader/APIHeader.swift similarity index 100% rename from Projects/Core/Network/Foundations/Sources/APIHeader/APIHeader.swift rename to Projects/Network/Foundations/Sources/APIHeader/APIHeader.swift diff --git a/Projects/Core/Network/Foundations/Sources/APIHeader/APIHeaderManger.swift b/Projects/Network/Foundations/Sources/APIHeader/APIHeaderManger.swift similarity index 100% rename from Projects/Core/Network/Foundations/Sources/APIHeader/APIHeaderManger.swift rename to Projects/Network/Foundations/Sources/APIHeader/APIHeaderManger.swift diff --git a/Projects/Core/Network/Networks/NetworksTests/Sources/Test.swift b/Projects/Network/Networks/NetworksTests/Sources/Test.swift similarity index 100% rename from Projects/Core/Network/Networks/NetworksTests/Sources/Test.swift rename to Projects/Network/Networks/NetworksTests/Sources/Test.swift diff --git a/Projects/Core/Network/Networks/Project.swift b/Projects/Network/Networks/Project.swift similarity index 100% rename from Projects/Core/Network/Networks/Project.swift rename to Projects/Network/Networks/Project.swift diff --git a/Projects/Core/Network/Networks/Sources/NetworkingExport.swift b/Projects/Network/Networks/Sources/NetworkingExport.swift similarity index 86% rename from Projects/Core/Network/Networks/Sources/NetworkingExport.swift rename to Projects/Network/Networks/Sources/NetworkingExport.swift index e79da350..b0cd7472 100644 --- a/Projects/Core/Network/Networks/Sources/NetworkingExport.swift +++ b/Projects/Network/Networks/Sources/NetworkingExport.swift @@ -7,5 +7,4 @@ @_exported import API @_exported import Model -@_exported import Service @_exported import ThirdPartys diff --git a/Projects/Core/Network/ThirdPartys/Project.swift b/Projects/Network/ThirdPartys/Project.swift similarity index 100% rename from Projects/Core/Network/ThirdPartys/Project.swift rename to Projects/Network/ThirdPartys/Project.swift diff --git a/Projects/Core/Network/ThirdPartys/Sources/ThirdPartysExport.swift b/Projects/Network/ThirdPartys/Sources/ThirdPartysExport.swift similarity index 100% rename from Projects/Core/Network/ThirdPartys/Sources/ThirdPartysExport.swift rename to Projects/Network/ThirdPartys/Sources/ThirdPartysExport.swift diff --git a/Projects/Core/Network/ThirdPartys/ThirdPartysTests/Sources/Test.swift b/Projects/Network/ThirdPartys/ThirdPartysTests/Sources/Test.swift similarity index 100% rename from Projects/Core/Network/ThirdPartys/ThirdPartysTests/Sources/Test.swift rename to Projects/Network/ThirdPartys/ThirdPartysTests/Sources/Test.swift diff --git a/Projects/Presentation/Auth/Project.swift b/Projects/Presentation/Auth/Project.swift new file mode 100644 index 00000000..2f38706f --- /dev/null +++ b/Projects/Presentation/Auth/Project.swift @@ -0,0 +1,23 @@ +import Foundation +import ProjectDescription +import DependencyPlugin +import ProjectTemplatePlugin +import ProjectTemplatePlugin +import DependencyPackagePlugin + +let project = Project.makeModule( + name: "Auth", + bundleId: .appBundleID(name: ".Auth"), + product: .staticFramework, + settings: .settings(), + dependencies: [ + .SPM.composableArchitecture, + .SPM.tcaCoordinator, + .Shared(implements: .Shareds), + .Shared(implements: .DesignSystem), + .Domain(implements: .UseCase), + .Core(implements: .Core) + ], + sources: ["Sources/**"], + hasTests: true +) diff --git a/Projects/Presentation/Presentation/Sources/Auth/AuthCoordinator/Reducer/AuthCoordinator.swift b/Projects/Presentation/Auth/Sources/AuthCoordinator/Reducer/AuthCoordinator.swift similarity index 100% rename from Projects/Presentation/Presentation/Sources/Auth/AuthCoordinator/Reducer/AuthCoordinator.swift rename to Projects/Presentation/Auth/Sources/AuthCoordinator/Reducer/AuthCoordinator.swift diff --git a/Projects/Presentation/Presentation/Sources/Auth/AuthCoordinator/View/AuthCoordinatorView.swift b/Projects/Presentation/Auth/Sources/AuthCoordinator/View/AuthCoordinatorView.swift similarity index 100% rename from Projects/Presentation/Presentation/Sources/Auth/AuthCoordinator/View/AuthCoordinatorView.swift rename to Projects/Presentation/Auth/Sources/AuthCoordinator/View/AuthCoordinatorView.swift diff --git a/Projects/Presentation/Presentation/Sources/Auth/Login/AppleLoginManger/AppleLoginManager.swift b/Projects/Presentation/Auth/Sources/Login/AppleLoginManger/AppleLoginManager.swift similarity index 100% rename from Projects/Presentation/Presentation/Sources/Auth/Login/AppleLoginManger/AppleLoginManager.swift rename to Projects/Presentation/Auth/Sources/Login/AppleLoginManger/AppleLoginManager.swift diff --git a/Projects/Presentation/Presentation/Sources/Auth/Login/Reducer/Login.swift b/Projects/Presentation/Auth/Sources/Login/Reducer/Login.swift similarity index 100% rename from Projects/Presentation/Presentation/Sources/Auth/Login/Reducer/Login.swift rename to Projects/Presentation/Auth/Sources/Login/Reducer/Login.swift diff --git a/Projects/Presentation/Presentation/Sources/Auth/Login/View/LoginView.swift b/Projects/Presentation/Auth/Sources/Login/View/LoginView.swift similarity index 100% rename from Projects/Presentation/Presentation/Sources/Auth/Login/View/LoginView.swift rename to Projects/Presentation/Auth/Sources/Login/View/LoginView.swift diff --git a/Projects/Presentation/Presentation/Sources/Auth/SignUpInviteCode/Reducer/SignUpInviteCode.swift b/Projects/Presentation/Auth/Sources/SignUpInviteCode/Reducer/SignUpInviteCode.swift similarity index 100% rename from Projects/Presentation/Presentation/Sources/Auth/SignUpInviteCode/Reducer/SignUpInviteCode.swift rename to Projects/Presentation/Auth/Sources/SignUpInviteCode/Reducer/SignUpInviteCode.swift diff --git a/Projects/Presentation/Presentation/Sources/Auth/SignUpInviteCode/View/SignUpInviteCodeView.swift b/Projects/Presentation/Auth/Sources/SignUpInviteCode/View/SignUpInviteCodeView.swift similarity index 100% rename from Projects/Presentation/Presentation/Sources/Auth/SignUpInviteCode/View/SignUpInviteCodeView.swift rename to Projects/Presentation/Auth/Sources/SignUpInviteCode/View/SignUpInviteCodeView.swift diff --git a/Projects/Presentation/Presentation/Sources/Auth/SignUpName/Reducer/SignUpName.swift b/Projects/Presentation/Auth/Sources/SignUpName/Reducer/SignUpName.swift similarity index 100% rename from Projects/Presentation/Presentation/Sources/Auth/SignUpName/Reducer/SignUpName.swift rename to Projects/Presentation/Auth/Sources/SignUpName/Reducer/SignUpName.swift diff --git a/Projects/Presentation/Presentation/Sources/Auth/SignUpName/View/SignUpNameView.swift b/Projects/Presentation/Auth/Sources/SignUpName/View/SignUpNameView.swift similarity index 100% rename from Projects/Presentation/Presentation/Sources/Auth/SignUpName/View/SignUpNameView.swift rename to Projects/Presentation/Auth/Sources/SignUpName/View/SignUpNameView.swift diff --git a/Projects/Presentation/Presentation/Sources/Auth/SignUpPart/Reducer/SignUpPart.swift b/Projects/Presentation/Auth/Sources/SignUpPart/Reducer/SignUpPart.swift similarity index 100% rename from Projects/Presentation/Presentation/Sources/Auth/SignUpPart/Reducer/SignUpPart.swift rename to Projects/Presentation/Auth/Sources/SignUpPart/Reducer/SignUpPart.swift diff --git a/Projects/Presentation/Presentation/Sources/Auth/SignUpPart/View/SignUpPartView.swift b/Projects/Presentation/Auth/Sources/SignUpPart/View/SignUpPartView.swift similarity index 99% rename from Projects/Presentation/Presentation/Sources/Auth/SignUpPart/View/SignUpPartView.swift rename to Projects/Presentation/Auth/Sources/SignUpPart/View/SignUpPartView.swift index c97cdf2d..6b9ef4cb 100644 --- a/Projects/Presentation/Presentation/Sources/Auth/SignUpPart/View/SignUpPartView.swift +++ b/Projects/Presentation/Auth/Sources/SignUpPart/View/SignUpPartView.swift @@ -8,6 +8,7 @@ import SwiftUI import ComposableArchitecture import DesignSystem +import Core public struct SignUpPartView: View { @Bindable var store: StoreOf diff --git a/Projects/Presentation/Presentation/Sources/Auth/SignUpSelectManging/Reducer/SignUpSelectManging.swift b/Projects/Presentation/Auth/Sources/SignUpSelectManging/Reducer/SignUpSelectManging.swift similarity index 100% rename from Projects/Presentation/Presentation/Sources/Auth/SignUpSelectManging/Reducer/SignUpSelectManging.swift rename to Projects/Presentation/Auth/Sources/SignUpSelectManging/Reducer/SignUpSelectManging.swift diff --git a/Projects/Presentation/Presentation/Sources/Auth/SignUpSelectManging/View/SignUpSelectMangingView.swift b/Projects/Presentation/Auth/Sources/SignUpSelectManging/View/SignUpSelectMangingView.swift similarity index 100% rename from Projects/Presentation/Presentation/Sources/Auth/SignUpSelectManging/View/SignUpSelectMangingView.swift rename to Projects/Presentation/Auth/Sources/SignUpSelectManging/View/SignUpSelectMangingView.swift diff --git a/Projects/Presentation/Presentation/Sources/Auth/SignUpSelectTeam/Reducer/SignUpSelectTeam.swift b/Projects/Presentation/Auth/Sources/SignUpSelectTeam/Reducer/SignUpSelectTeam.swift similarity index 100% rename from Projects/Presentation/Presentation/Sources/Auth/SignUpSelectTeam/Reducer/SignUpSelectTeam.swift rename to Projects/Presentation/Auth/Sources/SignUpSelectTeam/Reducer/SignUpSelectTeam.swift diff --git a/Projects/Presentation/Presentation/Sources/Auth/SignUpSelectTeam/View/SignUpSelectTeamView.swift b/Projects/Presentation/Auth/Sources/SignUpSelectTeam/View/SignUpSelectTeamView.swift similarity index 100% rename from Projects/Presentation/Presentation/Sources/Auth/SignUpSelectTeam/View/SignUpSelectTeamView.swift rename to Projects/Presentation/Auth/Sources/SignUpSelectTeam/View/SignUpSelectTeamView.swift diff --git a/Projects/Presentation/Auth/Tests/Sources/Test.swift b/Projects/Presentation/Auth/Tests/Sources/Test.swift new file mode 100644 index 00000000..004a5543 --- /dev/null +++ b/Projects/Presentation/Auth/Tests/Sources/Test.swift @@ -0,0 +1,8 @@ +// +// base.swift +// DDDAttendance +// +// Created by Roy on 2025-11-28 +// Copyright © 2025 DDD , Ltd. All rights reserved. +// + diff --git a/Projects/Presentation/Management/ManagementTests/Sources/Test.swift b/Projects/Presentation/Management/ManagementTests/Sources/Test.swift new file mode 100644 index 00000000..7e835acf --- /dev/null +++ b/Projects/Presentation/Management/ManagementTests/Sources/Test.swift @@ -0,0 +1,8 @@ +// +// base.swift +// DDDAttendance +// +// Created by Roy on 2025-11-29 +// Copyright © 2025 DDD , Ltd. All rights reserved. +// + diff --git a/Projects/Presentation/Management/Project.swift b/Projects/Presentation/Management/Project.swift new file mode 100644 index 00000000..6e251aa2 --- /dev/null +++ b/Projects/Presentation/Management/Project.swift @@ -0,0 +1,24 @@ +import Foundation +import ProjectDescription +import DependencyPlugin +import ProjectTemplatePlugin +import ProjectTemplatePlugin +import DependencyPackagePlugin + +let project = Project.makeModule( + name: "Management", + bundleId: .appBundleID(name: ".Management"), + product: .staticFramework, + settings: .settings(), + dependencies: [ + + .SPM.composableArchitecture, + .SPM.tcaCoordinator, + .Shared(implements: .Shareds), + .Domain(implements: .UseCase), + .Presentation(implements: .Profile), + .Core(implements: .Core) + + ], + sources: ["Sources/**"] +) diff --git a/Projects/Presentation/Presentation/Sources/CoreMember/AttendanceCheck/Reducer/AttendanceCheck.swift b/Projects/Presentation/Management/Sources/AttendanceCheck/Reducer/AttendanceCheck.swift similarity index 100% rename from Projects/Presentation/Presentation/Sources/CoreMember/AttendanceCheck/Reducer/AttendanceCheck.swift rename to Projects/Presentation/Management/Sources/AttendanceCheck/Reducer/AttendanceCheck.swift diff --git a/Projects/Presentation/Presentation/Sources/CoreMember/AttendanceCheck/View/AttendanceCheckView.swift b/Projects/Presentation/Management/Sources/AttendanceCheck/View/AttendanceCheckView.swift similarity index 100% rename from Projects/Presentation/Presentation/Sources/CoreMember/AttendanceCheck/View/AttendanceCheckView.swift rename to Projects/Presentation/Management/Sources/AttendanceCheck/View/AttendanceCheckView.swift diff --git a/Projects/Presentation/Presentation/Sources/CoreMember/Coordinator/Reducer/CoreMemberCoordinator.swift b/Projects/Presentation/Management/Sources/Coordinator/Reducer/ManagementCoordinator.swift similarity index 93% rename from Projects/Presentation/Presentation/Sources/CoreMember/Coordinator/Reducer/CoreMemberCoordinator.swift rename to Projects/Presentation/Management/Sources/Coordinator/Reducer/ManagementCoordinator.swift index 1b17c02f..90e7500e 100644 --- a/Projects/Presentation/Presentation/Sources/CoreMember/Coordinator/Reducer/CoreMemberCoordinator.swift +++ b/Projects/Presentation/Management/Sources/Coordinator/Reducer/ManagementCoordinator.swift @@ -1,5 +1,5 @@ // -// CoreMemberCoordinator.swift +// ManagementCoordinator.swift // Presentation // // Created by Wonji Suh on 11/4/24. @@ -9,13 +9,14 @@ import Foundation import Core import Utill +import Profile import ComposableArchitecture import KeychainAccess import TCACoordinators @Reducer -public struct CoreMemberCoordinator { +public struct ManagementCoordinator { public init() {} @ObservableState @@ -91,6 +92,9 @@ public struct CoreMemberCoordinator { .forEachRoute(\.routes, action: \.router) } +} + +extension ManagementCoordinator { private func routerAction( state: inout State, action: IndexedRouterActionOf @@ -144,7 +148,7 @@ public struct CoreMemberCoordinator { state: inout State, action: AsyncAction ) -> Effect { - + } private func handleInnerAction( @@ -155,10 +159,10 @@ public struct CoreMemberCoordinator { } } -extension CoreMemberCoordinator { +extension ManagementCoordinator { @Reducer(state: .equatable) public enum CoreMemberScreen{ - case coreMember(CoreMember) - case mangeProfile(ManagerProfile) + case coreMember(Management) + case mangeProfile(ProfileReducer) } } diff --git a/Projects/Presentation/Presentation/Sources/CoreMember/Coordinator/View/CoreMemberCoordinatorView.swift b/Projects/Presentation/Management/Sources/Coordinator/View/ManagementCoordinatorView.swift similarity index 65% rename from Projects/Presentation/Presentation/Sources/CoreMember/Coordinator/View/CoreMemberCoordinatorView.swift rename to Projects/Presentation/Management/Sources/Coordinator/View/ManagementCoordinatorView.swift index df4e0a3c..1a88cf37 100644 --- a/Projects/Presentation/Presentation/Sources/CoreMember/Coordinator/View/CoreMemberCoordinatorView.swift +++ b/Projects/Presentation/Management/Sources/Coordinator/View/ManagementCoordinatorView.swift @@ -1,5 +1,5 @@ // -// CoreMemberCoordinatorView.swift +// ManagementCoordinatorView.swift // Presentation // // Created by Wonji Suh on 11/4/24. @@ -9,12 +9,13 @@ import SwiftUI import ComposableArchitecture import TCACoordinators +import Profile + +public struct ManagementCoordinatorView: View { + @Bindable private var store: StoreOf -public struct CoreMemberCoordinatorView: View { - @Bindable private var store: StoreOf - public init( - store: StoreOf + store: StoreOf ) { self.store = store } @@ -23,11 +24,11 @@ public struct CoreMemberCoordinatorView: View { TCARouter(store.scope(state: \.routes, action: \.router)) { screens in switch screens.case { case .coreMember(let coreMember): - CoreMemberMainView(store: coreMember) + ManagementView(store: coreMember) .navigationBarBackButtonHidden() case .mangeProfile(let managerProfileStore): - ManagerProfileView(store: managerProfileStore) { + ProfileView(store: managerProfileStore) { store.send(.view(.backAction)) } .navigationBarBackButtonHidden() diff --git a/Projects/Presentation/Presentation/Sources/CoreMember/CoreMemberMain/Reducer/CoreMember.swift b/Projects/Presentation/Management/Sources/CoreMemberMain/Reducer/Management.swift similarity index 98% rename from Projects/Presentation/Presentation/Sources/CoreMember/CoreMemberMain/Reducer/CoreMember.swift rename to Projects/Presentation/Management/Sources/CoreMemberMain/Reducer/Management.swift index 3b6cf395..bd297441 100644 --- a/Projects/Presentation/Presentation/Sources/CoreMember/CoreMemberMain/Reducer/CoreMember.swift +++ b/Projects/Presentation/Management/Sources/CoreMemberMain/Reducer/Management.swift @@ -1,5 +1,5 @@ // -// CoreMember.swift +// Management.swift // DDDAttendance // // Created by 서원지 on 6/6/24. @@ -16,7 +16,7 @@ import KeychainAccess import FirebaseAuth @Reducer -public struct CoreMember { +public struct Management { public init() {} @ObservableState diff --git a/Projects/Presentation/Presentation/Sources/CoreMember/CoreMemberMain/View/CoreMemberMainView.swift b/Projects/Presentation/Management/Sources/CoreMemberMain/View/ManagementView.swift similarity index 96% rename from Projects/Presentation/Presentation/Sources/CoreMember/CoreMemberMain/View/CoreMemberMainView.swift rename to Projects/Presentation/Management/Sources/CoreMemberMain/View/ManagementView.swift index 3c21f4f7..0b8b0a7d 100644 --- a/Projects/Presentation/Presentation/Sources/CoreMember/CoreMemberMain/View/CoreMemberMainView.swift +++ b/Projects/Presentation/Management/Sources/CoreMemberMain/View/ManagementView.swift @@ -1,5 +1,5 @@ // -// CoreMemberMainView.swift +// ManagementView.swift // DDDAttendance // // Created by 서원지 on 6/6/24. @@ -13,11 +13,11 @@ import Model import ComposableArchitecture import SDWebImageSwiftUI -struct CoreMemberMainView: View { - @Bindable var store: StoreOf +struct ManagementView: View { + @Bindable var store: StoreOf @State var isExpanded: Bool = false - init(store: StoreOf) { + init(store: StoreOf) { self.store = store } @@ -72,7 +72,7 @@ struct CoreMemberMainView: View { } } -extension CoreMemberMainView { +extension ManagementView { @ViewBuilder fileprivate func navigationTrallingButton() -> some View { diff --git a/Projects/Presentation/Presentation/Sources/CoreMember/QrCode/QRScannerManger/QRScannerRepresentable.swift b/Projects/Presentation/Management/Sources/QrCode/QRScannerManger/QRScannerRepresentable.swift similarity index 100% rename from Projects/Presentation/Presentation/Sources/CoreMember/QrCode/QRScannerManger/QRScannerRepresentable.swift rename to Projects/Presentation/Management/Sources/QrCode/QRScannerManger/QRScannerRepresentable.swift diff --git a/Projects/Presentation/Presentation/Sources/CoreMember/QrCode/Reducer/QRCode.swift b/Projects/Presentation/Management/Sources/QrCode/Reducer/QRCode.swift similarity index 100% rename from Projects/Presentation/Presentation/Sources/CoreMember/QrCode/Reducer/QRCode.swift rename to Projects/Presentation/Management/Sources/QrCode/Reducer/QRCode.swift diff --git a/Projects/Presentation/Presentation/Sources/CoreMember/QrCode/View/QRScannerView.swift b/Projects/Presentation/Management/Sources/QrCode/View/QRScannerView.swift similarity index 100% rename from Projects/Presentation/Presentation/Sources/CoreMember/QrCode/View/QRScannerView.swift rename to Projects/Presentation/Management/Sources/QrCode/View/QRScannerView.swift diff --git a/Projects/Presentation/Presentation/Sources/CoreMember/ScheduleManager/Reducer/ScheduleManager.swift b/Projects/Presentation/Management/Sources/ScheduleManager/Reducer/ScheduleManager.swift similarity index 100% rename from Projects/Presentation/Presentation/Sources/CoreMember/ScheduleManager/Reducer/ScheduleManager.swift rename to Projects/Presentation/Management/Sources/ScheduleManager/Reducer/ScheduleManager.swift diff --git a/Projects/Presentation/Presentation/Sources/CoreMember/ScheduleManager/View/ScheduleView.swift b/Projects/Presentation/Management/Sources/ScheduleManager/View/ScheduleView.swift similarity index 98% rename from Projects/Presentation/Presentation/Sources/CoreMember/ScheduleManager/View/ScheduleView.swift rename to Projects/Presentation/Management/Sources/ScheduleManager/View/ScheduleView.swift index 3cdb644c..c9615854 100644 --- a/Projects/Presentation/Presentation/Sources/CoreMember/ScheduleManager/View/ScheduleView.swift +++ b/Projects/Presentation/Management/Sources/ScheduleManager/View/ScheduleView.swift @@ -9,6 +9,8 @@ import SwiftUI import Collections import SwiftUIX +import DesignSystem +import ComposableArchitecture struct ScheduleView: View { @Bindable var store: StoreOf diff --git a/Projects/Presentation/Member/MemberTests/Sources/Test.swift b/Projects/Presentation/Member/MemberTests/Sources/Test.swift new file mode 100644 index 00000000..7e835acf --- /dev/null +++ b/Projects/Presentation/Member/MemberTests/Sources/Test.swift @@ -0,0 +1,8 @@ +// +// base.swift +// DDDAttendance +// +// Created by Roy on 2025-11-29 +// Copyright © 2025 DDD , Ltd. All rights reserved. +// + diff --git a/Projects/Presentation/Member/Project.swift b/Projects/Presentation/Member/Project.swift new file mode 100644 index 00000000..53d90731 --- /dev/null +++ b/Projects/Presentation/Member/Project.swift @@ -0,0 +1,25 @@ +import Foundation +import ProjectDescription +import DependencyPlugin +import ProjectTemplatePlugin +import ProjectTemplatePlugin +import DependencyPackagePlugin + +let project = Project.makeModule( + name: "Member", + bundleId: .appBundleID(name: ".Member"), + product: .staticFramework, + settings: .settings(), + dependencies: [ + + .SPM.composableArchitecture, + .SPM.tcaCoordinator, + .Shared(implements: .Shareds), + .Shared(implements: .DesignSystem), + .Domain(implements: .UseCase), + .Presentation(implements: .Profile), + .Core(implements: .Core) + + ], + sources: ["Sources/**"] +) diff --git a/Projects/Presentation/Presentation/Sources/Member/Coordinator/Reducer/MemberCoordinator.swift b/Projects/Presentation/Member/Sources/Coordinator/Reducer/MemberCoordinator.swift similarity index 98% rename from Projects/Presentation/Presentation/Sources/Member/Coordinator/Reducer/MemberCoordinator.swift rename to Projects/Presentation/Member/Sources/Coordinator/Reducer/MemberCoordinator.swift index f4ca70e9..d39cab9e 100644 --- a/Projects/Presentation/Presentation/Sources/Member/Coordinator/Reducer/MemberCoordinator.swift +++ b/Projects/Presentation/Member/Sources/Coordinator/Reducer/MemberCoordinator.swift @@ -12,6 +12,7 @@ import Shareds import ComposableArchitecture import TCACoordinators +import Profile @Reducer public struct MemberCoordinator { @@ -156,7 +157,7 @@ extension MemberCoordinator { @Reducer(state: .equatable) public enum MemberScreen { case member(MemberMain) - case profile(ManagerProfile) + case profile(ProfileReducer) case qrCode(MemberQRCode) } } diff --git a/Projects/Presentation/Presentation/Sources/Member/Coordinator/View/MemberCoordinatorView.swift b/Projects/Presentation/Member/Sources/Coordinator/View/MemberCoordinatorView.swift similarity index 94% rename from Projects/Presentation/Presentation/Sources/Member/Coordinator/View/MemberCoordinatorView.swift rename to Projects/Presentation/Member/Sources/Coordinator/View/MemberCoordinatorView.swift index 36f05aca..66785757 100644 --- a/Projects/Presentation/Presentation/Sources/Member/Coordinator/View/MemberCoordinatorView.swift +++ b/Projects/Presentation/Member/Sources/Coordinator/View/MemberCoordinatorView.swift @@ -9,6 +9,7 @@ import SwiftUI import ComposableArchitecture import TCACoordinators +import Profile public struct MemberCoordinatorView: View { @Bindable private var store: StoreOf @@ -27,7 +28,7 @@ public struct MemberCoordinatorView: View { .navigationBarBackButtonHidden() case .profile(let profileStore): - ManagerProfileView(store: profileStore) { + ProfileView(store: profileStore) { store.send(.view(.backAction)) } .navigationBarBackButtonHidden() diff --git a/Projects/Presentation/Presentation/Sources/Member/MemberMain/Reducer/MemberMain.swift b/Projects/Presentation/Member/Sources/MemberMain/Reducer/MemberMain.swift similarity index 100% rename from Projects/Presentation/Presentation/Sources/Member/MemberMain/Reducer/MemberMain.swift rename to Projects/Presentation/Member/Sources/MemberMain/Reducer/MemberMain.swift diff --git a/Projects/Presentation/Presentation/Sources/Member/MemberMain/View/MemberMainView.swift b/Projects/Presentation/Member/Sources/MemberMain/View/MemberMainView.swift similarity index 100% rename from Projects/Presentation/Presentation/Sources/Member/MemberMain/View/MemberMainView.swift rename to Projects/Presentation/Member/Sources/MemberMain/View/MemberMainView.swift diff --git a/Projects/Presentation/Presentation/Sources/Member/QRCode/Reducer/MemberQRCode.swift b/Projects/Presentation/Member/Sources/QRCode/Reducer/MemberQRCode.swift similarity index 100% rename from Projects/Presentation/Presentation/Sources/Member/QRCode/Reducer/MemberQRCode.swift rename to Projects/Presentation/Member/Sources/QRCode/Reducer/MemberQRCode.swift diff --git a/Projects/Presentation/Presentation/Sources/Member/QRCode/View/MemberQRCodeView.swift b/Projects/Presentation/Member/Sources/QRCode/View/MemberQRCodeView.swift similarity index 100% rename from Projects/Presentation/Presentation/Sources/Member/QRCode/View/MemberQRCodeView.swift rename to Projects/Presentation/Member/Sources/QRCode/View/MemberQRCodeView.swift diff --git a/Projects/Presentation/Presentation/Project.swift b/Projects/Presentation/Presentation/Project.swift index f7d7f4d9..69411e6f 100644 --- a/Projects/Presentation/Presentation/Project.swift +++ b/Projects/Presentation/Presentation/Project.swift @@ -10,7 +10,13 @@ let project = Project.makeModule( settings: .settings(), dependencies: [ .Shared(implements: .Shareds), - .Core(implements: .Core) + .Core(implements: .Core), + .Presentation(implements: .Auth), + .Presentation(implements: .Splash), + .Presentation(implements: .Management), + .Presentation(implements: .Member), + + ], sources: ["Sources/**"] ) diff --git a/Projects/Presentation/Presentation/Sources/Exported/PresentationExported.swift b/Projects/Presentation/Presentation/Sources/Exported/PresentationExported.swift index d9d167b5..f1e3a89b 100644 --- a/Projects/Presentation/Presentation/Sources/Exported/PresentationExported.swift +++ b/Projects/Presentation/Presentation/Sources/Exported/PresentationExported.swift @@ -8,3 +8,8 @@ @_exported import ComposableArchitecture @_exported import Shareds @_exported import SwiftUIX +@_exported import Splash +@_exported import Auth +@_exported import Member +@_exported import Management + diff --git a/Projects/Presentation/Profile/ProfileTests/Sources/Test.swift b/Projects/Presentation/Profile/ProfileTests/Sources/Test.swift new file mode 100644 index 00000000..7e835acf --- /dev/null +++ b/Projects/Presentation/Profile/ProfileTests/Sources/Test.swift @@ -0,0 +1,8 @@ +// +// base.swift +// DDDAttendance +// +// Created by Roy on 2025-11-29 +// Copyright © 2025 DDD , Ltd. All rights reserved. +// + diff --git a/Projects/Presentation/Profile/Project.swift b/Projects/Presentation/Profile/Project.swift new file mode 100644 index 00000000..f1681459 --- /dev/null +++ b/Projects/Presentation/Profile/Project.swift @@ -0,0 +1,24 @@ +import Foundation +import ProjectDescription +import DependencyPlugin +import ProjectTemplatePlugin +import ProjectTemplatePlugin +import DependencyPackagePlugin + +let project = Project.makeModule( + name: "Profile", + bundleId: .appBundleID(name: ".Profile"), + product: .staticFramework, + settings: .settings(), + dependencies: [ + + .SPM.composableArchitecture, + .SPM.tcaCoordinator, + .Shared(implements: .Shareds), + .Shared(implements: .DesignSystem), + .Domain(implements: .UseCase), + .Core(implements: .Core) + + ], + sources: ["Sources/**"] +) diff --git a/Projects/Presentation/Presentation/Sources/CreateApp/Reducer/CreateApp.swift b/Projects/Presentation/Profile/Sources/CreateApp/Reducer/CreateApp.swift similarity index 100% rename from Projects/Presentation/Presentation/Sources/CreateApp/Reducer/CreateApp.swift rename to Projects/Presentation/Profile/Sources/CreateApp/Reducer/CreateApp.swift diff --git a/Projects/Presentation/Presentation/Sources/CreateApp/View/CreateAppView.swift b/Projects/Presentation/Profile/Sources/CreateApp/View/CreateAppView.swift similarity index 98% rename from Projects/Presentation/Presentation/Sources/CreateApp/View/CreateAppView.swift rename to Projects/Presentation/Profile/Sources/CreateApp/View/CreateAppView.swift index aadcd11f..b76e3b51 100644 --- a/Projects/Presentation/Presentation/Sources/CreateApp/View/CreateAppView.swift +++ b/Projects/Presentation/Profile/Sources/CreateApp/View/CreateAppView.swift @@ -9,6 +9,8 @@ import SwiftUI import ComposableArchitecture import SwiftUIX +import DesignSystem +import Core struct CreateAppView: View { @Bindable private var store: StoreOf diff --git a/Projects/Presentation/Presentation/Sources/CoreMember/ManagerProfile/Reducer/ManagerProfile.swift b/Projects/Presentation/Profile/Sources/Main/Reducer/ProfileReducer.swift similarity index 98% rename from Projects/Presentation/Presentation/Sources/CoreMember/ManagerProfile/Reducer/ManagerProfile.swift rename to Projects/Presentation/Profile/Sources/Main/Reducer/ProfileReducer.swift index 0361f867..eb44b1f1 100644 --- a/Projects/Presentation/Presentation/Sources/CoreMember/ManagerProfile/Reducer/ManagerProfile.swift +++ b/Projects/Presentation/Profile/Sources/Main/Reducer/ProfileReducer.swift @@ -1,5 +1,5 @@ // -// ManagerProfile.swift +// ProfileReducer.swift // DDDAttendance // // Created by 서원지 on 7/17/24. @@ -15,7 +15,7 @@ import ComposableArchitecture import KeychainAccess @Reducer -public struct ManagerProfile { +public struct ProfileReducer { public init() {} @ObservableState diff --git a/Projects/Presentation/Presentation/Sources/CoreMember/ManagerProfile/View/ManagerProfileView.swift b/Projects/Presentation/Profile/Sources/Main/View/ProfileView.swift similarity index 97% rename from Projects/Presentation/Presentation/Sources/CoreMember/ManagerProfile/View/ManagerProfileView.swift rename to Projects/Presentation/Profile/Sources/Main/View/ProfileView.swift index d7cec3f9..08ce81d9 100644 --- a/Projects/Presentation/Presentation/Sources/CoreMember/ManagerProfile/View/ManagerProfileView.swift +++ b/Projects/Presentation/Profile/Sources/Main/View/ProfileView.swift @@ -11,13 +11,14 @@ import Model import ComposableArchitecture import SDWebImageSwiftUI +import DesignSystem -public struct ManagerProfileView: View { - @Bindable private var store: StoreOf +public struct ProfileView: View { + @Bindable private var store: StoreOf private var backAction: () -> Void public init( - store: StoreOf, + store: StoreOf, backAction: @escaping () -> Void ) { self.store = store @@ -54,7 +55,7 @@ public struct ManagerProfileView: View { } } -extension ManagerProfileView { +extension ProfileView { @ViewBuilder fileprivate func mangerProfileLoadingData() -> some View { if store.profileDTOModel == nil { diff --git a/Projects/Presentation/Splash/Project.swift b/Projects/Presentation/Splash/Project.swift new file mode 100644 index 00000000..0e88f2fc --- /dev/null +++ b/Projects/Presentation/Splash/Project.swift @@ -0,0 +1,24 @@ +import Foundation +import ProjectDescription +import DependencyPlugin +import ProjectTemplatePlugin +import ProjectTemplatePlugin +import DependencyPackagePlugin + +let project = Project.makeModule( + name: "Splash", + bundleId: .appBundleID(name: ".Splash"), + product: .staticFramework, + settings: .settings(), + dependencies: [ + .SPM.composableArchitecture, + .SPM.tcaCoordinator, + .Shared(implements: .Shareds), + .Shared(implements: .DesignSystem), + .Domain(implements: .UseCase), + .Core(implements: .Core) + + ], + sources: ["Sources/**"], + hasTests: true +) diff --git a/Projects/Presentation/Presentation/Sources/Splash/Reducer/Splash.swift b/Projects/Presentation/Splash/Sources/Reducer/Splash.swift similarity index 99% rename from Projects/Presentation/Presentation/Sources/Splash/Reducer/Splash.swift rename to Projects/Presentation/Splash/Sources/Reducer/Splash.swift index c2121eb1..18ceb202 100644 --- a/Projects/Presentation/Presentation/Sources/Splash/Reducer/Splash.swift +++ b/Projects/Presentation/Splash/Sources/Reducer/Splash.swift @@ -20,7 +20,6 @@ public struct Splash { @ObservableState public struct State: Equatable { - @Shared(.inMemory("UserEntity")) var userEntity: UserEntity = .shared var loginModel: LoginModel? var profileDTOModel: ProfileResponseModel? diff --git a/Projects/Presentation/Presentation/Sources/Splash/View/SplashView.swift b/Projects/Presentation/Splash/Sources/View/SplashView.swift similarity index 100% rename from Projects/Presentation/Presentation/Sources/Splash/View/SplashView.swift rename to Projects/Presentation/Splash/Sources/View/SplashView.swift diff --git a/Projects/Presentation/Splash/Tests/Sources/Test.swift b/Projects/Presentation/Splash/Tests/Sources/Test.swift new file mode 100644 index 00000000..004a5543 --- /dev/null +++ b/Projects/Presentation/Splash/Tests/Sources/Test.swift @@ -0,0 +1,8 @@ +// +// base.swift +// DDDAttendance +// +// Created by Roy on 2025-11-28 +// Copyright © 2025 DDD , Ltd. All rights reserved. +// + diff --git a/Tuist/Templates/Module/Project.stencil b/Tuist/Templates/Module/Project.stencil index dcb057ea..591d062d 100644 --- a/Tuist/Templates/Module/Project.stencil +++ b/Tuist/Templates/Module/Project.stencil @@ -5,7 +5,7 @@ import ProjectTemplatePlugin import ProjectTemplatePlugin import DependencyPackagePlugin -let project = Project.makeAppModule( +let project = Project.makeModule( name: "{{ name }}", bundleId: .appBundleID(name: ".{{name}}"), product: .staticFramework, diff --git a/TuistTool.swift b/TuistTool.swift old mode 100644 new mode 100755 index 8b3b129e..26787930 --- a/TuistTool.swift +++ b/TuistTool.swift @@ -722,48 +722,110 @@ func parseSPMLibraries() -> [String] { } } -// MARK: - registerModule -func registerModule() { - print("\n🚀 새 모듈 등록을 시작합니다.") - let moduleInput = prompt("모듈 이름을 입력하세요 (예: Presentation_Home, Shared_Logger, Domain_Auth 등)") - let moduleName = prompt("생성할 모듈 이름을 입력하세요 (예: Home)") +// MARK: - Module Auto Registration Helper +func addModuleToPluginAutomatically(moduleName: String, layer: String) -> Bool { + let modulesFilePath = "Plugins/DependencyPlugin/ProjectDescriptionHelpers/TargetDependency+Module/Modules.swift" - var dependencies: [String] = [] - while true { - print("의존성 종류 선택:") - print(" 1) SPM") - print(" 2) 내부 모듈") - print(" 3) 종료") - let choice = prompt("번호 선택") - if choice == "3" { break } - - if choice == "1" { - let options = parseSPMLibraries() - for (i, lib) in options.enumerated() { print(" \(i + 1). \(lib)") } - let selected = Int(prompt("선택할 번호 입력")) ?? 0 - if (1...options.count).contains(selected) { - dependencies.append(".SPM.\(options[selected - 1])") - } - } else if choice == "2" { - let types = availableModuleTypes() - for (i, type) in types.enumerated() { print(" \(i + 1). \(type)") } - let typeIndex = Int(prompt("의존할 모듈 타입 번호 입력")) ?? 0 - guard (1...types.count).contains(typeIndex) else { continue } - let keyword = types[typeIndex - 1] - - let options = parseModulesFromFile(keyword: keyword) - for (i, opt) in options.enumerated() { print(" \(i + 1). \(opt)") } - let moduleIndex = Int(prompt("선택할 번호 입력")) ?? 0 - if (1...options.count).contains(moduleIndex) { - dependencies.append(".\(keyword)(implements: .\(options[moduleIndex - 1]))") + guard FileManager.default.fileExists(atPath: modulesFilePath) else { + print("❌ Modules.swift 파일을 찾을 수 없습니다: \(modulesFilePath)") + return false + } + + do { + var content = try String(contentsOfFile: modulesFilePath, encoding: .utf8) + let originalContent = content + + // 레이어별 enum 이름 매핑 + let enumName: String + switch layer { + case "Presentation": + enumName = "Presentations" + case "Shared": + enumName = "Shareds" + case "Domain", "Core/Domain": + enumName = "Domains" + case "Core/Interface": + enumName = "Interfaces" + case "Core/Network", "Network": + enumName = "Networks" + case "Data", "Core/Data": + enumName = "Datas" + case "Core": + enumName = "Cores" + default: + print("❌ 알 수 없는 레이어: \(layer)") + return false + } + + // enum 찾기 및 case 추가 + let enumPattern = "enum \(enumName): String, CaseIterable \\{([\\s\\S]*?)\\}" + + guard let enumRegex = try? NSRegularExpression(pattern: enumPattern), + let enumMatch = enumRegex.firstMatch(in: content, range: NSRange(content.startIndex..., in: content)), + let enumRange = Range(enumMatch.range, in: content) else { + print("❌ \(enumName) enum을 찾을 수 없습니다") + return false + } + + // enum 내부 검사하여 중복 확인 + if let innerRange = Range(enumMatch.range(at: 1), in: content) { + let innerContent = String(content[innerRange]) + if innerContent.contains("case \(moduleName)") { + print("ℹ️ 모듈 '\(moduleName)'이 이미 \(enumName)에 존재합니다") + return true } } + + // 마지막 case 뒤에 새로운 case 추가 + let enumEndIndex = content.index(before: enumRange.upperBound) + let newCase = " case \(moduleName)\n " + content.insert(contentsOf: newCase, at: enumEndIndex) + + // 파일 업데이트 + if content != originalContent { + try content.write(toFile: modulesFilePath, atomically: true, encoding: .utf8) + print("✅ \(enumName)에 '\(moduleName)' 모듈이 자동으로 추가되었습니다") + return true + } + + } catch { + print("❌ Modules.swift 파일 업데이트 실패: \(error)") + return false } - let author = (try? runCapture("git", arguments: ["config", "--get", "user.name"])) ?? "Unknown" - let formatter = DateFormatter(); formatter.dateFormat = "yyyy-MM-dd" - let currentDate = formatter.string(from: Date()) + return false +} + +// 기본 의존성을 자동으로 추가하는 함수 +func getDefaultDependencies(for layer: String) -> [String] { + var dependencies: [String] = [] + + // 모든 모듈에 공통 SPM 의존성 추가 + dependencies.append(".SPM.composableArchitecture") + dependencies.append(".SPM.tcaCoordinator") + + // ✨ Presentation 레이어만 추가 내부 모듈 의존성 자동 추가 + switch layer { + case "Presentation": + dependencies.append(".Shared(implements: .Shareds)") + dependencies.append(".Shared(implements: .DesignSystem)") + dependencies.append(".Domain(implements: .UseCase)") + + default: + // 다른 모든 레이어는 SPM 의존성만 추가 (내부 모듈 의존성은 수동 선택) + break + } + + return dependencies +} +// MARK: - registerModule +func registerModule() { + print("\n🚀 새 모듈 등록을 시작합니다.") + let moduleInput = prompt("모듈 이름을 입력하세요 (예: Presentation_Home, Shared_Logger, Domain_Auth 등)") + let moduleName = prompt("생성할 모듈 이름을 입력하세요 (예: Home)") + + // 레이어 자동 감지 let layer: String = { let lower = moduleInput.lowercased() if lower.starts(with: "presentation") { return "Presentation" } @@ -775,6 +837,72 @@ func registerModule() { else { return "Core" } }() + print("📍 감지된 레이어: \(layer)") + + // 기본 의존성 자동 추가 (composable, tcacoordinator, domain, shared) + var dependencies = getDefaultDependencies(for: layer) + print("✅ 기본 의존성이 자동으로 추가되었습니다:") + for dep in dependencies { + print(" - \(dep)") + } + + // 추가 의존성 선택 (선택사항) + print("\n🔧 추가 의존성을 선택하시겠습니까? (기본 의존성 외에)") + let wantAdditional = prompt("추가 의존성을 선택하시겠습니까? (y/N)").lowercased() + + if wantAdditional == "y" { + while true { + print("\n추가 의존성 종류 선택:") + print(" 1) SPM") + print(" 2) 내부 모듈") + print(" 3) 종료") + let choice = prompt("번호 선택") + if choice == "3" { break } + + if choice == "1" { + let options = parseSPMLibraries() + print("\n사용 가능한 SPM 라이브러리:") + for (i, lib) in options.enumerated() { print(" \(i + 1). \(lib)") } + let selected = Int(prompt("선택할 번호 입력 (0: 건너뜀)")) ?? 0 + if (1...options.count).contains(selected) { + let newDep = ".SPM.\(options[selected - 1])" + if !dependencies.contains(newDep) { + dependencies.append(newDep) + print("✅ 추가됨: \(newDep)") + } else { + print("ℹ️ 이미 추가된 의존성입니다") + } + } + } else if choice == "2" { + let types = availableModuleTypes() + print("\n사용 가능한 모듈 타입:") + for (i, type) in types.enumerated() { print(" \(i + 1). \(type)") } + let typeIndex = Int(prompt("의존할 모듈 타입 번호 입력 (0: 건너뜀)")) ?? 0 + guard (1...types.count).contains(typeIndex) else { continue } + let keyword = types[typeIndex - 1] + + let options = parseModulesFromFile(keyword: keyword) + print("\n사용 가능한 \(keyword) 모듈:") + for (i, opt) in options.enumerated() { print(" \(i + 1). \(opt)") } + let moduleIndex = Int(prompt("선택할 번호 입력 (0: 건너뜀)")) ?? 0 + if (1...options.count).contains(moduleIndex) { + let newDep = ".\(keyword)(implements: .\(options[moduleIndex - 1]))" + if !dependencies.contains(newDep) { + dependencies.append(newDep) + print("✅ 추가됨: \(newDep)") + } else { + print("ℹ️ 이미 추가된 의존성입니다") + } + } + } + } + } + + let author = (try? runCapture("git", arguments: ["config", "--get", "user.name"])) ?? "Unknown" + let formatter = DateFormatter(); formatter.dateFormat = "yyyy-MM-dd" + let currentDate = formatter.string(from: Date()) + + print("\n🔨 모듈 생성 중...") let result = run("tuist", arguments: [ "scaffold", "Module", "--layer", layer, @@ -784,23 +912,40 @@ func registerModule() { ]) if result == 0 { + print("✅ Tuist 모듈 생성 완료") + + // ✅ 자동으로 Modules.swift에 모듈 추가 + print("\n📝 Modules.swift에 모듈 등록 중...") + if addModuleToPluginAutomatically(moduleName: moduleName, layer: layer) { + print("✅ Modules.swift 등록 완료") + } else { + print("⚠️ Modules.swift 등록 실패 - 수동으로 추가해주세요") + } + + // Project.swift에 의존성 추가 let projectFile = "Projects/\(layer)/\(moduleName)/Project.swift" if var content = try? String(contentsOfFile: projectFile, encoding: .utf8), let range = content.range(of: "dependencies: [") { let insertIndex = content.index(after: range.upperBound) - let dependencyList = dependencies.map { " \($0)" }.joined(separator: ",\n") - content.insert(contentsOf: "\n\(dependencyList),", at: insertIndex) - try? content.write(toFile: projectFile, atomically: true, encoding: .utf8) - print("✅ 의존성 추가 완료:\n\(dependencyList)") + let dependencyList = dependencies.map { " \($0)" }.joined(separator: ",\n") + if !dependencies.isEmpty { + content.insert(contentsOf: "\n\(dependencyList)\n ", at: insertIndex) + try? content.write(toFile: projectFile, atomically: true, encoding: .utf8) + print("\n✅ 의존성 추가 완료:") + for dep in dependencies { + print(" - \(dep)") + } + } } - print("✅ 모듈 생성 완료: Projects/\(layer)/\(moduleName)") + + print("\n✅ 모듈 생성 완료: Projects/\(layer)/\(moduleName)") // ────────────────────────────── // ✅ Domain 모듈일 경우 Interface 폴더 생성 여부 확인 - if layer == "Core/Domain" { + if layer == "Domain" || layer == "Core/Domain" { let askInterface = prompt("이 Domain 모듈에 Interface 폴더를 생성할까요? (y/N)").lowercased() if askInterface == "y" { - let interfaceDir = "Projects/Core/Domain/\(moduleName)/Interface/Sources" + let interfaceDir = "Projects/\(layer)/\(moduleName)/Interface/Sources" let baseFilePath = "\(interfaceDir)/Base.swift" if !FileManager.default.fileExists(atPath: interfaceDir) { @@ -823,9 +968,9 @@ func registerModule() { // // Created by \(author) on \(currentDate). // - + import Foundation - + public protocol \(moduleName)Interface { // TODO: 정의 추가 } @@ -841,6 +986,12 @@ func registerModule() { } } } + + print("\n🎉 모든 작업이 완료되었습니다!") + print("💡 다음 단계:") + print(" 1. 'tuist generate' 명령어로 프로젝트를 새로고침하세요") + print(" 2. Xcode에서 새로운 모듈을 확인하세요") + } else { print("❌ 모듈 생성 실패") } diff --git a/make b/make index e9855243f12ce01006c3972fb699f4e41a408b5f..ade16fb07984c9dcd90ef3ef0f2224c682bbbd5f 100755 GIT binary patch literal 245224 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ú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

lipPUSj97kzU9}J<&Nq9ou(OS0odjfqGt(i7cJc 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 M9}S8rrS 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 From 6b698ec7d0308e35d69be2e4fe371236fa4b7402 Mon Sep 17 00:00:00 2001 From: Roy Date: Sat, 29 Nov 2025 05:53:54 +0900 Subject: [PATCH 5/5] =?UTF-8?q?=F0=9F=AA=9B[chore]:=20=EB=AA=A8=EB=93=88?= =?UTF-8?q?=20=EA=B0=90=EC=A7=80=20=EB=A1=9C=EC=A7=81=20=EA=B0=9C=EC=84=A0?= =?UTF-8?q?=20-=20prefix=EB=A5=BC=20hasPrefix=EB=A1=9C=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TuistTool.swift | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/TuistTool.swift b/TuistTool.swift index 26787930..ef9e76ea 100755 --- a/TuistTool.swift +++ b/TuistTool.swift @@ -828,12 +828,12 @@ func registerModule() { // 레이어 자동 감지 let layer: String = { let lower = moduleInput.lowercased() - if lower.starts(with: "presentation") { return "Presentation" } - else if lower.starts(with: "shared") { return "Shared" } - else if lower.starts(with: "domain") { return "Domain" } - else if lower.starts(with: "interface"){ return "Core/Interface" } - else if lower.starts(with: "network"){ return "Core/Network" } - else if lower.starts(with: "data") { return "Data" } + if lower.hasPrefix("presentation") { return "Presentation" } + else if lower.hasPrefix("shared") { return "Shared" } + else if lower.contains("domain") { return "Domain" } + else if lower.contains("interface"){ return "Core/Interface" } + else if lower.contains("network"){ return "Network" } + else if lower.contains("data") { return "Data" } else { return "Core" } }() @@ -942,7 +942,7 @@ func registerModule() { // ────────────────────────────── // ✅ Domain 모듈일 경우 Interface 폴더 생성 여부 확인 - if layer == "Domain" || layer == "Core/Domain" { + if layer.lowercased().contains("domain") { let askInterface = prompt("이 Domain 모듈에 Interface 폴더를 생성할까요? (y/N)").lowercased() if askInterface == "y" { let interfaceDir = "Projects/\(layer)/\(moduleName)/Interface/Sources"