Skip to content

Commit 2c1de03

Browse files
committed
[#581] Set the version of tuist to latest
- Update other gems - Finish SwiftUI/SPM migration and cleanup - drop leftover UIKit helpers and simplify Sourcery template - move Tuist packages into Project.swift and switch targets to `.package` - remove workspace deletion; open project directly; add documentation for dependencies - clean README/wiki/CI configs to reflect SwiftUI + SPM-only setup - delete CocoaPods gems/steps, adjust Danger/Fastlane scripts, update Fastlane constants - remove Podfiles, UIKit files, and add guidance for Crashlytics upload script Remove interface - Add a step to use mise (jdx/mise-action@v3) to install tuist 4.110.3 in all GitHub Actions workflows
1 parent 05c19bd commit 2c1de03

Some content is hidden

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

49 files changed

+516
-940
lines changed

.arkana.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package_manager: cocoapods
1+
package_manager: spm
22
environments:
33
- Staging
44
- Release

.github/wiki/Bitrise.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ Out of the box, the Bitrise Template has the following workflows and steps:
99
|---------------------------|---------------------------------------------------------|-----------------------------------------|-------------------------------------------|
1010
| Git Clone Repository | Git Clone Repository | Git Clone Repository | Git Clone Repository |
1111
| Bitrise.io Cache:Pull | Bitrise.io Cache:Pull | Bitrise.io Cache:Pull | Bitrise.io Cache:Pull |
12-
| Run CocoaPods install | Run CocoaPods install | Run CocoaPods install | Run CocoaPods install |
12+
| Resolve SPM dependencies | Resolve SPM dependencies | Resolve SPM dependencies | Resolve SPM dependencies |
1313
| Fastlane - Build and Test | Xcode Test for iOS | Xcode Test for iOS | Xcode Test for iOS |
1414
| Fastlane - Clean Up Xcov | Fastlane Match | Fastlane Match | Fastlane Match |
1515
| Danger | Fastlane - Build and Upload Production App to App Store | Fastlane - Build and Upload Staging App | Fastlane: Build and Upload Production App |
@@ -26,7 +26,7 @@ Out of the box, the Bitrise Template has the following workflows and steps:
2626
## Environment and Secrets
2727
### App Environtment Variables
2828
- BITRISE_PROJECT_PATH
29-
> e.g., ExampleApp.xcodeproj or in case you're using CocoaPod, it is ExampleApp.xcworkspace.
29+
> e.g., ExampleApp.xcodeproj.
3030
3131
- TEAM_ID
3232
> This is your Apple Team ID (e.g., T3T4E84BAA), you can find it in `Membership` at Apple developer portal.
@@ -62,7 +62,7 @@ All four workflows have their own variables:
6262
> Final project directory structure
6363
```
6464
ROOT
65-
├── ExampleApp.xcworkspace
65+
├── ExampleApp.xcodeproj
6666
├── bitrise.yml
6767
├──...
6868
```

.github/wiki/CodeMagic.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ Out of the box, the CodeMagic Template has the following workflows and steps:
99
| test | deploy_app_store | deploy_staging_firebase | deploy_release_firebase |
1010
| --------------------------- | ------------------------------------------------------- | --------------------------------------------------- | ----------------------------------------------------- |
1111
| Install bundle | Install bundle | Install bundle | Install bundle |
12-
| Run CocoaPods install | Run CocoaPods install | Run CocoaPods install | Run CocoaPods install |
12+
| Resolve SPM dependencies | Resolve SPM dependencies | Resolve SPM dependencies | Resolve SPM dependencies |
1313
| Fastlane - Build and Test | Fastlane - Build and Test | Fastlane - Build and Test | Fastlane - Build and Test |
1414
| Fastlane - Clean Up Xcov | Fastlane Match | Fastlane Match | Fastlane Match |
1515
| Fastlane - Build and deploy | Fastlane - Build and Upload Production App to App Store | Fastlane - Build and Upload Staging App to Firebase | Fastlane: Build and Upload Production App to Firebase |
@@ -52,7 +52,7 @@ Out of the box, the CodeMagic Template has the following workflows and steps:
5252

5353
```
5454
ROOT
55-
├── ExampleApp.xcworkspace
55+
├── ExampleApp.xcodeproj
5656
├── codemagic.yaml
5757
├──...
5858
```

.github/wiki/Github-Actions.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,14 @@ There are currently 4 workflows:
3030
### Test
3131

3232
1. Check out the current version.
33-
2. Install dependencies including Gem, Fastlane, and Cocoapods.
33+
2. Install dependencies via Bundler (Fastlane, Danger, etc.) and resolve SPM packages with Tuist/Xcode.
3434
3. Run Test on staging scheme and show result on pull request's check.
3535

3636
### Deploy
3737

3838
1. Proceed to 4 if this job is running after `Test` job
3939
2. Check out the current version.
40-
3. Install dependencies including Gem, Fastlane, and Cocoapods.
40+
3. Install dependencies via Bundler (Fastlane, Danger, etc.) and resolve SPM packages with Tuist/Xcode.
4141
4. Install provisioning profiles and certificates using Fastlane match.
4242
5. Build archive version of the specified scheme.
4343
6. Deploy to Firebase Distribution, TestFlight, or App Store.

.github/wiki/Project-Dependencies.md

Lines changed: 4 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,13 @@ To simplify setup for developers new to the application, as well as having a rel
33
The project normally contains:
44

55
- Fastlane: is the easiest way to automate beta deployments and releases for the `iOS` (also `Android`) applications. 🚀 It handles all tedious tasks, such as generating screenshots, dealing with code signing, and releasing the application.
6-
- Cocoapods: manages dependencies for Xcode projects. Cocoapods aims to improve the engagement with, and discoverability of, third-party open-source Cocoa libraries. Developers only need to specify the dependencies in a file named `Podfile`. Cocoapods recursively resolves dependencies between libraries, fetches source code for all dependencies, and creates and maintains an Xcode workspace to build the project.
7-
- Swift Package Manager: a tool for managing the distribution of Swift code. It’s integrated with the Swift build system to automate the process of downloading, compiling, and linking dependencies.
6+
- Swift Package Manager: the single source of truth for runtime dependencies. All shared libraries are declared in `Project.swift` and appear in Xcode's **Package Dependencies** section.
87

98
## Dependencies
109

1110
### Bundler
1211

13-
[Bundler](https://bundler.io/) is a Ruby package manager, think of it as a Cocoapods for ruby plugins that will be used for the project. Keeping package versions the same on all development machines and Continuous Development machines reduces unnoticed bugs from occurring. Noteworthy packages include `Fastlane`, `Firebase-cli`, and `Cocoapods`.
14-
15-
### Cocoapods
16-
17-
[Cocoapods](https://cocoapods.org/) manages iOS packages to keep consistency throughout development machines.
12+
[Bundler](https://bundler.io/) is a Ruby package manager used for CLI tooling such as `fastlane`, `xcov`, and `danger`. Keeping package versions the same on all development machines and Continuous Development machines reduces unnoticed bugs from occurring.
1813

1914
### Fastlane
2015

@@ -30,29 +25,17 @@ The main usage of [Firebase](https://firebase.google.com/) for our team is `Fire
3025

3126
[Alamofire](https://github.com/Alamofire/Alamofire) is a networking library for Swift projects. Alamofire is used as a base for our Networking layer to streamline API calls in all projects, allowing developers to switch between projects without an issue.
3227

33-
### SnapKit (pre-SwiftUI)
34-
35-
[SnapKit](https://github.com/SnapKit/SnapKit) is the tool for layout user interface with ease and easier to establish a team's convention. SnapKit applies Auto Layout using a more concise syntax. This allows the UI to be responsive on different devices.
36-
37-
### RxSwift
38-
39-
[RxSwift](https://github.com/ReactiveX/RxSwift) is the library for writing Swift in the reactive programming way. RxSwift added a reactive framework for Swift with syntax closely resembling other Rx frameworks. Although it is possible to implement reactive programming for Swift, RxSwift can bypass problems that arise from maintaining large plugins and allow developers from other platforms to easily understand RxSwift syntax.
40-
41-
### IQKeyboardManagerSwift
42-
43-
[IQKeyboardManager](https://github.com/hackiftekhar/IQKeyboardManager) is a plugin for `UIScrollView`. IQKeyboardManager will detect when the keyboard is showing and adjust the view so that the view is not blocked by the keyboard. IQKeyboardManager is the go-to solution because of the ease of installation and history of maintenance by the developers.
44-
4528
### SwiftLint
4629

47-
[SwiftLin](https://github.com/realm/SwiftLint) is used to enforce our team's code convention. SwiftLint is the perfect tool for this task as it is customizable, lightweight, and automate-able. Our team installs SwiftLint with `Ruby` to allow Continuous Integration machine capability to replicate local lint. SwiftLint is integrated with Xcode to display a warning and halt build when error.
30+
[SwiftLint](https://github.com/realm/SwiftLint) is used to enforce our team's code convention. SwiftLint is the perfect tool for this task as it is customizable, lightweight, and automate-able. CI installs SwiftLint via Homebrew, and Danger runs it directly (no Pods required).
4831

4932
### KeychainAccess
5033

5134
[KeychainAccess](https://github.com/kishikawakatsumi/KeychainAccess) is a wrapper for Keychain, making storing data with Apple's encryption as convenient as using `UserDefault`.
5235

5336
### Sourcery
5437

55-
Swift code generator running on top of Stencil. [Sourcery](https://github.com/krzysztofzablocki/Sourcery) is used to generate Protocol's Mock for Unit Testing purposes. We include Sourcery in `podfile` and add a shell script to Xcode Build Phrase `./Pods/Sourcery/bin/sourcery`.
38+
Swift code generator running on top of Stencil. [Sourcery](https://github.com/krzysztofzablocki/Sourcery) is used to generate Protocol mocks for Unit Testing purposes. The template vendors Sourcery via scripts and runs it from `Scripts/Swift/iOSTemplateMaker`.
5639

5740
### SwiftFormat
5841

.github/workflows/test_swiftui_install_script.yml renamed to .github/workflows/test_install_script.yml

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: Test SwiftUI Install Script
1+
name: Test Install Script
22

33
on:
44
push:
@@ -15,11 +15,14 @@ jobs:
1515
steps:
1616
- uses: actions/checkout@v6
1717

18+
- name: Install tools with mise
19+
uses: jdx/mise-action@v3
20+
1821
- name: Bundle install
1922
run: bundle install
2023

21-
- name: Start Install Script for SwiftUI Template App
22-
run: swift run --package-path Scripts/Swift/iOSTemplateMaker iOSTemplateMaker make --bundle-id-production co.nimblehq.ios.templates --bundle-id-staging co.nimblehq.ios.templates.staging --project-name TemplateApp --interface SwiftUI
24+
- name: Start Install Script for Template App
25+
run: swift run --package-path Scripts/Swift/iOSTemplateMaker iOSTemplateMaker make --bundle-id-production co.nimblehq.ios.templates --bundle-id-staging co.nimblehq.ios.templates.staging --project-name TemplateApp
2326

2427
- name: Build and Test
2528
run: bundle exec fastlane buildAndTest

.github/workflows/test_uikit_install_script.yml

Lines changed: 0 additions & 27 deletions
This file was deleted.

.github/workflows/test_upload_build_to_firebase.yml

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -52,17 +52,11 @@ jobs:
5252
- name: Bundle install
5353
run: bundle install
5454

55-
- name: Cache Pods
56-
uses: actions/cache@v4
57-
id: cocoapodCache
58-
with:
59-
path: Pods
60-
key: ${{ runner.os }}-pods-${{ hashFiles('**/Podfile.lock') }}
61-
restore-keys: |
62-
${{ runner.os }}-pods-
55+
- name: Install tools with mise
56+
uses: jdx/mise-action@v3
6357

6458
- name: Start Install Script for Template App
65-
run: swift run --package-path Scripts/Swift/iOSTemplateMaker iOSTemplateMaker make --bundle-id-production co.nimblehq.ios.templates --bundle-id-staging co.nimblehq.ios.templates.staging --project-name TemplateApp --interface UIKit
59+
run: swift run --package-path Scripts/Swift/iOSTemplateMaker iOSTemplateMaker make --bundle-id-production co.nimblehq.ios.templates --bundle-id-staging co.nimblehq.ios.templates.staging --project-name TemplateApp
6660

6761
- name: Start Setup Script for Template App Firebase Upload
6862
run: swift run --package-path Scripts/Swift/iOSTemplateMaker iOSTemplateMaker make-test-firebase

.github/workflows/test_upload_build_to_test_flight.yml

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ jobs:
2626
with:
2727
fetch-depth: 0
2828

29+
- name: Install tools with mise
30+
uses: jdx/mise-action@v3
31+
2932
- name: Install SSH key
3033
uses: webfactory/[email protected]
3134
with:
@@ -34,17 +37,17 @@ jobs:
3437
- name: Bundle install
3538
run: bundle install
3639

37-
- name: Cache Pods
40+
- name: Cache SPM Packages
3841
uses: actions/cache@v4
39-
id: cocoapodCache
42+
id: spmCache
4043
with:
41-
path: Pods
42-
key: ${{ runner.os }}-pods-${{ hashFiles('**/Podfile.lock') }}
44+
path: .build
45+
key: ${{ runner.os }}-spm-${{ hashFiles('**/Package.resolved') }}
4346
restore-keys: |
44-
${{ runner.os }}-pods-
47+
${{ runner.os }}-spm-
4548
4649
- name: Start Install Script for Template App
47-
run: swift run --package-path Scripts/Swift/iOSTemplateMaker iOSTemplateMaker make --bundle-id-production co.nimblehq.ios.templates --bundle-id-staging co.nimblehq.ios.templates.staging --project-name TemplateApp --interface UIKit
50+
run: swift run --package-path Scripts/Swift/iOSTemplateMaker iOSTemplateMaker make --bundle-id-production co.nimblehq.ios.templates --bundle-id-staging co.nimblehq.ios.templates.staging --project-name TemplateApp
4851

4952
- name: Start Setup Script for Template App TestFlight Upload
5053
run: swift run --package-path Scripts/Swift/iOSTemplateMaker iOSTemplateMaker make-test-test-flight

.gitignore

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -43,14 +43,6 @@ xcuserdata/
4343
*.xcscmblueprint
4444
*.xccheckout
4545

46-
# CocoaPods
47-
#
48-
# We recommend against adding the Pods directory to your .gitignore. However
49-
# you should judge for yourself, the pros and cons are mentioned at:
50-
# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
51-
#
52-
Pods/
53-
5446
# fastlane
5547
#
5648
# It is recommended to not store the screenshots in the git repo.
@@ -74,6 +66,7 @@ Output
7466

7567
# Tuist
7668
.tuist-generated
69+
*.xcworkspace
7770

7871
# JetBrains IDEs
7972

0 commit comments

Comments
 (0)