Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
3a66bf3
[Feat] Tuist update 스크립트 추가
gnksbm Mar 30, 2025
5d9bd9f
[Remove] tuist-version 파일 제거
gnksbm Mar 30, 2025
d3c53b1
[Fix] Fastfile, Makefile 자동화 커멘드 수정
gnksbm Mar 30, 2025
79c4c04
[Fix] XCFramework 폴더 이동 및 레거시 제거
gnksbm Mar 30, 2025
7f66b6c
[Feat] Firebase 래핑 모듈 및 인터페이스 모듈 추가
gnksbm Mar 30, 2025
3acb83c
[Fix] DependencyPlugin 제거 및 의존성 코드 Tuist 4 형태로 전환
gnksbm Mar 30, 2025
5dfd752
[Fix] Tuist 4 및 Swift 6 버전 대응
gnksbm Mar 30, 2025
34c7eb0
feat: Tuist 선언형 작성을 위한 객체 추가
gnksbm Apr 6, 2025
2f1ebcd
fix: Project.swift Template 선언형으로 변경
gnksbm Apr 6, 2025
c60b5f4
feat: 모듈 및 의존성을 나타내는 선언형 객체 구현
gnksbm Apr 6, 2025
6c81417
fix: Project.swift 파일 선언형으로 변경
gnksbm Apr 6, 2025
4a375c4
fix: 불필요한 코드 제거 및 코드 정리
gnksbm Apr 6, 2025
f6840d5
fix: Github Action Tuist 4 버전에 맞게 수정
gnksbm Apr 6, 2025
ef99cf6
fix: 오타 수정
gnksbm Apr 6, 2025
aaf6f6d
fix: 오타 수정
gnksbm Apr 6, 2025
9f15d37
fix: Tuist 모듈 폴더이동
gnksbm Apr 10, 2025
71cbb79
feat: Script 사용 형태 TargetScriptBuildable로 변경
gnksbm Apr 10, 2025
1e2d7f0
feat: InfoPlist 사용 형태 InfoPlistBuildable로 변경
gnksbm Apr 17, 2025
c3bb9b2
fix: Tuist gen 오류 수정
gnksbm Apr 17, 2025
f5c2aa1
fix: Tuist Plist 로직 수정
gnksbm May 4, 2025
c526210
fix: 누락된 App Plist값 추가
gnksbm Jun 25, 2025
6c298f5
fix: 잘못된 접근제어자 수정
gnksbm Jun 25, 2025
6f0a76c
fix: fastlane 업데이트
gnksbm Jun 25, 2025
cfd7f77
feat: Makefile 인증서 갱신 커멘드 추가
gnksbm Jun 25, 2025
dd58402
fix: firebase 로그를 많이 출력하지 않도록
gnksbm Jun 25, 2025
59fcc72
fix: FCM 토큰 등록이 올바른 순서로 동작하도록
gnksbm Jun 25, 2025
dd5ba0b
fix: 로띠 의존성 임시 수정
gnksbm Jun 25, 2025
848db28
fix: ignore 파일 fetch 커멘드 rabbit 코드리뷰 반영
gnksbm Jun 25, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
21 changes: 12 additions & 9 deletions .github/workflows/pull_request_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,18 +30,21 @@ jobs:

- name: Get swift version
run: swift --version

- name: Install Tuist
run: curl -Ls https://install.tuist.io|bash
- name: Mise
uses: jdx/mise-action@v2

- name: Install Tuist
run: mise install tuist@4.33.0

- name: Tuist version
run: mise use -g tuist@4.33.0

- name: Setup Project
run: make init

- name: Install SwiftLint
run: brew install swiftlint

- name: Tuist Clean
run: tuist clean

- name: Tuist Fetch
run: tuist fetch

- name: Tuist Build Test
run: tuist build App
22 changes: 11 additions & 11 deletions .github/workflows/upload_testflight.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,22 +39,22 @@ jobs:
uses: swift-actions/setup-swift@v2
with:
swift-version: "5.10"

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

공백 문자 제거 필요

YAML 파일의 여러 줄에서 후행 공백이 감지되었습니다. 이는 린팅 도구에서 오류로 표시됩니다.

다음 diff를 적용하여 후행 공백을 제거하세요:

