diff --git a/.gitignore b/.gitignore index ace31153..dae2a165 100644 --- a/.gitignore +++ b/.gitignore @@ -40,6 +40,8 @@ Pods/ xcuserdata/ .DS_Store/ +*.Gemfile +*,lock *.p8 *.env *.cer @@ -54,6 +56,8 @@ xcuserdata/ *.Signing/ *.key *.encrypted +*.mobileprovision +*.pingpong.co.mobileprovision ## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9) *.xcscmblueprint diff --git a/PingPong/AppStore_com.pingpong.co.mobileprovision b/PingPong/AppStore_com.pingpong.co.mobileprovision new file mode 100644 index 00000000..82a17c3b Binary files /dev/null and b/PingPong/AppStore_com.pingpong.co.mobileprovision differ diff --git a/PingPong/Gemfile b/PingPong/Gemfile new file mode 100644 index 00000000..7a118b49 --- /dev/null +++ b/PingPong/Gemfile @@ -0,0 +1,3 @@ +source "https://rubygems.org" + +gem "fastlane" diff --git a/PingPong/Gemfile.lock b/PingPong/Gemfile.lock new file mode 100644 index 00000000..7621bef2 --- /dev/null +++ b/PingPong/Gemfile.lock @@ -0,0 +1,218 @@ +GEM + remote: https://rubygems.org/ + specs: + CFPropertyList (3.0.6) + rexml + addressable (2.8.4) + public_suffix (>= 2.0.2, < 6.0) + artifactory (3.0.15) + atomos (0.1.3) + aws-eventstream (1.2.0) + aws-partitions (1.777.0) + aws-sdk-core (3.174.0) + aws-eventstream (~> 1, >= 1.0.2) + aws-partitions (~> 1, >= 1.651.0) + aws-sigv4 (~> 1.5) + jmespath (~> 1, >= 1.6.1) + aws-sdk-kms (1.66.0) + aws-sdk-core (~> 3, >= 3.174.0) + aws-sigv4 (~> 1.1) + aws-sdk-s3 (1.123.1) + aws-sdk-core (~> 3, >= 3.174.0) + aws-sdk-kms (~> 1) + aws-sigv4 (~> 1.4) + aws-sigv4 (1.5.2) + aws-eventstream (~> 1, >= 1.0.2) + babosa (1.0.4) + claide (1.1.0) + colored (1.2) + colored2 (3.1.2) + commander (4.6.0) + highline (~> 2.0.0) + declarative (0.0.20) + digest-crc (0.6.4) + rake (>= 12.0.0, < 14.0.0) + domain_name (0.5.20190701) + unf (>= 0.0.5, < 1.0.0) + dotenv (2.8.1) + emoji_regex (3.2.3) + excon (0.100.0) + faraday (1.10.3) + faraday-em_http (~> 1.0) + faraday-em_synchrony (~> 1.0) + faraday-excon (~> 1.1) + faraday-httpclient (~> 1.0) + faraday-multipart (~> 1.0) + faraday-net_http (~> 1.0) + faraday-net_http_persistent (~> 1.0) + faraday-patron (~> 1.0) + faraday-rack (~> 1.0) + faraday-retry (~> 1.0) + ruby2_keywords (>= 0.0.4) + faraday-cookie_jar (0.0.7) + faraday (>= 0.8.0) + http-cookie (~> 1.0.0) + faraday-em_http (1.0.0) + faraday-em_synchrony (1.0.0) + faraday-excon (1.1.0) + faraday-httpclient (1.0.1) + faraday-multipart (1.0.4) + multipart-post (~> 2) + faraday-net_http (1.0.1) + faraday-net_http_persistent (1.2.0) + faraday-patron (1.0.0) + faraday-rack (1.0.0) + faraday-retry (1.0.3) + faraday_middleware (1.2.0) + faraday (~> 1.0) + fastimage (2.2.7) + fastlane (2.213.0) + CFPropertyList (>= 2.3, < 4.0.0) + addressable (>= 2.8, < 3.0.0) + artifactory (~> 3.0) + aws-sdk-s3 (~> 1.0) + babosa (>= 1.0.3, < 2.0.0) + bundler (>= 1.12.0, < 3.0.0) + colored + commander (~> 4.6) + dotenv (>= 2.1.1, < 3.0.0) + emoji_regex (>= 0.1, < 4.0) + excon (>= 0.71.0, < 1.0.0) + faraday (~> 1.0) + faraday-cookie_jar (~> 0.0.6) + faraday_middleware (~> 1.0) + fastimage (>= 2.1.0, < 3.0.0) + gh_inspector (>= 1.1.2, < 2.0.0) + google-apis-androidpublisher_v3 (~> 0.3) + google-apis-playcustomapp_v1 (~> 0.1) + google-cloud-storage (~> 1.31) + highline (~> 2.0) + json (< 3.0.0) + jwt (>= 2.1.0, < 3) + mini_magick (>= 4.9.4, < 5.0.0) + multipart-post (>= 2.0.0, < 3.0.0) + naturally (~> 2.2) + optparse (~> 0.1.1) + plist (>= 3.1.0, < 4.0.0) + rubyzip (>= 2.0.0, < 3.0.0) + security (= 0.1.3) + simctl (~> 1.6.3) + terminal-notifier (>= 2.0.0, < 3.0.0) + terminal-table (>= 1.4.5, < 2.0.0) + tty-screen (>= 0.6.3, < 1.0.0) + tty-spinner (>= 0.8.0, < 1.0.0) + word_wrap (~> 1.0.0) + xcodeproj (>= 1.13.0, < 2.0.0) + xcpretty (~> 0.3.0) + xcpretty-travis-formatter (>= 0.0.3) + gh_inspector (1.1.3) + google-apis-androidpublisher_v3 (0.43.0) + google-apis-core (>= 0.11.0, < 2.a) + google-apis-core (0.11.0) + addressable (~> 2.5, >= 2.5.1) + googleauth (>= 0.16.2, < 2.a) + httpclient (>= 2.8.1, < 3.a) + mini_mime (~> 1.0) + representable (~> 3.0) + retriable (>= 2.0, < 4.a) + rexml + webrick + google-apis-iamcredentials_v1 (0.17.0) + google-apis-core (>= 0.11.0, < 2.a) + google-apis-playcustomapp_v1 (0.13.0) + google-apis-core (>= 0.11.0, < 2.a) + google-apis-storage_v1 (0.19.0) + google-apis-core (>= 0.9.0, < 2.a) + google-cloud-core (1.6.0) + google-cloud-env (~> 1.0) + google-cloud-errors (~> 1.0) + google-cloud-env (1.6.0) + faraday (>= 0.17.3, < 3.0) + google-cloud-errors (1.3.1) + google-cloud-storage (1.44.0) + addressable (~> 2.8) + digest-crc (~> 0.4) + google-apis-iamcredentials_v1 (~> 0.1) + google-apis-storage_v1 (~> 0.19.0) + google-cloud-core (~> 1.6) + googleauth (>= 0.16.2, < 2.a) + mini_mime (~> 1.0) + googleauth (1.5.2) + faraday (>= 0.17.3, < 3.a) + jwt (>= 1.4, < 3.0) + memoist (~> 0.16) + multi_json (~> 1.11) + os (>= 0.9, < 2.0) + signet (>= 0.16, < 2.a) + highline (2.0.3) + http-cookie (1.0.5) + domain_name (~> 0.5) + httpclient (2.8.3) + jmespath (1.6.2) + json (2.6.3) + jwt (2.7.1) + memoist (0.16.2) + mini_magick (4.12.0) + mini_mime (1.1.2) + multi_json (1.15.0) + multipart-post (2.3.0) + nanaimo (0.3.0) + naturally (2.2.1) + optparse (0.1.1) + os (1.1.4) + plist (3.7.0) + public_suffix (5.0.1) + rake (13.0.6) + representable (3.2.0) + declarative (< 0.1.0) + trailblazer-option (>= 0.1.1, < 0.2.0) + uber (< 0.2.0) + retriable (3.1.2) + rexml (3.2.5) + rouge (2.0.7) + ruby2_keywords (0.0.5) + rubyzip (2.3.2) + security (0.1.3) + signet (0.17.0) + addressable (~> 2.8) + faraday (>= 0.17.5, < 3.a) + jwt (>= 1.5, < 3.0) + multi_json (~> 1.10) + simctl (1.6.10) + CFPropertyList + naturally + terminal-notifier (2.0.0) + terminal-table (1.8.0) + unicode-display_width (~> 1.1, >= 1.1.1) + trailblazer-option (0.1.2) + tty-cursor (0.7.1) + tty-screen (0.8.1) + tty-spinner (0.9.3) + tty-cursor (~> 0.7) + uber (0.1.0) + unf (0.1.4) + unf_ext + unf_ext (0.0.8.2) + unicode-display_width (1.8.0) + webrick (1.8.1) + word_wrap (1.0.0) + xcodeproj (1.22.0) + CFPropertyList (>= 2.3.3, < 4.0) + atomos (~> 0.1.3) + claide (>= 1.0.2, < 2.0) + colored2 (~> 3.1) + nanaimo (~> 0.3.0) + rexml (~> 3.2.4) + xcpretty (0.3.0) + rouge (~> 2.0.7) + xcpretty-travis-formatter (1.0.1) + xcpretty (~> 0.2, >= 0.0.7) + +PLATFORMS + x86_64-darwin-22 + +DEPENDENCIES + fastlane + +BUNDLED WITH + 2.4.7 diff --git a/PingPong/Plugins/ChaeviTuist/Package.swift b/PingPong/Plugins/PingPongs/Package.swift similarity index 100% rename from PingPong/Plugins/ChaeviTuist/Package.swift rename to PingPong/Plugins/PingPongs/Package.swift diff --git a/PingPong/Plugins/ChaeviTuist/Plugin.swift b/PingPong/Plugins/PingPongs/Plugin.swift similarity index 100% rename from PingPong/Plugins/ChaeviTuist/Plugin.swift rename to PingPong/Plugins/PingPongs/Plugin.swift diff --git a/PingPong/Tuist/ProjectDescriptionHelpers/Dependency+Project.swift b/PingPong/Plugins/PingPongs/ProjectDescriptionHelpers/Dependency+Project.swift similarity index 70% rename from PingPong/Tuist/ProjectDescriptionHelpers/Dependency+Project.swift rename to PingPong/Plugins/PingPongs/ProjectDescriptionHelpers/Dependency+Project.swift index 7c32554c..9513b82e 100644 --- a/PingPong/Tuist/ProjectDescriptionHelpers/Dependency+Project.swift +++ b/PingPong/Plugins/PingPongs/ProjectDescriptionHelpers/Dependency+Project.swift @@ -1,8 +1,8 @@ // // Dependency+Project.swift -// ProjectDescriptionHelpers +// Config // -// Created by 서원지 on 2023/05/22. +// Created by 서원지 on 2023/06/11. // import ProjectDescription @@ -12,6 +12,8 @@ public extension TargetDependency { } public extension TargetDependency.Projcet { + static let HomeApp = TargetDependency.project(target: "HomeApp", path: .relativeToRoot("Projects/HomeApp")) static let Network = TargetDependency.project(target: "Network", path: .relativeToRoot("Projects/Network")) static let Component = TargetDependency.project(target: "Component", path: .relativeToRoot("Projects/Component")) } + diff --git a/PingPong/Tuist/ProjectDescriptionHelpers/Dependency+SPM.swift b/PingPong/Plugins/PingPongs/ProjectDescriptionHelpers/Dependency+SPM.swift similarity index 88% rename from PingPong/Tuist/ProjectDescriptionHelpers/Dependency+SPM.swift rename to PingPong/Plugins/PingPongs/ProjectDescriptionHelpers/Dependency+SPM.swift index 416dd347..957ea7be 100644 --- a/PingPong/Tuist/ProjectDescriptionHelpers/Dependency+SPM.swift +++ b/PingPong/Plugins/PingPongs/ProjectDescriptionHelpers/Dependency+SPM.swift @@ -1,8 +1,8 @@ // // Dependency+SPM.swift -// ProjectDescriptionHelpers +// Config // -// Created by 서원지 on 2023/05/22. +// Created by 서원지 on 2023/06/11. // import ProjectDescription @@ -17,7 +17,8 @@ public extension TargetDependency.SPM { static let CombineMoya = TargetDependency.external(name: "CombineMoya") static let PopupView = TargetDependency.external(name: "PopupView") static let Kingfisher = TargetDependency.external(name: "Kingfisher") - //MARK: - preview 관련 + } + diff --git a/PingPong/Plugins/ChaeviTuist/ProjectDescriptionHelpers/LocalHelper.swift b/PingPong/Plugins/PingPongs/ProjectDescriptionHelpers/LocalHelper.swift similarity index 100% rename from PingPong/Plugins/ChaeviTuist/ProjectDescriptionHelpers/LocalHelper.swift rename to PingPong/Plugins/PingPongs/ProjectDescriptionHelpers/LocalHelper.swift diff --git a/PingPong/Plugins/PingPongs/ProjectDescriptionHelpers/Project+Settings.swift b/PingPong/Plugins/PingPongs/ProjectDescriptionHelpers/Project+Settings.swift new file mode 100644 index 00000000..0284bcfb --- /dev/null +++ b/PingPong/Plugins/PingPongs/ProjectDescriptionHelpers/Project+Settings.swift @@ -0,0 +1,46 @@ +// +// Project+Settings.swift +// Config +// +// Created by 서원지 on 2023/06/11. +// + +import Foundation +import ProjectDescription + + +extension Settings { + public static let appMainSetting: Settings = .settings ( + base: [ + "PRODUCT_NAME": "PingPong", + "CFBundleDisplayName" : "PingPong", + "MARKETING_VERSION": .string(.appVersion()), + "AS_AUTHENTICATION_SERVICES_ENABLED": "YES", + "PUSH_NOTIFICATIONS_ENABLED":"YES", + "ENABLE_BACKGROUND_MODES" : "YES", + "BACKGROUND_MODES" : "remote-notification", + "ASSOCIATED_DOMAINS": "applinks:PingPong.page.link", + "CURRENT_PROJECT_VERSION": .string(.appBuildVersion()), + "CODE_SIGN_IDENTITY": "iPhone Developer", + "CODE_SIGN_STYLE": "Automatic", + "DEVELOPMENT_TEAM": "N94CS4N6VR", "DEBUG_INFORMATION_FORMAT": "DWARF with dSYM File", "DEVELOPMENT_ASSET_PATH" : "\"Resources/Preview Content\""] ,configurations: [ + .debug(name: .debug, settings: ["PRODUCT_NAME" : "PingPong","DISPLAY_NAME" : "PingPong"]), + .debug(name: "Dev", settings: ["PRODUCT_NAME" : "PingPong-Dev","DISPLAY_NAME" : "PingPong"]), + .release(name: .release, settings: ["DEVELOPMENT_ASSET_PATHS": "\"Resources/Preview Content\"","PRODUCT_NAME" :"PingPongs" , "DISPLAY_NAME" : "PingPong" ]) + ], defaultSettings: .recommended) + + + public static let appBaseSetting: Settings = .settings( + base: ["PRODUCT_NAME": "PingPong", + "MARKETING_VERSION": .string(.appVersion()), + "CURRENT_PROJECT_VERSION": .string(.appBuildVersion()), + "CODE_SIGN_STYLE": "Automatic", + "DEVELOPMENT_TEAM": "N94CS4N6VR", "DEBUG_INFORMATION_FORMAT": "DWARF with dSYM File"], + configurations: [ + .debug(name: .debug, settings: ["PRODUCT_NAME": "PingPong"]), + .release(name: .release, settings: ["PRODUCT_NAME": "PingPong"])], + defaultSettings: .recommended) + +} + + diff --git a/PingPong/Tuist/ProjectDescriptionHelpers/Project+Templates.swift b/PingPong/Plugins/PingPongs/ProjectDescriptionHelpers/Project+Templates.swift similarity index 91% rename from PingPong/Tuist/ProjectDescriptionHelpers/Project+Templates.swift rename to PingPong/Plugins/PingPongs/ProjectDescriptionHelpers/Project+Templates.swift index d18c8f40..ffc14b2a 100644 --- a/PingPong/Tuist/ProjectDescriptionHelpers/Project+Templates.swift +++ b/PingPong/Plugins/PingPongs/ProjectDescriptionHelpers/Project+Templates.swift @@ -1,4 +1,5 @@ import ProjectDescription +import Foundation let bundleID = "com.pingpong.co" @@ -73,11 +74,7 @@ public extension Project { dependencies: [.target(name: name)] ) - let realseScheme = Scheme.makeScheme(target: .release, name: "\(name) - Release") - let debugScheme = Scheme.makeScheme(target: .debug, name: "\(name) - Dev") - - let schemes: [Scheme] = [realseScheme, debugScheme ] let targets: [Target] = [appTarget, appDevTarget,testTarget] @@ -87,7 +84,7 @@ public extension Project { packages: packages, settings: setting, targets: targets, - schemes: schemes + schemes: scheme ) } @@ -114,3 +111,15 @@ extension Scheme { } + +extension String { + public static func appVersion() -> String { + let version: String = "1.0.0" + return version + } + + public static func appBuildVersion() -> String { + let buildVersion: String = "10" + return buildVersion + } +} diff --git a/PingPong/Tuist/ProjectDescriptionHelpers/SettingDictionary.swift b/PingPong/Plugins/PingPongs/ProjectDescriptionHelpers/SettingDictionary.swift similarity index 73% rename from PingPong/Tuist/ProjectDescriptionHelpers/SettingDictionary.swift rename to PingPong/Plugins/PingPongs/ProjectDescriptionHelpers/SettingDictionary.swift index a9291eeb..10c16b5c 100644 --- a/PingPong/Tuist/ProjectDescriptionHelpers/SettingDictionary.swift +++ b/PingPong/Plugins/PingPongs/ProjectDescriptionHelpers/SettingDictionary.swift @@ -1,8 +1,8 @@ // // SettingDictionary.swift -// ProjectDescriptionHelpers +// Config // -// Created by 서원지 on 2023/05/22. +// Created by 서원지 on 2023/06/11. // import Foundation @@ -12,6 +12,7 @@ import ProjectDescription public extension Project { static let projectSetting: SettingsDictionary = - ["OTHER_LDFLAGS": ["-ObjC", "-all_load"], "PRODUCT_NAME": "PingPong","MARKETING_VERSION": .string(buildVersion), "CURRENT_PROJECT_VERSION" : .string(buildNumber), "CODE_SIGN_STYLE": "Automatic", + ["OTHER_LDFLAGS": ["-ObjC", "-all_load"], "PRODUCT_NAME": "PingPong","MARKETING_VERSION": .string(buildVersion), "CURRENT_PROJECT_VERSION" : .string(buildNumbers), "CODE_SIGN_STYLE": "Automatic", "DEVELOPMENT_TEAM": "N94CS4N6VR", "DEBUG_INFORMATION_FORMAT": "DWARF with dSYM File" ] } + diff --git a/PingPong/Plugins/ChaeviTuist/Sources/tuist-my-cli/main.swift b/PingPong/Plugins/PingPongs/Sources/tuist-my-cli/main.swift similarity index 100% rename from PingPong/Plugins/ChaeviTuist/Sources/tuist-my-cli/main.swift rename to PingPong/Plugins/PingPongs/Sources/tuist-my-cli/main.swift diff --git a/PingPong/Projects/App/PingPongTests/Sources/HomeViewModelTest.swift b/PingPong/Projects/App/PingPongTests/Sources/HomeViewModelTest.swift index 72eaeb3f..291e2731 100644 --- a/PingPong/Projects/App/PingPongTests/Sources/HomeViewModelTest.swift +++ b/PingPong/Projects/App/PingPongTests/Sources/HomeViewModelTest.swift @@ -1,8 +1,37 @@ // // HomeViewModelTest.swift -// chaeviTests +// PingPongTests // -// Created by 서원지 on 2023/05/31. -// Copyright © 2023 DaeYoung Chaevi. co., Ltd. All rights reserved. +// Created by 서원지 on 2023/06/11. +// Copyright © 2023 Wonji Suh. All rights reserved. // +import XCTest +@testable import PingPong + +final class HomeViewModelTest: XCTestCase { + + override func setUpWithError() throws { + // Put setup code here. This method is called before the invocation of each test method in the class. + } + + override func tearDownWithError() throws { + // Put teardown code here. This method is called after the invocation of each test method in the class. + } + + func testExample() throws { + // This is an example of a functional test case. + // Use XCTAssert and related functions to verify your tests produce the correct results. + // Any test you write for XCTest can be annotated as throws and async. + // Mark your test throws to produce an unexpected failure when your test encounters an uncaught error. + // Mark your test async to allow awaiting for asynchronous code to complete. Check the results with assertions afterwards. + } + + func testPerformanceExample() throws { + // This is an example of a performance test case. + self.measure { + // Put the code you want to measure the time of here. + } + } + +} diff --git a/PingPong/Projects/App/Project.swift b/PingPong/Projects/App/Project.swift index 2dbaf473..6df8f439 100644 --- a/PingPong/Projects/App/Project.swift +++ b/PingPong/Projects/App/Project.swift @@ -1,19 +1,17 @@ // // Project.swift -// ProjectDescriptionHelpers +// Manifests // -// Created by 서원지 on 2023/05/22. +// Created by 서원지 on 2023/06/11. // -import ProjectDescription -import ProjectDescriptionHelpers - -let version: String = "1.0.0" -let buildNumber: String = "10" +import ProjectDescription +import MyPlugin +let localHelper = LocalHelper(name: "MyPlugin") let project = Project.makeModule( name: "PingPong", platform: .iOS, @@ -23,29 +21,16 @@ let project = Project.makeModule( ], - setting: .settings(base: ["PRODUCT_NAME": "PingPong", - "CFBundleDisplayName" : "PingPong", - "MARKETING_VERSION": .string(version), - "AS_AUTHENTICATION_SERVICES_ENABLED": "YES", - "PUSH_NOTIFICATIONS_ENABLED":"YES", - "ENABLE_BACKGROUND_MODES" : "YES", - "BACKGROUND_MODES" : "remote-notification", - "ASSOCIATED_DOMAINS": "applinks:PingPong.page.link", - "CURRENT_PROJECT_VERSION": .string(buildNumber), - "CODE_SIGN_IDENTITY": "iPhone Developer", - "CODE_SIGN_STYLE": "Automatic", - "DEVELOPMENT_TEAM": "N94CS4N6VR", "DEBUG_INFORMATION_FORMAT": "DWARF with dSYM File", "DEVELOPMENT_ASSET_PATH" : "\"Resources/Preview Content\""] ,configurations: [ - .debug(name: .debug, settings: ["PRODUCT_NAME" : "PingPong","DISPLAY_NAME" : "PingPong"]), - .debug(name: "Dev", settings: ["PRODUCT_NAME" : "PingPong 필수앱-Dev","DISPLAY_NAME" : "PingPong"]), - .release(name: .release, settings: ["DEVELOPMENT_ASSET_PATHS": "\"Resources/Preview Content\"","PRODUCT_NAME" :"PingPong" , "DISPLAY_NAME" : "PingPong" ]) - ], defaultSettings: .recommended), + setting: .appMainSetting, dependencies: [ .SPM.Moya, .SPM.CombineMoya, .SPM.Kingfisher, .SPM.PopupView, .Projcet.Network, - .Projcet.Component + .Projcet.Component, +// .Projcet.HomeApp + ], sources: ["Sources/**", "Resources/**", "Resources/Font/**"], diff --git a/PingPong/Projects/App/Sources/Application/PingPongApp.swift b/PingPong/Projects/App/Sources/Application/PingPongApp.swift index c3cf6d52..d656d94d 100644 --- a/PingPong/Projects/App/Sources/Application/PingPongApp.swift +++ b/PingPong/Projects/App/Sources/Application/PingPongApp.swift @@ -4,7 +4,6 @@ // // Created by Byeon jinha on 2023/06/01. // - import SwiftUI @main diff --git a/PingPong/Projects/Component/Project.swift b/PingPong/Projects/Component/Project.swift index 8b0e32b7..4184035c 100644 --- a/PingPong/Projects/Component/Project.swift +++ b/PingPong/Projects/Component/Project.swift @@ -1,31 +1,23 @@ // // Project.swift -// ProjectDescriptionHelpers +// Manifests // -// Created by 서원지 on 2023/06/02. +// Created by 서원지 on 2023/06/11. // import ProjectDescription -import ProjectDescriptionHelpers +import MyPlugin + +let localHelper = LocalHelper(name: "MyPlugin") let project = Project.makeModule( name: "Component", product: .staticFramework, - setting: .settings(base: ["PRODUCT_NAME": "chaevi", - "MARKETING_VERSION": "1.0", - "CURRENT_PROJECT_VERSION": "1", - "CODE_SIGN_STYLE": "Automatic", - "DEVELOPMENT_TEAM": "N94CS4N6VR", "DEBUG_INFORMATION_FORMAT": "DWARF with dSYM File"] ,configurations: [ - .debug(name: .debug), - .release(name: .release) - ],defaultSettings: .recommended), + setting: .appBaseSetting, dependencies: [ - .SPM.Moya, - .SPM.CombineMoya, ], sources: ["Sources/**"], resources: ["Resources/**"] ) - diff --git a/PingPong/Projects/HomeApp/Entitlements/HomeApp.entitlements b/PingPong/Projects/HomeApp/Entitlements/HomeApp.entitlements new file mode 100644 index 00000000..f3bb529a --- /dev/null +++ b/PingPong/Projects/HomeApp/Entitlements/HomeApp.entitlements @@ -0,0 +1,20 @@ + + + + + aps-environment + development + com.apple.developer.applesignin + + Default + + com.apple.developer.associated-domains + + applinks:PingPong.page.link + + com.apple.security.app-sandbox + + com.apple.security.files.user-selected.read-only + + + diff --git a/PingPong/Projects/HomeApp/HomeAppTests/Sources/HomeViewModelTest.swift b/PingPong/Projects/HomeApp/HomeAppTests/Sources/HomeViewModelTest.swift new file mode 100644 index 00000000..291e2731 --- /dev/null +++ b/PingPong/Projects/HomeApp/HomeAppTests/Sources/HomeViewModelTest.swift @@ -0,0 +1,37 @@ +// +// HomeViewModelTest.swift +// PingPongTests +// +// Created by 서원지 on 2023/06/11. +// Copyright © 2023 Wonji Suh. All rights reserved. +// + +import XCTest +@testable import PingPong + +final class HomeViewModelTest: XCTestCase { + + override func setUpWithError() throws { + // Put setup code here. This method is called before the invocation of each test method in the class. + } + + override func tearDownWithError() throws { + // Put teardown code here. This method is called after the invocation of each test method in the class. + } + + func testExample() throws { + // This is an example of a functional test case. + // Use XCTAssert and related functions to verify your tests produce the correct results. + // Any test you write for XCTest can be annotated as throws and async. + // Mark your test throws to produce an unexpected failure when your test encounters an uncaught error. + // Mark your test async to allow awaiting for asynchronous code to complete. Check the results with assertions afterwards. + } + + func testPerformanceExample() throws { + // This is an example of a performance test case. + self.measure { + // Put the code you want to measure the time of here. + } + } + +} diff --git a/PingPong/Projects/HomeApp/Project.swift b/PingPong/Projects/HomeApp/Project.swift new file mode 100644 index 00000000..15e30f9e --- /dev/null +++ b/PingPong/Projects/HomeApp/Project.swift @@ -0,0 +1,44 @@ +// +// Project.swift +// ProjectDescriptionHelpers +// +// Created by 서원지 on 2023/06/11. +// + +import ProjectDescription +import MyPlugin + + + +let localHelper = LocalHelper(name: "MyPlugin") +let project = Project.makeModule( + name: "HomeApp", + platform: .iOS, + product: .app, + //MARK: - 풀 빌드 할때는 프레임 워크로 변경 +// product: .staticFramework, + packages: [ // packages를 추가하여 Amplify 라이브러리 추가 + ], + + + setting: .appMainSetting, + dependencies: [ + .SPM.Moya, + .SPM.CombineMoya, + .SPM.Kingfisher, + .SPM.PopupView, + + + + ], + sources: ["Sources/**", "Resources/**", "Resources/Font/**"], + resources: ["Resources/**", "Sources/**"], + infoPlist: .file(path: "Support/HomeInfo.plist"), + entitlements: .relativeToCurrentFile("Entitlements/HomeApp.entitlements") +// scheme: [realseScheme, debugScheme] +) + + + + + diff --git a/PingPong/Projects/HomeApp/Sources/Application/HomeApp.swift b/PingPong/Projects/HomeApp/Sources/Application/HomeApp.swift new file mode 100644 index 00000000..7091d546 --- /dev/null +++ b/PingPong/Projects/HomeApp/Sources/Application/HomeApp.swift @@ -0,0 +1,16 @@ +// +// HomeApp.swift +// PingPongProject +// +// Created by Byeon jinha on 2023/06/01. +// +import SwiftUI + +@main +struct HomeApp: App { + var body: some Scene { + WindowGroup { + HomeView() + } + } +} diff --git a/PingPong/Projects/HomeApp/Sources/UI/View/HomeView.swift b/PingPong/Projects/HomeApp/Sources/UI/View/HomeView.swift new file mode 100644 index 00000000..c7b42058 --- /dev/null +++ b/PingPong/Projects/HomeApp/Sources/UI/View/HomeView.swift @@ -0,0 +1,26 @@ +// +// HomeView.swift +// PingPongProject +// +// Created by Byeon jinha on 2023/06/01. +// + +import SwiftUI + +public struct HomeView: View { + public var body: some View { + VStack { + Image(systemName: "globe") + .imageScale(.large) + .foregroundColor(.accentColor) + Text("Hello, world!") + } + .padding() + } +} + +public struct HomeView_Previews: PreviewProvider { + public static var previews: some View { + HomeView() + } +} diff --git a/PingPong/Projects/HomeApp/Sources/Utill/Size.swift b/PingPong/Projects/HomeApp/Sources/Utill/Size.swift new file mode 100644 index 00000000..72eaeb3f --- /dev/null +++ b/PingPong/Projects/HomeApp/Sources/Utill/Size.swift @@ -0,0 +1,8 @@ +// +// HomeViewModelTest.swift +// chaeviTests +// +// Created by 서원지 on 2023/05/31. +// Copyright © 2023 DaeYoung Chaevi. co., Ltd. All rights reserved. +// + diff --git a/PingPong/Projects/HomeApp/Sources/ViewModel/HomeViewModel.swift b/PingPong/Projects/HomeApp/Sources/ViewModel/HomeViewModel.swift new file mode 100644 index 00000000..72eaeb3f --- /dev/null +++ b/PingPong/Projects/HomeApp/Sources/ViewModel/HomeViewModel.swift @@ -0,0 +1,8 @@ +// +// HomeViewModelTest.swift +// chaeviTests +// +// Created by 서원지 on 2023/05/31. +// Copyright © 2023 DaeYoung Chaevi. co., Ltd. All rights reserved. +// + diff --git a/PingPong/Projects/HomeApp/Support/HomeInfo.plist b/PingPong/Projects/HomeApp/Support/HomeInfo.plist new file mode 100644 index 00000000..3a13c1d6 --- /dev/null +++ b/PingPong/Projects/HomeApp/Support/HomeInfo.plist @@ -0,0 +1,63 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + Home + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + $(MARKETING_VERSION) + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + Localizationnativedevelopmentregion + Korea + NSAppTransportSecurity + + NSAllowsArbitraryLoads + + + UIAppFonts + + UIApplicationSceneManifest + + Application requires iPhone environment + + UIApplicationSupportsMultipleScenes + + UISceneConfigurations + + + UIBackgroundModes + + remote-notification + + UILaunchScreens + + UILaunchScreen + + New item + + UIImageName + + UILaunchScreenIdentifier + + + + + UISupportedInterfaceOrientations~iphone + + UIInterfaceOrientationPortrait + + UIUserInterfaceStyle + Light + + diff --git a/PingPong/Projects/Network/Project.swift b/PingPong/Projects/Network/Project.swift index f717fb7f..9421640b 100644 --- a/PingPong/Projects/Network/Project.swift +++ b/PingPong/Projects/Network/Project.swift @@ -1,25 +1,20 @@ // // Project.swift -// ProjectDescriptionHelpers +// Manifests // -// Created by 서원지 on 2023/06/02. +// Created by 서원지 on 2023/06/11. // import ProjectDescription -import ProjectDescriptionHelpers +import MyPlugin + +let localHelper = LocalHelper(name: "MyPlugin") let project = Project.makeModule( name: "Network", product: .staticFramework, - setting: .settings(base: ["PRODUCT_NAME": "chaevi", - "MARKETING_VERSION": "1.0", - "CURRENT_PROJECT_VERSION": "1", - "CODE_SIGN_STYLE": "Automatic", - "DEVELOPMENT_TEAM": "N94CS4N6VR", "DEBUG_INFORMATION_FORMAT": "DWARF with dSYM File"] ,configurations: [ - .debug(name: .debug), - .release(name: .release) - ],defaultSettings: .recommended), + setting: .appBaseSetting, dependencies: [ .SPM.Moya, .SPM.CombineMoya, @@ -27,4 +22,3 @@ let project = Project.makeModule( sources: ["Sources/**"], resources: ["Resources/**"] ) - diff --git a/PingPong/Targets/ChaeviTuistKit/Tests/ChaeviTuistKitTests.swift b/PingPong/Targets/ChaeviTuistKit/Tests/ChaeviTuistKitTests.swift deleted file mode 100644 index 3f0774b4..00000000 --- a/PingPong/Targets/ChaeviTuistKit/Tests/ChaeviTuistKitTests.swift +++ /dev/null @@ -1,8 +0,0 @@ -import Foundation -import XCTest - -final class ChaeviTuistKitTests: XCTestCase { - func test_example() { - XCTAssertEqual("ChaeviTuistKit", "ChaeviTuistKit") - } -} \ No newline at end of file diff --git a/PingPong/Targets/ChaeviTuistUI/Tests/ChaeviTuistUITests.swift b/PingPong/Targets/ChaeviTuistUI/Tests/ChaeviTuistUITests.swift deleted file mode 100644 index 7a5139e1..00000000 --- a/PingPong/Targets/ChaeviTuistUI/Tests/ChaeviTuistUITests.swift +++ /dev/null @@ -1,8 +0,0 @@ -import Foundation -import XCTest - -final class ChaeviTuistUITests: XCTestCase { - func test_example() { - XCTAssertEqual("ChaeviTuistUI", "ChaeviTuistUI") - } -} \ No newline at end of file diff --git a/PingPong/Targets/ChaeviTuist/Sources/ChaeviTuistApp.swift b/PingPong/Targets/PingPongs/Sources/PingPongsApp.swift similarity index 69% rename from PingPong/Targets/ChaeviTuist/Sources/ChaeviTuistApp.swift rename to PingPong/Targets/PingPongs/Sources/PingPongsApp.swift index f745fae3..376d26f4 100644 --- a/PingPong/Targets/ChaeviTuist/Sources/ChaeviTuistApp.swift +++ b/PingPong/Targets/PingPongs/Sources/PingPongsApp.swift @@ -1,8 +1,8 @@ import SwiftUI -import ChaeviTuistUI +import PingPongsUI @main -struct ChaeviTuistApp: App { +struct PingPongsApp: App { var body: some Scene { WindowGroup { ContentView() diff --git a/PingPong/Targets/ChaeviTuist/Tests/ChaeviTuistTests.swift b/PingPong/Targets/PingPongs/Tests/PingPongsTests.swift similarity index 71% rename from PingPong/Targets/ChaeviTuist/Tests/ChaeviTuistTests.swift rename to PingPong/Targets/PingPongs/Tests/PingPongsTests.swift index ea3bc4b9..2900529e 100644 --- a/PingPong/Targets/ChaeviTuist/Tests/ChaeviTuistTests.swift +++ b/PingPong/Targets/PingPongs/Tests/PingPongsTests.swift @@ -1,7 +1,7 @@ import Foundation import XCTest -final class ChaeviTuistTests: XCTestCase { +final class PingPongsTests: XCTestCase { func test_twoPlusTwo_isFour() { XCTAssertEqual(2+2, 4) } diff --git a/PingPong/Targets/ChaeviTuistKit/Sources/ChaeviTuistKit.swift b/PingPong/Targets/PingPongsKit/Sources/PingPongsKit.swift similarity index 75% rename from PingPong/Targets/ChaeviTuistKit/Sources/ChaeviTuistKit.swift rename to PingPong/Targets/PingPongsKit/Sources/PingPongsKit.swift index ccb8fdee..e82636ef 100644 --- a/PingPong/Targets/ChaeviTuistKit/Sources/ChaeviTuistKit.swift +++ b/PingPong/Targets/PingPongsKit/Sources/PingPongsKit.swift @@ -1,6 +1,6 @@ import Foundation -public final class ChaeviTuistKit { +public final class PingPongsKit { public static func hello() { print("Hello, from your Kit framework") } diff --git a/PingPong/Targets/PingPongsKit/Tests/PingPongsKitTests.swift b/PingPong/Targets/PingPongsKit/Tests/PingPongsKitTests.swift new file mode 100644 index 00000000..11eed790 --- /dev/null +++ b/PingPong/Targets/PingPongsKit/Tests/PingPongsKitTests.swift @@ -0,0 +1,8 @@ +import Foundation +import XCTest + +final class PingPongsKitTests: XCTestCase { + func test_example() { + XCTAssertEqual("PingPongsKit", "PingPongsKit") + } +} \ No newline at end of file diff --git a/PingPong/Targets/ChaeviTuistUI/Sources/ContentView.swift b/PingPong/Targets/PingPongsUI/Sources/ContentView.swift similarity index 100% rename from PingPong/Targets/ChaeviTuistUI/Sources/ContentView.swift rename to PingPong/Targets/PingPongsUI/Sources/ContentView.swift diff --git a/PingPong/Targets/PingPongsUI/Tests/PingPongsUITests.swift b/PingPong/Targets/PingPongsUI/Tests/PingPongsUITests.swift new file mode 100644 index 00000000..81c2d6e4 --- /dev/null +++ b/PingPong/Targets/PingPongsUI/Tests/PingPongsUITests.swift @@ -0,0 +1,8 @@ +import Foundation +import XCTest + +final class PingPongsUITests: XCTestCase { + func test_example() { + XCTAssertEqual("PingPongsUI", "PingPongsUI") + } +} \ No newline at end of file diff --git a/PingPong/Tuist/Config.swift b/PingPong/Tuist/Config.swift index 96ca91ed..44ed26d9 100644 --- a/PingPong/Tuist/Config.swift +++ b/PingPong/Tuist/Config.swift @@ -2,7 +2,6 @@ import ProjectDescription let config = Config( plugins: [ - -// .local(path: .relativeToManifest("../../Plugins/Affinity")), + .local(path: .relativeToManifest("../../Plugins/PingPongs")), ] ) diff --git a/PingPong/Tuist/Dependencies.swift b/PingPong/Tuist/Dependencies.swift index fb3e3513..72619cc2 100644 --- a/PingPong/Tuist/Dependencies.swift +++ b/PingPong/Tuist/Dependencies.swift @@ -1,8 +1,8 @@ // // Dependencies.swift -// MyPlugin +// Config // -// Created by 서원지 on 2023/05/22. +// Created by 서원지 on 2023/06/11. // import ProjectDescription @@ -11,9 +11,11 @@ let dependencie = Dependencies( swiftPackageManager: [ .remote(url: "https://github.com/Moya/Moya.git", requirement: .upToNextMinor(from: "15.0.0")), .remote(url: "https://github.com/onevcat/Kingfisher.git", requirement: .upToNextMinor(from: "7.6.0")), - .remote(url: "https://github.com/exyte/PopupView.git", requirement: .upToNextMinor(from: "2.1.0")) + .remote(url: "https://github.com/exyte/PopupView.git", requirement: .upToNextMinor(from: "2.1.0")), + ], platforms: [.iOS] ) + diff --git a/PingPong/Tuist/ProjectDescriptionHelpers/Project+Settings.swift b/PingPong/Tuist/ProjectDescriptionHelpers/Project+Settings.swift deleted file mode 100644 index 6b1a37b5..00000000 --- a/PingPong/Tuist/ProjectDescriptionHelpers/Project+Settings.swift +++ /dev/null @@ -1,28 +0,0 @@ -// -// Project+Settings.swift -// ProjectDescriptionHelpers -// -// Created by 서원지 on 2023/05/22. -// - -import Foundation -import ProjectDescription -let version = "1.0.0" -let buildNumber = "10" - - -extension Settings { - static func appBaseSetting() -> Settings { - return settings(base: ["PRODUCT_NAME": "PingPong", - "MARKETING_VERSION": .string(version), - "CURRENT_PROJECT_VERSION": .string(buildNumber), - "CODE_SIGN_STYLE": "Automatic", - "DEVELOPMENT_TEAM": "N94CS4N6VR", "DEBUG_INFORMATION_FORMAT": "DWARF with dSYM File"], - configurations: [ - .debug(name: .debug, settings: ["PRODUCT_NAME": "PingPong"]), - .release(name: .release, settings: ["PRODUCT_NAME": "PingPong"])], - defaultSettings: .recommended) - } -} - - diff --git a/PingPong/Workspace.swift b/PingPong/Workspace.swift index 28a0fb30..7073a93e 100644 --- a/PingPong/Workspace.swift +++ b/PingPong/Workspace.swift @@ -1,8 +1,8 @@ // // Workspace.swift -// ProjectDescriptionHelpers +// Config // -// Created by 서원지 on 2023/05/2. +// Created by 서원지 on 2023/06/11. // import ProjectDescription @@ -11,5 +11,6 @@ import ProjectDescription let workspace = Workspace( name: "PingPong", projects: [ - "Projects/App" + "Projects/**" ]) + diff --git a/PingPong/fastlane/Appfile b/PingPong/fastlane/Appfile new file mode 100644 index 00000000..0ea3a016 --- /dev/null +++ b/PingPong/fastlane/Appfile @@ -0,0 +1,6 @@ +app_identifier(ENV["APP_IDENTIFIER"]) +apple_id(ENV["APPLE_ID"]) +itc_team_id("123572872") + +# For more information about the Appfile, see: +# https://docs.fastlane.tools/advanced/#appfile diff --git a/PingPong/fastlane/Fastfile b/PingPong/fastlane/Fastfile new file mode 100644 index 00000000..8562e9da --- /dev/null +++ b/PingPong/fastlane/Fastfile @@ -0,0 +1,218 @@ +# This file contains the fastlane.tools configuration +# You can find the documentation at https://docs.fastlane.tools +# +# For a list of all available actions, check out +# +# https://docs.fastlane.tools/actions +# +# For a list of all available plugins, check out +# +# https://docs.fastlane.tools/plugins/available-plugins + +#import "Fastfiles/ReleaseFastfile.rb" +#import "Fastfiles/SandboxFastfile.rb" +#import "Fastfiles/AppDistributionFastfile.rb" +#import "Fastfiles/LicenseFastfile.rb + +#require 'fastlane/plugin/spaceship' + +# Uncomment the line if you want fastlane to automatically update itself +# update_fastlane +require 'spaceship' +Spaceship::ConnectAPI::App.const_set('ESSENTIAL_INCLUDES', 'appStoreVersions') +ENV["FASTLANE_XCODEBUILD_SETTINGS_TIMEOUT"] = "600" + +default_platform(:ios) +platform :ios do + + + desc "Incrementing Build Number" + + lane :increment_build do + version = get_version_number(xcodeproj: "MarketApp.xcodeproj") + current_build_number = latest_testflight_build_number(version: version) + increment_build_number(build_number: current_build_number + 1) + end + + desc "Unit test" + lane:unit_Test do + clear_derived_data + scan + sh "bash ./Script/tuistTest.sh" + slack( + message: "Unit test 성공", + slack_url: ENV["SLACK_URL_TEST"], + payload: { "Build Date" => Time.new.to_s } + ) + + # ✅ 에러 처리. + error do |lane, exception, options| + slack( + message: "에러 발생 : #{exception}", + success: false, + slack_url: ENV["SLACK_URL_TEST"] + ) + end + end + + + desc "Install Profiles and Build My App" + lane :build_ipa do + clear_derived_data + unit_Test + get_certificates + get_provisioning_profile + # resolve_packages + gym( + configuration: "Release", + workspace: "PingPong.xcworkspace", + output_name: "PingPong.ipa", + scheme: "PingPong", + export_method: "app-store", + xcodebuild_command: "xcodebuild", + include_bitcode: false, + # skip_build_archive: false, + xcodebuild_formatter: "xcpretty", + output_directory: "./fastlane/output/", + clean: true, + silent: true, + include_symbols: false, + xcargs: "ARCHIVE=YES", + disable_package_automatic_updates: false, + skip_package_ipa: false, + skip_package_dependencies_resolution: false, + skip_package_pkg: false, + export_options: { + signingStyle: "automatic", + uploadBitcode: false, + provisioningProfiles: { + "com.pingpong.co" => "PngPong", + # "com.shoping.MarketApps" => "com.shoping.MarketApps AppStore" + } + } + ) + slack( + message: "빌드 성공", + slack_url: ENV["SLACK_URL_BUILD"], + payload: { "Build Date" => Time.new.to_s } + ) + + # ✅ 에러 처리. + error do |lane, exception, options| + slack( + message: "에러 발생 : #{exception}", + success: false, + slack_url: ENV["SLACK_URL_BUILD"] + ) + end + end + + desc "Description of what the lane does" + lane :upload_testflight do + version = get_version_number( + xcodeproj: "PingPong.xcodeproj", + target: "PingPong" + ) + build = get_build_number + #get_certificates + # get_provisioning_profile + increment_build_number( + build_number: latest_testflight_build_number + 1 + ) + lint + build_ipa + upload_to_testflight( + demo_account_required: true, + beta_app_description:"PingPong", + api_key_path: "fastlane/apikey.json", + ipa:"./fastlane/output/PingPong.ipa", + changelog:"변경사항", + skip_waiting_for_build_processing: true) + slack( + message: "Testflight 배포에 성공했습니다!", + slack_url: ENV["SLACK_URL_UPLOAD"], + payload: { + "Version": version + " (" + build + ")", + "Build Date" => Time.new.to_s + } + ) + # ✅ 에러 처리. + error do |lane, exception, options| + slack( + message: "에러 발생 : #{exception}", + success: false, + slack_url: ENV["SLACK_URL_UPLOAD"] + ) + end + end + + + lane :get_dev_certs do + cert(development: true) + sign(development: true) + end + + desc "Description of what the lane does" + desc "Push a new release build to the App Store" + lane :release do |options| + # ✅ 매개변수를 넣어서 + # fastlane release version:"2.1.0" + # 과 같이 사용할 수 있다. + if options[:version] + version = options[:version] + increment_version_number(version_number: options[:version]) + version = get_version_number( + xcodeproj: "PingPong.xcodeproj", + target: "PingPong" + ) + build = get_build_number + #get_certificates + #get_provisioning_profile + unit_Test + build_ipa + upload_to_app_store( + username: "shuwj81@daum.net", + team_id: "N94CS4N6R", + ipa:"./fastlane/output/PingPong.ipa", + api_key_path: "fastlane/apikey.json", + skip_metadata: false, + metadata_path: "./fastlane/metadata", + skip_screenshots: true, + force: true, + submit_for_review: true, + automatic_release: false, + precheck_include_in_app_purchases: false, + submission_information: { + add_id_info_uses_idfa: false, + export_compliance_encryption_updated: false, + export_compliance_uses_encryption: false, + content_rights_contains_third_party_content: false + }, + # app_version: version, + # build_number: build, + # whats_new: "Update for version #{version}" + ) + + + end + #성공했을때 슬랙 메세지 + slack( + message: "앱 배포 성공", + slack_url: ENV["SLACK_URL_UPLOAD"], + payload: { + "Version": version + " (" + build + ")", + "Build Date" => Time.new.to_s + } + ) + + # ✅ 에러 처리. + error do |lane, exception, options| + slack( + message: "에러 발생 : #{exception}", + success: false, + slack_url: ENV["SLACK_URL_UPLOAD"] + ) + end + end + # ✅ if 문을 종료하기 위한 end + end diff --git a/PingPong/fastlane/README.md b/PingPong/fastlane/README.md new file mode 100644 index 00000000..2d14a226 --- /dev/null +++ b/PingPong/fastlane/README.md @@ -0,0 +1,82 @@ +fastlane documentation +---- + +# Installation + +Make sure you have the latest version of the Xcode command line tools installed: + +```sh +xcode-select --install +``` + +For _fastlane_ installation instructions, see [Installing _fastlane_](https://docs.fastlane.tools/#installing-fastlane) + +# Available Actions + +## iOS + +### ios increment_build + +```sh +[bundle exec] fastlane ios increment_build +``` + +Incrementing Build Number + +### ios unit_Test + +```sh +[bundle exec] fastlane ios unit_Test +``` + +Unit test + +### ios build_ipa + +```sh +[bundle exec] fastlane ios build_ipa +``` + +Install Profiles and Build My App + +### ios upload_testflight + +```sh +[bundle exec] fastlane ios upload_testflight +``` + +Description of what the lane does + +### ios upload_firebase + +```sh +[bundle exec] fastlane ios upload_firebase +``` + +upload Firebase App Distribution + +### ios get_dev_certs + +```sh +[bundle exec] fastlane ios get_dev_certs +``` + + + +### ios release + +```sh +[bundle exec] fastlane ios release +``` + +Description of what the lane does + +Push a new release build to the App Store + +---- + +This README.md is auto-generated and will be re-generated every time [_fastlane_](https://fastlane.tools) is run. + +More information about _fastlane_ can be found on [fastlane.tools](https://fastlane.tools). + +The documentation of _fastlane_ can be found on [docs.fastlane.tools](https://docs.fastlane.tools). diff --git a/PingPong/fastlane/Script/tuistTest.sh b/PingPong/fastlane/Script/tuistTest.sh new file mode 100644 index 00000000..64d2bd34 --- /dev/null +++ b/PingPong/fastlane/Script/tuistTest.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +echo "tuist clean" +echo "tuist fetch" +echo "tuist test PingPong"