From ac197e0bc8d9b0341753f5ba45109f03a7422faf Mon Sep 17 00:00:00 2001 From: Bliss Pisit Wetcha Date: Tue, 11 Jul 2023 16:13:24 +0700 Subject: [PATCH] [#491] Add swift function of replace all in --- .../test_upload_build_to_firebase.yml | 2 +- .../Swift/Extensions/FileManager+Bash.swift | 8 ----- .../Swift/Extensions/FileManager+Utils.swift | 32 +++++++++++++++++++ 3 files changed, 33 insertions(+), 9 deletions(-) delete mode 100644 Scripts/Swift/Extensions/FileManager+Bash.swift diff --git a/.github/workflows/test_upload_build_to_firebase.yml b/.github/workflows/test_upload_build_to_firebase.yml index 6a7b65b5..3961e6fb 100644 --- a/.github/workflows/test_upload_build_to_firebase.yml +++ b/.github/workflows/test_upload_build_to_firebase.yml @@ -50,7 +50,7 @@ jobs: run: sh make.sh --bundle-id co.nimblehq.ios.templates --bundle-id-staging co.nimblehq.ios.templates.staging --project-name TemplateApp --interface UIKit - name: Start Setup Script for Template App Firebase Upload - run: cat Scripts/Swift/SetUpTestFirebase.swift Scripts/Swift/Extensions/FileManager+Bash.swift Scripts/Swift/Helpers/SafeShell.swift | swift - + run: cat Scripts/Swift/SetUpTestFirebase.swift Scripts/Swift/Extensions/FileManager+Utils.swift Scripts/Swift/Helpers/SafeShell.swift | swift - env: MATCH_REPO: ${{ secrets.MATCH_REPO }} STAGING_FIREBASE_APP_ID: ${{ secrets.STAGING_FIREBASE_APP_ID }} diff --git a/Scripts/Swift/Extensions/FileManager+Bash.swift b/Scripts/Swift/Extensions/FileManager+Bash.swift deleted file mode 100644 index 5dfb43e0..00000000 --- a/Scripts/Swift/Extensions/FileManager+Bash.swift +++ /dev/null @@ -1,8 +0,0 @@ -import Foundation - -extension FileManager { - - func replaceAllOccurrences(of original: String, to replacing: String) throws { - try safeShell("LC_ALL=C find \(currentDirectoryPath) -type f -exec sed -i \"\" \"s/\(original)/\(replacing)/g\" {} +") - } -} diff --git a/Scripts/Swift/Extensions/FileManager+Utils.swift b/Scripts/Swift/Extensions/FileManager+Utils.swift index cda858de..aba5c4ed 100644 --- a/Scripts/Swift/Extensions/FileManager+Utils.swift +++ b/Scripts/Swift/Extensions/FileManager+Utils.swift @@ -42,4 +42,36 @@ extension FileManager { print("Error \(error)") } } + + func replaceAllOccurrences(of original: String, to replacing: String) throws { + let files = try allFiles(in: currentDirectoryPath) + for file in files { + do { + let text = try String(contentsOf: file, encoding: .utf8) + print(file) + let modifiedText = text.replacingOccurrences(of: original, with: replacing) + try modifiedText.write(to: file, atomically: true, encoding: .utf8) + } + catch { + print(error) + } + } + } + + private func allFiles(in directory: String) throws -> [URL] { + let url = URL(fileURLWithPath: directory) + var files = [URL]() + if let enumerator = enumerator(at: url, includingPropertiesForKeys: [.isRegularFileKey], options: [.skipsHiddenFiles, .skipsPackageDescendants]) { + for case let fileURL as URL in enumerator { + do { + let fileAttributes = try fileURL.resourceValues(forKeys:[.isRegularFileKey]) + guard fileAttributes.isRegularFile ?? false, + fileURL.pathExtension.count > 0 + else { continue } + files.append(fileURL) + } + } + } + return files + } }