-            
+
-        run: mise install tuist@4.33.0
+        run: mise install tuist@4.33.0
- 
+
-        run: mise use -g tuist@4.33.0
+        run: mise use -g tuist@4.33.0
-        
+
-        run: make init
+        run: make init
-        
+

Also applies to: 48-48, 51-51, 54-54

🧰 Tools
🪛 YAMLlint (1.37.1)

[error] 42-42: trailing spaces

(trailing-spaces)

🤖 Prompt for AI Agents
In .github/workflows/upload_testflight.yml at lines 42, 48, 51, and 54, there
are trailing whitespace characters that cause linting errors. Remove all
trailing spaces at the end of these lines to comply with YAML formatting
standards and avoid linting issues.

- name: Mise
uses: jdx/mise-action@v2

- name: Install Tuist
run: curl -Ls https://install.tuist.io|bash

run: mise install tuist@4.33.0

- name: Tuist version
run: mise use -g tuist@4.33.0

- name: Setup Project
run: make init

- name: Install Fastlane
run: brew install fastlane

- name: Tuist clean
run: tuist clean

- name: Tuist fetch
run: tuist fetch

- name: Tuist generate
run: tuist generate

- name: Fastlane Upload Testflight
run: fastlane tf_remote
env:
Expand Down
1 change: 0 additions & 1 deletion .tuist-version

This file was deleted.

42 changes: 28 additions & 14 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,12 +1,20 @@
open_plist:
open -a Xcode Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/InfoPlist.swift
init: fetch gen

fetch:
tuist clean
tuist install
gen:
tuist generate --no-open

open_config:
open -a Xcode Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/XCConfig.swift
sign:
@GIT_TOKEN=$$(git config user.password || git config --global user.password); \
if [ -z "$$GIT_TOKEN" ]; then \
echo "❌ Git token not found."; \
exit 1; \
fi; \
$(MAKE) download-privates token=$$GIT_TOKEN && \
fastlane sync

clean_xcode:
rm -rf ~/Library/Developer/Xcode/DerivedData/*

clean:
rm -rf **/**/**/*.xcodeproj
rm -rf **/**/*.xcodeproj
Expand All @@ -17,16 +25,24 @@ clean:
rm -rf **/Derived/
rm -rf Derived/

clean_all:
make clean
make clean_xcode
update_tuist:
sh ./Scripts/update_tuist.sh

open_plist:
open -a Xcode Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/InfoPlist.swift

open_config:
open -a Xcode Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/XCConfig.swift

