From 9766326dcd946012c7c61bf775c5f558b9d9f31e Mon Sep 17 00:00:00 2001 From: Bartosz Kosiorek Date: Thu, 27 Apr 2023 23:52:06 +0200 Subject: [PATCH] Display absolute path for invalidBuildScriptPath and invalidTargetConfigFile error print. (#1353) * Display absolute path in invalidBuildScriptPath error print. With previous implementation, the error message was not clear for end user: Spec validation error: Target "Project" has a script "SwiftLint" which has a path that doesn't exist "../../wrong-dir/scripts/run_swiftlint_in_xcode_wrapper.sh" With new implementation with absolute path, it is easier to validate what is wrong with path: Spec validation error: Target "Project" has a script "SwiftLint" which has a path that doesn't exist "/Users/SomeUser/dev/fancy-project/wrong-dir/scripts/run_swiftlint_in_xcode_wrapper.sh" * Display absolute path for invalidTargetConfigFile error print. Without patch: 2 Spec validations errors: - Target "MM" has invalid config file "../../xcodegen/MM/Build/xcconfig/conan_config.xcconfig" for config "Debug" - Target "MM" has invalid config file "../../xcodegen/MM/Build/xcconfig/conan_config.xcconfig" for config "Release" After fix: 2 Spec validations errors: - Target "MM" has invalid config file path "/Users/MyUser/dev/myproject/xcodegen/MM/Build/xcconfig/conan_config.xcconfig" for config "Release" - Target "MM" has invalid config file path "/Users/MyUser/dev/myproject/xcodegen/MM/Build/xcconfig/conan_config.xcconfig" for config "Debug" --- Sources/ProjectSpec/SpecValidation.swift | 7 ++++--- Sources/ProjectSpec/SpecValidationError.swift | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/Sources/ProjectSpec/SpecValidation.swift b/Sources/ProjectSpec/SpecValidation.swift index 376c0153..b449f6c6 100644 --- a/Sources/ProjectSpec/SpecValidation.swift +++ b/Sources/ProjectSpec/SpecValidation.swift @@ -81,8 +81,9 @@ extension Project { for target in projectTargets { for (config, configFile) in target.configFiles { - if !options.disabledValidations.contains(.missingConfigFiles) && !(basePath + configFile).exists { - errors.append(.invalidTargetConfigFile(target: target.name, configFile: configFile, config: config)) + let configPath = basePath + configFile + if !options.disabledValidations.contains(.missingConfigFiles) && !configPath.exists { + errors.append(.invalidTargetConfigFile(target: target.name, configFile: configPath.string, config: config)) } if !options.disabledValidations.contains(.missingConfigs) && getConfig(config) == nil { errors.append(.invalidConfigFileConfig(config)) @@ -137,7 +138,7 @@ extension Project { if case let .path(pathString) = script.script { let scriptPath = basePath + pathString if !scriptPath.exists { - errors.append(.invalidBuildScriptPath(target: target.name, name: script.name, path: pathString)) + errors.append(.invalidBuildScriptPath(target: target.name, name: script.name, path: scriptPath.string)) } } } diff --git a/Sources/ProjectSpec/SpecValidationError.swift b/Sources/ProjectSpec/SpecValidationError.swift index 8a9832ac..f0c957ed 100644 --- a/Sources/ProjectSpec/SpecValidationError.swift +++ b/Sources/ProjectSpec/SpecValidationError.swift @@ -46,7 +46,7 @@ public struct SpecValidationError: Error, CustomStringConvertible { case let .invalidTargetDependency(target, dependency): return "Target \(target.quoted) has invalid dependency: \(dependency.quoted)" case let .invalidTargetConfigFile(target, configFile, config): - return "Target \(target.quoted) has invalid config file \(configFile.quoted) for config \(config.quoted)" + return "Target \(target.quoted) has invalid config file path \(configFile.quoted) for config \(config.quoted)" case let .invalidTargetSource(target, source): return "Target \(target.quoted) has a missing source directory \(source.quoted)" case let .invalidTargetSchemeConfigVariant(target, configVariant, configType):