From 83a3e5b491bb9d7d174431d0fa13f990db55341d Mon Sep 17 00:00:00 2001 From: Ivan Smolin Date: Fri, 26 May 2023 16:07:40 +0300 Subject: [PATCH] build: fix swiftlint issues --- Package.swift | 2 +- Plugins/TISwiftLintPlugin/plugin.swift | 11 ++- .../AnySingleValueStorage.swift | 0 ...AppInstallLifetimeSingleValueStorage.swift | 18 ++--- .../BaseSingleValueDefaultsStorage.swift | 0 .../BaseSingleValueStorage.swift | 0 .../SingleValueStorage.swift | 0 .../StringValueDefaultsStorage.swift | 0 ...DefaultRecoverableJsonNetworkService.swift | 75 +++++++++---------- 9 files changed, 56 insertions(+), 50 deletions(-) rename TIFoundationUtils/DataStorage/Sources/{ => SingleValueStorage}/AnySingleValueStorage.swift (100%) rename TIFoundationUtils/DataStorage/Sources/{ => SingleValueStorage}/AppInstallLifetimeSingleValueStorage.swift (89%) rename TIFoundationUtils/DataStorage/Sources/{ => SingleValueStorage}/BaseSingleValueDefaultsStorage.swift (100%) rename TIFoundationUtils/DataStorage/Sources/{ => SingleValueStorage}/BaseSingleValueStorage.swift (100%) rename TIFoundationUtils/DataStorage/Sources/{ => SingleValueStorage}/SingleValueStorage.swift (100%) rename TIFoundationUtils/DataStorage/Sources/{ => SingleValueStorage}/StringValueDefaultsStorage.swift (100%) diff --git a/Package.swift b/Package.swift index 3b206f7c..a112198e 100644 --- a/Package.swift +++ b/Package.swift @@ -95,7 +95,7 @@ let package = Package( .target(name: "TIMoyaNetworking", dependencies: ["TINetworking", "TIFoundationUtils", "Moya"], - path: "TIMoyaNetworking", + path: "TIMoyaNetworking/Sources", plugins: [.plugin(name: "TISwiftLintPlugin")]), .target(name: "TINetworkingCache", dependencies: ["TIFoundationUtils", "TINetworking", "Cache"], path: "TINetworkingCache/Sources"), diff --git a/Plugins/TISwiftLintPlugin/plugin.swift b/Plugins/TISwiftLintPlugin/plugin.swift index be711adf..dad082b2 100644 --- a/Plugins/TISwiftLintPlugin/plugin.swift +++ b/Plugins/TISwiftLintPlugin/plugin.swift @@ -21,6 +21,7 @@ // import PackagePlugin +import Foundation @main struct SwiftLintPlugin: BuildToolPlugin { @@ -29,6 +30,12 @@ struct SwiftLintPlugin: BuildToolPlugin { let swiftlintExecutablePath = try context.tool(named: "swiftlint").path + let srcRoot = context.package.directory.string + let targetDir = target.directory.string + + let relativeTargetDir = targetDir.replacingOccurrences(of: srcRoot, with: "") + let clearRelativeTargetDir = relativeTargetDir[relativeTargetDir.index(after: relativeTargetDir.startIndex)...] // trim leading / + return [ .prebuildCommand(displayName: "SwiftLint linting \(target.name)...", executable: swiftlintScriptPath, @@ -38,9 +45,9 @@ struct SwiftLintPlugin: BuildToolPlugin { ], environment: [ "SCRIPT_DIR": swiftlintScriptPath.removingLastComponent().string, - "SRCROOT": context.package.directory.string, + "SRCROOT": srcRoot, "SCRIPT_INPUT_FILE_COUNT": "1", - "SCRIPT_INPUT_FILE_0": target.directory.removingLastComponent().lastComponent, + "SCRIPT_INPUT_FILE_0": clearRelativeTargetDir, // "FORCE_LINT": "1", // Lint all files in target (not only modified) // "AUTOCORRECT": "1" ], diff --git a/TIFoundationUtils/DataStorage/Sources/AnySingleValueStorage.swift b/TIFoundationUtils/DataStorage/Sources/SingleValueStorage/AnySingleValueStorage.swift similarity index 100% rename from TIFoundationUtils/DataStorage/Sources/AnySingleValueStorage.swift rename to TIFoundationUtils/DataStorage/Sources/SingleValueStorage/AnySingleValueStorage.swift diff --git a/TIFoundationUtils/DataStorage/Sources/AppInstallLifetimeSingleValueStorage.swift b/TIFoundationUtils/DataStorage/Sources/SingleValueStorage/AppInstallLifetimeSingleValueStorage.swift similarity index 89% rename from TIFoundationUtils/DataStorage/Sources/AppInstallLifetimeSingleValueStorage.swift rename to TIFoundationUtils/DataStorage/Sources/SingleValueStorage/AppInstallLifetimeSingleValueStorage.swift index 239ce00f..47654a30 100644 --- a/TIFoundationUtils/DataStorage/Sources/AppInstallLifetimeSingleValueStorage.swift +++ b/TIFoundationUtils/DataStorage/Sources/SingleValueStorage/AppInstallLifetimeSingleValueStorage.swift @@ -44,17 +44,17 @@ where Storage.ErrorType == StorageError { } open func getValue() -> Result { - if appReinstallChecker.isAppFirstRun { - let result = wrappedStorage.deleteValue() - - if case .success = result { - appReinstallChecker.isAppFirstRun = false - } - - return result.flatMap { .failure(StorageError.valueNotFound) } - } else { + guard appReinstallChecker.isAppFirstRun else { return wrappedStorage.getValue() } + + let result = wrappedStorage.deleteValue() + + if case .success = result { + appReinstallChecker.isAppFirstRun = false + } + + return result.flatMap { .failure(StorageError.valueNotFound) } } open func store(value: Storage.ValueType) -> Result { diff --git a/TIFoundationUtils/DataStorage/Sources/BaseSingleValueDefaultsStorage.swift b/TIFoundationUtils/DataStorage/Sources/SingleValueStorage/BaseSingleValueDefaultsStorage.swift similarity index 100% rename from TIFoundationUtils/DataStorage/Sources/BaseSingleValueDefaultsStorage.swift rename to TIFoundationUtils/DataStorage/Sources/SingleValueStorage/BaseSingleValueDefaultsStorage.swift diff --git a/TIFoundationUtils/DataStorage/Sources/BaseSingleValueStorage.swift b/TIFoundationUtils/DataStorage/Sources/SingleValueStorage/BaseSingleValueStorage.swift similarity index 100% rename from TIFoundationUtils/DataStorage/Sources/BaseSingleValueStorage.swift rename to TIFoundationUtils/DataStorage/Sources/SingleValueStorage/BaseSingleValueStorage.swift diff --git a/TIFoundationUtils/DataStorage/Sources/SingleValueStorage.swift b/TIFoundationUtils/DataStorage/Sources/SingleValueStorage/SingleValueStorage.swift similarity index 100% rename from TIFoundationUtils/DataStorage/Sources/SingleValueStorage.swift rename to TIFoundationUtils/DataStorage/Sources/SingleValueStorage/SingleValueStorage.swift diff --git a/TIFoundationUtils/DataStorage/Sources/StringValueDefaultsStorage.swift b/TIFoundationUtils/DataStorage/Sources/SingleValueStorage/StringValueDefaultsStorage.swift similarity index 100% rename from TIFoundationUtils/DataStorage/Sources/StringValueDefaultsStorage.swift rename to TIFoundationUtils/DataStorage/Sources/SingleValueStorage/StringValueDefaultsStorage.swift diff --git a/TIMoyaNetworking/Sources/RecoverableNetworkService/DefaultRecoverableJsonNetworkService.swift b/TIMoyaNetworking/Sources/RecoverableNetworkService/DefaultRecoverableJsonNetworkService.swift index 18feb71a..96338ebd 100644 --- a/TIMoyaNetworking/Sources/RecoverableNetworkService/DefaultRecoverableJsonNetworkService.swift +++ b/TIMoyaNetworking/Sources/RecoverableNetworkService/DefaultRecoverableJsonNetworkService.swift @@ -36,8 +36,7 @@ open class DefaultRecoverableJsonNetworkService: De open func process(recoverableRequest: EndpointRequest, prependRequestRetriers: [RequestRetrier] = [], appendRequestRetriers: [RequestRetrier] = [], - completion: @escaping ParameterClosure>) -> Cancellable - { + completion: @escaping ParameterClosure>) -> Cancellable { process(recoverableRequest: recoverableRequest, errorHandlers: prependRequestRetriers + defaultRequestRetriers + appendRequestRetriers, @@ -63,22 +62,12 @@ open class DefaultRecoverableJsonNetworkService: De completion: @escaping ParameterClosure>) -> Cancellable { Cancellables.scoped { cancellableBag in - process(request: recoverableRequest) { [weak self] (result: RequestResult) in - if case let .failure(errorResponse) = result { - guard let self, !cancellableBag.isCancelled else { - completion(result.mapError { .init(failures: [$0]) }) - return - } - - self.recover(request: recoverableRequest, - errorHandlers: errorHandlers, - errorResponse: errorResponse, - originalResult: result, - cancellableBag: cancellableBag, - completion: completion) - } else { - completion(result.mapError { .init(failures: [$0]) }) - } + process(request: recoverableRequest) { [weak self] in + self?.handle(recoverableResponse: $0, + request: recoverableRequest, + errorHandlers: errorHandlers, + cancellableBag: cancellableBag, + completion: completion) } } } @@ -94,37 +83,45 @@ open class DefaultRecoverableJsonNetworkService: De } } - open func recover(request: EndpointRequest, - errorHandlers: [RequestRetrier], - errorResponse: ErrorType, - originalResult: RequestResult, - cancellableBag: BaseCancellableBag, - completion: @escaping ParameterClosure>) { + open func handle(recoverableResponse: RequestResult, + request: EndpointRequest, + errorHandlers: [RequestRetrier], + cancellableBag: BaseCancellableBag, + completion: @escaping ParameterClosure>) { - Self.validateAndRepair(request: request, - errors: [errorResponse], - retriers: errorHandlers, - cancellableBag: cancellableBag) { - switch $0 { - case .retry, .retryWithDelay: - self.process(request: request) { - completion($0.mapError { .init(failures: [$0]) }) - } - .add(to: cancellableBag) - case .doNotRetry, .doNotRetryWithError: - completion(originalResult.mapError { .init(failures: [$0]) }) + if case let .failure(errorResponse) = recoverableResponse { + guard !cancellableBag.isCancelled else { + return } + + Self.validateAndRepair(request: request, + errors: [errorResponse], + retriers: errorHandlers, + cancellableBag: cancellableBag) { + switch $0 { + case .retry, .retryWithDelay: + self.process(request: request) { + completion($0.mapError { .init(failures: [$0]) }) + } + .add(to: cancellableBag) + + case .doNotRetry, .doNotRetryWithError: + completion(recoverableResponse.mapError { .init(failures: [$0]) }) + } + } + } else { + completion(recoverableResponse.mapError { .init(failures: [$0]) }) } } public func register(defaultRequestRetrier: RequestRetrier) - where RequestRetrier.ErrorResult == ErrorType { + where RequestRetrier.ErrorResult == ErrorType { defaultRequestRetriers.append(defaultRequestRetrier.asAnyEndpointRequestRetrier()) } public func set(defaultRequestRetriers: RequestRetrier...) - where RequestRetrier.ErrorResult == ErrorType { + where RequestRetrier.ErrorResult == ErrorType { self.defaultRequestRetriers = defaultRequestRetriers.map { $0.asAnyEndpointRequestRetrier() } } @@ -147,6 +144,7 @@ open class DefaultRecoverableJsonNetworkService: De switch retryResult { case .retry, .retryWithDelay: completion(.retry) + case .doNotRetry, .doNotRetryWithError: validateAndRepair(request: request, errors: errors, @@ -154,6 +152,7 @@ open class DefaultRecoverableJsonNetworkService: De cancellableBag: cancellableBag, completion: completion) } + case let .failure(error): validateAndRepair(request: request, errors: errors + [error],