clean_xcode_cache:
rm -rf ~/Library/Developer/Xcode/DerivedData/*

BASE_URL = https://raw.githubusercontent.com/Pepsi-Club/WhereMyBus-ignored/main

define download_file
@echo "Downloading $(3) to $(1) using token: $(2)"
@echo "📥 Downloading $(3) to $(1)"
mkdir -p $(1)
curl -H "Authorization: token $(2)" -o $(1)/$(3) $(BASE_URL)/$(3)
curl -sS -H "Authorization: token $(2)" -o $(1)/$(3) $(BASE_URL)/$(3)
endef
Comment on lines +43 to 46
Copy link

@coderabbitai coderabbitai bot Jun 25, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

❓ Verification inconclusive

curl 호출 시 프로세스 리스트에 토큰 노출 가능

curl -H "Authorization: token $(2)" 방식은 실행 중인 프로세스 목록에 토큰이 그대로 찍힐 수 있습니다.
--header @"$(tmpfile)" 패턴이나 GITHUB_TOKEN 환경변수를 활용해 헤더 파일/환경변수로 우회하면 노출을 막을 수 있습니다.

-	curl -sS -H "Authorization: token $(2)" -o $(1)/$(3) $(BASE_URL)/$(3)
+	@echo "Authorization: token $(2)" > /tmp/.gh_hdr_$$
+	curl -sS -H @/tmp/.gh_hdr_$$ -o $(1)/$(3) $(BASE_URL)/$(3)
+	rm -f /tmp/.gh_hdr_$$

혹은:

	curl -sS -H "Authorization: token $(GITHUB_TOKEN)" ...

처럼 토큰을 환경변수로 전달하고, Make 호출부에서 export GITHUB_TOKEN=... 로 주입하는 방법도 고려해 보세요.


curl 호출 시 프로세스 리스트에 토큰 노출 가능

curl -H "Authorization: token $(2)" 방식은 실행 중인 프로세스 목록에 토큰이 그대로 찍힐 수 있습니다.
--header @"$(tmpfile)" 패턴이나 GITHUB_TOKEN 환경변수를 활용해 헤더 파일/환경변수로 우회하면 노출을 막을 수 있습니다.

-	curl -sS -H "Authorization: token $(2)" -o $(1)/$(3) $(BASE_URL)/$(3)
+	@echo "Authorization: token $(2)" > /tmp/.gh_hdr_$$
+	curl -sS -H @/tmp/.gh_hdr_$$ -o $(1)/$(3) $(BASE_URL)/$(3)
+	rm -f /tmp/.gh_hdr_$$

혹은:

	curl -sS -H "Authorization: token $(GITHUB_TOKEN)" ...

처럼 토큰을 환경변수로 전달하고, Make 호출부에서 export GITHUB_TOKEN=... 로 주입하는 방법도 고려해 보세요.

🤖 Prompt for AI Agents
In the Makefile around lines 43 to 46, the curl command includes the
authorization token directly in the command line, which can expose the token in
the process list. To fix this, avoid passing the token as a command argument;
instead, store the header in a temporary file and use curl's --header @file
option, or pass the token via an environment variable like GITHUB_TOKEN and
reference it in the curl command header. Also, ensure the token is exported in
the environment before running the Makefile.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@MUKER-WON @isakatty 귀찮아서 나중에 다시 볼게요..ㅋㅋ

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems like the humans are having a chat. I'll hop back into my burrow for now. If you need me again, just tag @coderabbitai in a new comment, and I'll come hopping out!


.PHONY: download-privates
Expand All @@ -48,5 +64,3 @@ download-env:
download-googleinfo:
$(call download_file, Projects/App/Resources, $(token),GoogleService-Info.plist)
$(call download_file, Projects/App/Resources, $(token),GoogleService-Info-debugging.plist)


11 changes: 0 additions & 11 deletions Plugins/DependencyPlugin/Plugin.swift

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

2 changes: 1 addition & 1 deletion Plugins/EnvironmentPlugin/Plugin.swift
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,6 @@
// Copyright © 2023 https://github.com/gnksbm/Clone_AppStore. All rights reserved.
//

import ProjectDescription
@preconcurrency import ProjectDescription

let EnvironmentPlugin = Plugin(name: "EnvironmentPlugin")
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
//
// UIKitInfoPlist.swift
// EnvironmentPlugin
//
// Created by gnksbm on 4/11/25.
//

import Foundation

public struct UIKitInfoPlist: InfoPlistBuildable {
public var dictionary: [String : ProjectDescription.Plist.Value] {
[
"UILaunchStoryboardName": "LaunchScreen.storyboard",
"UIApplicationSceneManifest": [
"UIApplicationSupportsMultipleScenes": false,
"UISceneConfigurations": [
"UIWindowSceneSessionRoleApplication": [
[
"UISceneConfigurationName": "Default Configuration",
"UISceneDelegateClassName": "$(PRODUCT_MODULE_NAME).SceneDelegate"
],
]
]
],
"UISupportedInterfaceOrientations": ["UIInterfaceOrientationPortrait"]
]
}

public init() { }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
//
// WhereMyBusInfoPlist.swift
// EnvironmentPlugin
//
// Created by gnksbm on 4/11/25.
//

import Foundation








Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
//
// InfoPlistBuildable.swift
// EnvironmentPlugin
//
// Created by gnksbm on 4/11/25.
//

import ProjectDescription

public protocol InfoPlistBuildable {
var dictionary: [String: Plist.Value] { get }
}

public extension InfoPlistBuildable {
func buildInfoPlist() -> InfoPlist {
.dictionary(dictionary)
}
}

extension Array: InfoPlistBuildable where Element == any InfoPlistBuildable {
public var dictionary: [String : Plist.Value] {
reduce([String : Plist.Value]()) { partialResult, next in
partialResult.merging(next.dictionary) { _, new in new }
}
}
}
Loading
Loading