From fb56cd551edbb2e619eed36f212fe4ffce40bb84 Mon Sep 17 00:00:00 2001 From: Nico Verbruggen Date: Wed, 14 Apr 2021 19:40:07 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=91=8C=20Improved=20parallelization?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PHP Monitor.xcodeproj/project.pbxproj | 4 ++-- phpmon/Domain/Terminal/Actions.swift | 20 +++++++++----------- 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/PHP Monitor.xcodeproj/project.pbxproj b/PHP Monitor.xcodeproj/project.pbxproj index e15423b..428745e 100644 --- a/PHP Monitor.xcodeproj/project.pbxproj +++ b/PHP Monitor.xcodeproj/project.pbxproj @@ -619,7 +619,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 55; + CURRENT_PROJECT_VERSION = 56; DEVELOPMENT_TEAM = 8M54J5J787; ENABLE_HARDENED_RUNTIME = YES; INFOPLIST_FILE = phpmon/Info.plist; @@ -643,7 +643,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 55; + CURRENT_PROJECT_VERSION = 56; DEVELOPMENT_TEAM = 8M54J5J787; ENABLE_HARDENED_RUNTIME = YES; INFOPLIST_FILE = phpmon/Info.plist; diff --git a/phpmon/Domain/Terminal/Actions.swift b/phpmon/Domain/Terminal/Actions.swift index dee5f79..af402bc 100644 --- a/phpmon/Domain/Terminal/Actions.swift +++ b/phpmon/Domain/Terminal/Actions.swift @@ -99,16 +99,13 @@ class Actions { availableVersions: [String], completed: @escaping () -> Void ) { - print("Switching to \(version)") + print("Switching to \(version), unlinking all versions...") + let group = DispatchGroup() - group.enter() - - var versionsDisabled: [String: Bool] = [:] - availableVersions.forEach { (available) in - versionsDisabled[available] = false - } availableVersions.forEach { (available) in + group.enter() + DispatchQueue.global(qos: .userInitiated).async { let formula = (available == App.shared.brewPhpVersion) ? "php" : "php@\(available)" @@ -116,18 +113,19 @@ class Actions { brew("unlink \(formula)") brew("services stop \(formula)", sudo: true) - versionsDisabled[available] = true - if !versionsDisabled.values.contains(false) { - group.leave() - } + group.leave() } } group.notify(queue: .global(qos: .userInitiated)) { + print("All versions have been unlinked!") + print("Linking the new version!") + let formula = (version == App.shared.brewPhpVersion) ? "php" : "php@\(version)" brew("link \(formula) --overwrite --force") brew("services start \(formula)", sudo: true) + print("The new version has been linked!") completed() } }