mirror of
https://github.com/yonaskolb/XcodeGen.git
synced 2026-03-18 20:02:25 +00:00
Added duplicate dependencies validation (#1234)
**Reason** - More strict validation of added dependencies **Contents** - Added changelog entry - Added check for duplicates in validation stage - Added test
This commit is contained in:
committed by
GitHub
parent
da8aad004f
commit
24572daeb5
+154
-9
@@ -1,18 +1,24 @@
|
||||
# Change Log
|
||||
|
||||
## Next Version
|
||||
|
||||
### Added
|
||||
|
||||
- Added a new CopyFilesBuildPhase, "Embed ExtensionKit Extensions" #1230 @mtj0928
|
||||
- Added duplicate dependencies validation #1234 @aleksproger
|
||||
|
||||
## 2.30.0
|
||||
|
||||
### Added
|
||||
|
||||
- Added support for new target type `extensionkit-extension` in Xcode 14 #1228 @aleksproger
|
||||
|
||||
### Changed
|
||||
|
||||
- Speed up generating build settings for large projects #1221 @jpsim
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fix XcodeGen building as library after breaking XcodeProj update 8.8.0 #1228 @aleksproger
|
||||
|
||||
## 2.29.0
|
||||
@@ -35,7 +41,7 @@ Some support for Xcode Test Plans has been added. For now test plans are not gen
|
||||
|
||||
#### Added
|
||||
|
||||
- Support for specifying custom group locations for SPM packages. #1173 @John-Connolly
|
||||
- Support for specifying custom group locations for SPM packages. #1173 @John-Connolly
|
||||
|
||||
### Fixed
|
||||
|
||||
@@ -67,11 +73,12 @@ Some support for Xcode Test Plans has been added. For now test plans are not gen
|
||||
|
||||
### Changed
|
||||
|
||||
- Speed up source inclusion checking for big projects #1122 @PaulTaykalo
|
||||
- Speed up source inclusion checking for big projects #1122 @PaulTaykalo
|
||||
|
||||
## 2.25.0
|
||||
|
||||
### Added
|
||||
|
||||
- Allow specifying a `copy` setting for each dependency. #1038 @JakubBednar
|
||||
|
||||
### Fixed
|
||||
@@ -95,50 +102,61 @@ Some support for Xcode Test Plans has been added. For now test plans are not gen
|
||||
- Add ability to specify UI testing screenshot behavior in test schemes #942 @daltonclaybrook
|
||||
|
||||
### Changed
|
||||
|
||||
- **Breaking**: Rename the `platform` field on `Dependency` to `platformFilter` #1087 @daltonclaybrook
|
||||
|
||||
## 2.23.1
|
||||
|
||||
### Changed
|
||||
|
||||
- Reverted "Change FRAMEWORK_SEARCH_PATH for xcframeworks (#1015)", introduced in 2.20.0. XCFrameworks need to be
|
||||
referenced directly in the project for Xcode's build system to extract the appropriate frameworks #1081 @elliottwilliams
|
||||
|
||||
## 2.23.0
|
||||
|
||||
#### Added
|
||||
|
||||
- Added ability to set custom platform for dependency #934 @raptorxcz
|
||||
|
||||
#### Fixed
|
||||
|
||||
- Added `()` to config variant trimming charater set to fix scheme config variant lookups for some configs like `Debug (Development)` that broke in 2.22.0 #1078 @DavidWoohyunLee
|
||||
- Fixed Linux builds on Swift 5.4 #1083 @yonaskolb
|
||||
|
||||
## 2.22.0
|
||||
|
||||
#### Added
|
||||
|
||||
- Support `runPostActionsOnFailure` for running build post scripts on failing build #1075 @freddi-kit
|
||||
|
||||
#### Changed
|
||||
|
||||
- Xcode no longer alerts to project changes after regeneration, due to internal workspace not regenerating if identical #1072 @yonaskolb
|
||||
|
||||
#### Fixed
|
||||
|
||||
- Fixed no such module `DOT` error when package is used as a dependency #1067 @yanamura
|
||||
- Fixed scheme config variant lookups for some configs like `ProdDebug` and `Prod-Debug` that broke in 2.21.0 #1070 @yonaskolb
|
||||
|
||||
## 2.21.0
|
||||
|
||||
#### Added
|
||||
|
||||
- Support weak link for Swift Package Dependency #1064 @freddi-kit
|
||||
|
||||
#### Changed
|
||||
|
||||
- Carthage frameworks are no longer embedded for "order-only" target dependencies. This avoid redundant embeds in situations where a target's sources _import_ a Carthage framework but do not have a binary dependency on it (like a test target which runs in a host app). #1041 @elliottwilliams
|
||||
|
||||
#### Fixed
|
||||
|
||||
- The `Core` target is renamed to avoid collisions with other packages. #1057 @elliottwilliams
|
||||
- Lookup scheme config variants by whole words, fixing incorrect assignment in names that contain subtrings of each other (eg PreProd and Prod) #976 @stefanomondino
|
||||
|
||||
## 2.20.0
|
||||
|
||||
#### Added
|
||||
|
||||
- Allow specifying a `github` name like `JohnSundell/Ink` instead of a full `url` for Swift Packages #1029 @yonaskolb
|
||||
- Added explicity `LastUpgradeCheck` and `LastUpgradeVersion` override support so it's possible to override these properties without using the `project.xcodeVersion`. [1013](https://github.com/yonaskolb/XcodeGen/pull/1013) @Andre113
|
||||
- Added `macroExpansion` for `run` in `schemes` #1036 @freddi-kit
|
||||
@@ -146,17 +164,20 @@ Some support for Xcode Test Plans has been added. For now test plans are not gen
|
||||
- Added support for selectedTests in schemes `Test` configuration. #913 @ooodin
|
||||
|
||||
#### Fixed
|
||||
|
||||
- Fixed regression on `.storekit` configuration files' default build phase. #1026 @jcolicchio
|
||||
- Fixed framework search paths when using `.xcframework`s. #1015 @FranzBusch
|
||||
- Fixed bug where schemes without a build target would crash instead of displaying an error #1040 @dalemyers
|
||||
- Fixed files with names ending in **Info.plist** (such as **GoogleServices-Info.plist**) from being omitted from the Copy Resources build phase. Now, only the resolved info plist file for each specific target is omitted. #1027 @liamnichols
|
||||
|
||||
#### Internal
|
||||
|
||||
- Build universal binaries for release. XcodeGen now runs natively on Apple Silicon. #1024 @thii
|
||||
|
||||
## 2.19.0
|
||||
|
||||
#### Added
|
||||
|
||||
- Added support for building and running on Linux platforms. Tested for compatibility with Swift 5.3+ and Ubuntu 18.04. #988 @elliottwilliams
|
||||
- Added `useBaseInternationalization` to Project Spec Options to opt out of Base Internationalization. #961 @liamnichols
|
||||
- Added `storeKitConfiguration` to allow specifying StoreKit Configuration in Scheme and TargetScheme, supporting either xcodeproj or xcworkspace via `schemePathPrefix` option. #964 @jcolicchio
|
||||
@@ -166,22 +187,26 @@ Some support for Xcode Test Plans has been added. For now test plans are not gen
|
||||
- Added discovered dependency file for a build script #1012 @polac24 @fggeraissate
|
||||
|
||||
#### Changed
|
||||
|
||||
- **Breaking**: Info.plists with custom prefixes are no longer added to the Copy Bundle Resources build phase #945 @anivaros
|
||||
- **Breaking**: `workingDirectory` of included legacy targets is now made relative to including project #981 @jcolicchio
|
||||
- **Breaking**: Make `simulateLocation` respect `schemePathPrefix` option. #973 @jcolicchio
|
||||
|
||||
#### Fixed
|
||||
|
||||
- Fixed error message output for `minimumXcodeGenVersion`. #967 @joshwalker
|
||||
- Remove force-unwrapping causing crash for `LegacyTarget`s #982 @jcolicchio
|
||||
- Fixed a race condition in an internal JSON decoder, which would occasionally fail with an error like `Parsing project spec failed: Error Domain=Unspecified error Code=0`. #995 @elliottwilliams
|
||||
- Fixed issue where frameworks with `MACH_O_TYPE: staticlib` were being incorrectly embedded. #1003 @mrabiciu
|
||||
|
||||
#### Internal
|
||||
|
||||
- Updated to Yams 4.0.0 #984 @swiftty
|
||||
|
||||
## 2.18.0
|
||||
|
||||
#### Added
|
||||
|
||||
- Add `Scheme.Test.TestTarget.skipped` to allow skipping of an entire test target. #916 @codeman9
|
||||
- Added ability to set custom LLDBInit scripts for launch and test schemes #929 @polac24
|
||||
- Adds App Clip support. #909 @brentleyjones @dflems
|
||||
@@ -190,12 +215,15 @@ Some support for Xcode Test Plans has been added. For now test plans are not gen
|
||||
- Enable Base Internationalization by default as per Xcode 12 behavior. #954 @liamnichols
|
||||
|
||||
#### Changed
|
||||
|
||||
- Change default project version to Xcode 12 #960 @yonaskolb
|
||||
|
||||
#### Internal
|
||||
|
||||
- Updates CI to run on Xcode 12. #936 @dflems @yonaskolb
|
||||
|
||||
#### Fixed
|
||||
|
||||
- Select the first runnable build target, if present. #957 @codeman9
|
||||
- Allow SDK dependencies to be embedded. #922 @k-thorat
|
||||
- Allow creating intermediary groups outside of the project directory. #892 @segiddins
|
||||
@@ -205,21 +233,25 @@ Some support for Xcode Test Plans has been added. For now test plans are not gen
|
||||
## 2.17.0
|
||||
|
||||
#### Added
|
||||
|
||||
- Added `options.fileTypes` which lets you set cross project defaults for certain file extensions #914 @yonaskolb
|
||||
- Added `onlyCopyFilesOnInstall` option to targets for the Embed Files build phase. #912 @jsorge
|
||||
|
||||
#### Fixed
|
||||
|
||||
- Treat all directories with known UTI as file wrapper. #896 @KhaosT
|
||||
- Generated schemes for application extensions now contain `wasCreatedForAppExtension = YES`. #898 @muizidn
|
||||
- Allow package dependencies to use `link: false` #920 @k-thorat
|
||||
- Fixed issue computing relative paths. #915 @andrewreach
|
||||
|
||||
#### Internal
|
||||
|
||||
- Updated to XcodeProj 7.13.0 #908 @brentleyjones
|
||||
|
||||
## 2.16.0
|
||||
|
||||
#### Added
|
||||
|
||||
- Improve speed of metadata parsing and dependency resolution. #803 @michaeleisel
|
||||
- Improve support for iOS sticker packs and add support for `launchAutomaticallySubstyle` to run schemes. #824 @scelis
|
||||
- Add --project-root option to generate command. #828 @ileitch
|
||||
@@ -230,6 +262,7 @@ Some support for Xcode Test Plans has been added. For now test plans are not gen
|
||||
- Added ability to set executable to Ask to Launch. #871 @pinda
|
||||
|
||||
#### Fixed
|
||||
|
||||
- Fixed issue when linking and embeding static frameworks: they should be linked and NOT embed. #820 @acecilia
|
||||
- Fixed issue when generating projects for paths with a dot in the folder for swift sources. #826 @asifmohd
|
||||
- Prefix static library target filenames with 'lib' to match Xcode. #831 @ileitch
|
||||
@@ -251,6 +284,7 @@ Some support for Xcode Test Plans has been added. For now test plans are not gen
|
||||
## 2.15.1
|
||||
|
||||
#### Fixed
|
||||
|
||||
- Fixed issue which caused watch app schemes to be generated incorrectly, preventing these apps from launching. #798 @daltonclaybrook
|
||||
- Added build presets for the target type `framework.static`. #819 @acecilia
|
||||
- Fixed XcodeProj resolution and updated to 7.10.0 #822 @soffes
|
||||
@@ -258,10 +292,12 @@ Some support for Xcode Test Plans has been added. For now test plans are not gen
|
||||
## 2.15.0
|
||||
|
||||
#### Added
|
||||
|
||||
- Add support for local Swift Packages in `packages` using `path`. #808 @freddi-kit
|
||||
- Add `buildImplicitDependencies` as an option on `TargetScheme`. #810 @evandcoleman
|
||||
|
||||
#### Fixed
|
||||
|
||||
- Fixed resolving path to local Swift Packages #796 @freddi-kit
|
||||
- Added ability to stop on every main thread checker issue on Run schemes and TargetSchemes #799 @ionutivan
|
||||
- Avoid copying ObjC interface header when SWIFT_INSTALL_OBJC_HEADER=false. #805 @kateinoigakukun
|
||||
@@ -269,9 +305,11 @@ Some support for Xcode Test Plans has been added. For now test plans are not gen
|
||||
## 2.14.0
|
||||
|
||||
#### Added
|
||||
|
||||
- Add ability to embed and code sign Swift package dependencies with dynamic products. #788 @alexruperez
|
||||
|
||||
#### Fixed
|
||||
|
||||
- Revert "Add Base to known regions even if one doesn't exist" #791 @bryansum
|
||||
- Set `defaultConfigurationName` for every target which is defined in a project. #787 @ken0nek
|
||||
- Set `TEST_TARGET_NAME` only when a project has UITest bundle. #792 @ken0nek
|
||||
@@ -280,30 +318,36 @@ Some support for Xcode Test Plans has been added. For now test plans are not gen
|
||||
## 2.13.1
|
||||
|
||||
#### Fixed
|
||||
|
||||
- Validate scheme test action and test coverage target references before generating. #775 @liamnichols
|
||||
- Fixed parsing prerelease identifiers in Swift package versions #779 @yonaskolb
|
||||
- Fixed using legacy targets as dependencies #778 @yonaskolb
|
||||
|
||||
#### Internal
|
||||
|
||||
- Updated to XcodeProj 7.8.0 #777 @yonaskolb
|
||||
- Use https://github.com/mxcl/Version #779 @yonaskolb
|
||||
- Use <https://github.com/mxcl/Version> #779 @yonaskolb
|
||||
|
||||
## 2.13.0
|
||||
|
||||
#### Added
|
||||
|
||||
- Support External Target References via subprojects. #701 @evandcoleman
|
||||
|
||||
#### Fixed
|
||||
|
||||
- Fixed compilation as library by locking down XcodeProj version #767 @yonaskolb
|
||||
- Stabilized sorting of groups with duplicate names/paths. #671 @ChristopherRogers
|
||||
- Moved `Copy Bundle Resources` to after `Link with Libraries` build phase #768 @yonaskolb
|
||||
|
||||
#### Internal
|
||||
|
||||
- Updated to XcodeProj 7.7.0 #767 @yonaskolb
|
||||
|
||||
## 2.12.0
|
||||
|
||||
#### Added
|
||||
|
||||
- Added pre and post command options. Useful for running `pod install` in combination with `--use-cache` #759 @yonaskolb
|
||||
- Support for language and region settings on a target basis #728 @FranzBusch
|
||||
- Added option to generate only Info.plist files with `--only-plists` #739 @namolnad
|
||||
@@ -311,6 +355,7 @@ Some support for Xcode Test Plans has been added. For now test plans are not gen
|
||||
- Support for On Demand Resources tags #753 @sipao
|
||||
|
||||
#### Fixed
|
||||
|
||||
- Fixed resolving a relative path for `projectReference.path` #740 @kateinoigakukun
|
||||
- Don't add framework dependency's directory to `FRAMEWORK_SEARCH_PATHS` if it is implicit #744 @ikesyo @yutailang0119
|
||||
- Fixed resolving relative path passed to `XcodeProj` #751 @PycKamil
|
||||
@@ -318,11 +363,13 @@ Some support for Xcode Test Plans has been added. For now test plans are not gen
|
||||
- Added an extra check for package versions. #755 @basvankuijck
|
||||
|
||||
#### Internal
|
||||
|
||||
- Update to SwiftCLI 6.0 and use the new property wrappers #749 @yonaskolb
|
||||
|
||||
## 2.11.0
|
||||
|
||||
#### Added
|
||||
|
||||
- Add Carthage static framework dependencies support. #688 @giginet
|
||||
- Added `xcodegen dump` command #710 @yonaskolb
|
||||
- Added `--no-env` option to disable environment variables expansion #704 @rcari
|
||||
@@ -330,6 +377,7 @@ Some support for Xcode Test Plans has been added. For now test plans are not gen
|
||||
- Added new dependency type, `bundle`. This allows targets to copy bundles from other projects #616 @bsmith11
|
||||
|
||||
#### Fixed
|
||||
|
||||
- Improved variable expansion runtime #704 @rcari
|
||||
- Fixed missing headers for static framework targets #705 @wag-miles
|
||||
- Using more file types from XcodeProj for PBXFileReferences resulting in less project diffs #715 @yonaskolb
|
||||
@@ -338,6 +386,7 @@ Some support for Xcode Test Plans has been added. For now test plans are not gen
|
||||
- Fixed unnecessary dependencies related to SwiftPM #726 @tid-kijyun
|
||||
|
||||
#### Changed
|
||||
|
||||
- Deprecated `$old_form` variables in favor of `${new_form}` variables #704 @rcari
|
||||
- Updated XcodeProj to 7.4.0 #709 @yonaskolb
|
||||
- Updated to Swift 5.1 #714 @yonaskolb
|
||||
@@ -345,6 +394,7 @@ Some support for Xcode Test Plans has been added. For now test plans are not gen
|
||||
## 2.10.1
|
||||
|
||||
#### Fixed
|
||||
|
||||
- Add Base to knownRegions even if one doesn't exist #694 @bryansum
|
||||
- Fixed missing `onlyGenerateCoverageForSpecifiedTargets` issue #700 @kateinoigakukun
|
||||
- Fixed regression on dependencies `link` flag #703 @rcari
|
||||
@@ -352,10 +402,12 @@ Some support for Xcode Test Plans has been added. For now test plans are not gen
|
||||
## 2.10.0
|
||||
|
||||
#### Added
|
||||
|
||||
- Support Target Reference to another project. #655 @kateinoigakukun
|
||||
- Added `coverageTargets` for test target. This enables to gather code coverage for specific targets. #656 @kateinoigakukun
|
||||
|
||||
#### Fixed
|
||||
|
||||
- Add base localisation by default even if no base localised files were found. Fixes warning in Xcode 11 #685 @yonaskolb
|
||||
- Don't generate CFBundleExecutable in default generated Info.plist for `bundle` target types #689 @FranzBusch
|
||||
- Fixed resolving relative paths with custom project destination #681 @giginet
|
||||
@@ -363,26 +415,31 @@ Some support for Xcode Test Plans has been added. For now test plans are not gen
|
||||
- Fixed macOS unit test target TEST_HOST #696 @mjarvis
|
||||
|
||||
#### Internal
|
||||
|
||||
- Restructure targets #698 @yonaskolb
|
||||
|
||||
## 2.9.0
|
||||
|
||||
#### Added
|
||||
|
||||
- Added Scheme Templates #672 @bclymer
|
||||
|
||||
#### Fixed
|
||||
|
||||
- Fixed macOS unit test setting preset #665 @yonaskolb
|
||||
- Add `rcproject` files to sources build phase instead of resources #669 @Qusic
|
||||
- Prefer default configuration names for generated schemes #673 @giginet
|
||||
- Fixed some resource files being placed to "Recovered References" group #679 @nivanchikov
|
||||
|
||||
#### Internal
|
||||
|
||||
- Updated to SwiftCLI 5.3.2 #667 @giginet
|
||||
- Fixed tests in case-sensitive file system #670 @Qusic
|
||||
|
||||
## 2.8.0
|
||||
|
||||
#### Added
|
||||
|
||||
- Added support for Swift Package dependencies #624 @yonaskolb
|
||||
- Added `includes` to `sources` for a Target. This follows the same glob-style as `excludes` but functions as a way to only include files that match a specified pattern. Useful if you only want a certain file type, for example specifying `**/*.swift`. #637 @bclymer
|
||||
- Support `dylib` SDK. #650 @kateinoigakukun
|
||||
@@ -390,74 +447,89 @@ Some support for Xcode Test Plans has been added. For now test plans are not gen
|
||||
- Added `debugEnabled` option for `run` and `test` scheme #657 @kateinoigakukun
|
||||
|
||||
#### Fixed
|
||||
|
||||
- Expand template variable in Array of Any #651 @kateinoigakukun
|
||||
- Significantly improve performance when running with a large number files. #658 @kateinoigakukun
|
||||
- Removed some more diffs between the generated .pbxproj and when Xcode resaves it #663 @yonaskolb
|
||||
|
||||
#### Internal
|
||||
|
||||
- Removed needless `Array` initialization. #661 @RomanPodymov
|
||||
- Updated to XcodeProj 7.1.0 #624 @yonaskolb
|
||||
|
||||
## 2.7.0
|
||||
|
||||
#### Added
|
||||
|
||||
- Added Bash 4 style recursive globbing (`**/*`) in target sources `excludes` #636 @bclymer
|
||||
- Added ability to disable main thread checker in Schemes #601 @wag-miles
|
||||
|
||||
#### Fixed
|
||||
|
||||
- Fixed included specs that were referenced multiple times from duplicating content #599 @haritowa
|
||||
- Fixed `.orig` files being added to the project #627 @keith
|
||||
|
||||
#### Changed
|
||||
|
||||
- Allow linking of dependencies into static libraries when `link` is set to true #635 @kateinoigakukun
|
||||
|
||||
## 2.6.0
|
||||
|
||||
#### Added
|
||||
|
||||
- Added ability to skip tests #582 @kadarandras
|
||||
- Added ability to set `attributes` on build files #583 @min
|
||||
- Allow using environment variables in the form of `${SOME_VARIABLE}`. This might be a **breaking** change when a target template attribute is also defined as an environment variable #594 @tomquist
|
||||
- Added support for `watchapp2-container` and `framework.static` product types #604 @yonaskolb
|
||||
|
||||
#### Fixed
|
||||
|
||||
- Fixed `.pch` files being bundled as resources #597 @thii
|
||||
- Fixed an issue that prevents watchOS Intents Extension from running correctly. #571 @KhaosT
|
||||
|
||||
#### Changed
|
||||
|
||||
- Updated the default `compatibilityVersion` project setting from `Xcode 9.3` to `Xcode 10.0` #581 @acecilia
|
||||
- Updated to XcodeProj 7.0.0. Note that the length of generated UUIDs has changed #604 @yonaskolb
|
||||
|
||||
#### Internal
|
||||
|
||||
- Added ability to encode ProjectSpec #545 @ryohey
|
||||
|
||||
## 2.5.0
|
||||
|
||||
#### Added
|
||||
|
||||
- Added support for `app-extension.intents-service` target type #536 @yonaskolb
|
||||
- Added support for custom `root` in `sdk` dependency #562 @raptorxcz
|
||||
|
||||
#### Changed
|
||||
|
||||
- Updated to xcodeproj 6.7.0 including its performance improvements #536 @yonaskolb
|
||||
- Updated default generated settings for Xcode 10.2 #555 @yonaskolb
|
||||
- Changed order of file generation so that plists are now generated before the project, so they will be included in the projects files #544 @tomquist
|
||||
- Updated Yams to 2.0.0 @yonaskolb
|
||||
|
||||
#### Fixed
|
||||
|
||||
- Fixed groups from sources outside a project spec's directory from being flattened. #550 @sroebert
|
||||
- Fixed `optional` file sources not being added to the project #557 @yonaskolb
|
||||
- Fixed Carthage dependencies being incorrectly embedded in WatchKit app bundles instead of a WatchKit app extension #558 @KhaosT
|
||||
|
||||
## 2.4.0
|
||||
|
||||
#### Fixed:
|
||||
#### Fixed
|
||||
|
||||
- Fixed installation when building in Swift 5 #549 @yonaskolb
|
||||
|
||||
#### Changed
|
||||
|
||||
- Updated to Swift 5 and dropped Swift 4.2 #549 @yonaskolb
|
||||
|
||||
## 2.3.0
|
||||
|
||||
#### Added
|
||||
|
||||
- Added ability to automatically find all the frameworks for Carthage dependencies via the global `options.findCarthageFrameworks` or dependency specfic `dependency.findFrameworks`. See the [Carthage](Docs/Usage.md#carthage) usage docs for more info #506 @rpassis @yonaskolb
|
||||
- Added support for nested target templates #534 @tomquist
|
||||
- Added ability to define `templateAttributes` within a target to be able to parameterize templates. #533 @tomquist
|
||||
@@ -466,9 +538,11 @@ Some support for Xcode Test Plans has been added. For now test plans are not gen
|
||||
- Added ability to define a per-platform `deploymentTarget` for Multi-Platform targets. #510 @ainopara
|
||||
|
||||
#### Changed
|
||||
|
||||
- **DEPRECATION**: Placeholders `$target_name` and `$platform` have been deprecated in favour of `${target_name}` and `${platform}`. Support for the old placeholders will be removed in a future version #533 @tomquist
|
||||
|
||||
#### Fixed
|
||||
|
||||
- Sources outside a project spec's directory will be correctly referenced as relative paths in the project file. #524
|
||||
- Fixed error when `optional` directory source is missing #527 @yonaskolb
|
||||
- Fixed excludes within included spec #535 @yonaskolb
|
||||
@@ -479,6 +553,7 @@ Some support for Xcode Test Plans has been added. For now test plans are not gen
|
||||
## 2.2.0
|
||||
|
||||
#### Added
|
||||
|
||||
- Added ability to generate empty directories via `options.generateEmptyDirectories` #480 @Beniamiiin
|
||||
- Added support for the `instrumentsPackage` product type #482 @ksulliva
|
||||
- Added support for `inputFileLists` and `outputFileLists` within project build scripts #500 @lukewakeford
|
||||
@@ -486,12 +561,14 @@ Some support for Xcode Test Plans has been added. For now test plans are not gen
|
||||
- Added `createIntermediateGroups` to individual Target Sources which overrides the top level option #505 @yonaskolb
|
||||
|
||||
#### Changed
|
||||
|
||||
- **BREAKING**: All the paths within `include` files are now relative to that file and not the root spec. This can be disabled with a `relativePaths: false` on the include. See the [documentation](https://github.com/yonaskolb/XcodeGen/blob/master/Docs/ProjectSpec.md#include) for more details #489 @ellneal
|
||||
- Updated the Xcode compatibility version from 3.2 to 9.3 #497 @yonaskolb
|
||||
- Exact matches to config names in build settings won't partial apply to other configs #503 @yonaskolb
|
||||
- UUIDs in the project are standard and don't contain any type prefixes anymore
|
||||
|
||||
#### Fixed
|
||||
|
||||
- Fixed `--project` argument not taking effect #487 @monowerker
|
||||
- Fixed Sticker Packs from generating an empty Source file phase which caused in error in the new build system #492 @rpassis
|
||||
- Fixed generated schemes for tool targets not setting the executable #496 @yonaskolb
|
||||
@@ -500,14 +577,17 @@ Some support for Xcode Test Plans has been added. For now test plans are not gen
|
||||
## 2.1.0
|
||||
|
||||
#### Added
|
||||
|
||||
- Added an experiment new caching feature. Pass `--use-cache` to opt in. This will read and write from a cache file to prevent unnecessarily generating the project. Give it a try as it may become the default in a future release #412 @yonaskolb
|
||||
|
||||
#### Changed
|
||||
|
||||
- Changed spelling of build phases to **preBuildPhase** and **postBuildPhase**. The older names are deprecated but still work [402](https://github.com/yonaskolb/XcodeGen/pull/402) @brentleyjones
|
||||
- Moved generation to a specific subcommand `xcodegen generate`. Simple `xcodegen` will continue to work for now #437 @yonaskolb
|
||||
- If `INFOPLIST_FILE` has been set on a target, then an `info` path won't ovewrite it #443 @feischl97
|
||||
|
||||
#### Fixed
|
||||
|
||||
- Fixed XPC Service package type in generated `Info.plist` #435 @alvarhansen
|
||||
- Fixed phase ordering for modulemap and static libary header Copy File phases. [402](https://github.com/yonaskolb/XcodeGen/pull/402) @brentleyjones
|
||||
- Fixed intermittent errors when running multiple `xcodegen`s concurrently #450 @bryansum
|
||||
@@ -520,6 +600,7 @@ Some support for Xcode Test Plans has been added. For now test plans are not gen
|
||||
## 2.0.0
|
||||
|
||||
#### Added
|
||||
|
||||
- Added `weak` linking setting for dependencies #411 @alvarhansen
|
||||
- Added `info` to targets for generating an `Info.plist` #415 @yonaskolb
|
||||
- Added `entitlements` to targets for generating an `.entitlement` file #415 @yonaskolb
|
||||
@@ -529,6 +610,7 @@ Some support for Xcode Test Plans has been added. For now test plans are not gen
|
||||
- Automatically set project `SDKROOT` if there is only a single platform within the project #433 @yonaskolb
|
||||
|
||||
#### Changed
|
||||
|
||||
- Performance improvements for large projects #388 @yonaskolb @kastiglione
|
||||
- Upgraded to xcodeproj 6 #388 @yonaskolb
|
||||
- Upgraded to Swift 4.2 #388 @yonaskolb
|
||||
@@ -537,6 +619,7 @@ Some support for Xcode Test Plans has been added. For now test plans are not gen
|
||||
- Added ability to not link Carthage frameworks #432 @yonaskolb
|
||||
|
||||
#### Fixed
|
||||
|
||||
- Fixed code signing issues #414 @yonaskolb
|
||||
- Fixed `TargetSource.headerVisibility` not being set in initializer #419 @jerrymarino
|
||||
- Fixed crash when using Xcode Legacy targets as dependencies #427 @dflems
|
||||
@@ -546,24 +629,28 @@ Some support for Xcode Test Plans has been added. For now test plans are not gen
|
||||
If XcodeGen is compiled with Swift 4.2, then UUID's in the generated project will not be deterministic. This will be fixed in an upcoming release with an update to xcodeproj 6.0
|
||||
|
||||
#### Fixed
|
||||
|
||||
- Fixed release builds in Swift 4.2 #404 @pepibumur
|
||||
- Fixed default settings for macOS unit-tests #387 @frankdilo
|
||||
- Fixed Copy Headers phase ordering for Xcode 10 #401 @brentleyjones
|
||||
- Fixed generated schemes on aggregate targets #394 @vgorloff
|
||||
|
||||
#### Changed
|
||||
|
||||
- Added `en` as default value for knownRegions #390 @Saik0s
|
||||
- Update `PathKit`, `Spectre`, `Yams` and `xcodeproj` dependencies
|
||||
|
||||
## 1.11.1
|
||||
|
||||
#### Fixed
|
||||
|
||||
- Fixed `FRAMEWORK_SEARCH_PATHS` for `framework` dependency paths with spaces #382 @brentleyjones
|
||||
- Fixed aggregate targets not being found with `transitivelyLinkDependencies` #383 @brentleyjones
|
||||
|
||||
## 1.11.0
|
||||
|
||||
#### Added
|
||||
|
||||
- Added `showEnvVars` to build scripts to disable printing the environment #351 @keith
|
||||
- Added `requiresObjCLinking` to `target` #354 @brentleyjones
|
||||
- Added `targetTemplates` #355 @yonaskolb
|
||||
@@ -574,6 +661,7 @@ If XcodeGen is compiled with Swift 4.2, then UUID's in the generated project wil
|
||||
- Added `customArchiveName` and `revealArchiveInOrganizer` to `archive` #367 @sxua
|
||||
|
||||
#### Fixed
|
||||
|
||||
- Sort files using localizedStandardCompare #341 @rohitpal440
|
||||
- Use the latest `xcdatamodel` when sorted by version #341 @rohitpal440
|
||||
- Fixed compiler flags being set on non source files in mixed build phase target sources #347 @brentleyjones
|
||||
@@ -584,6 +672,7 @@ If XcodeGen is compiled with Swift 4.2, then UUID's in the generated project wil
|
||||
- Fixed `.metal` files being added to resources #380 @vgorloff
|
||||
|
||||
#### Changed
|
||||
|
||||
- Improved linking for `static.library` targets #352 @brentleyjones
|
||||
- Changed default group sorting to be after files #356 @yonaskolb
|
||||
- Moved `Frameworks` and `Products` top level groups to bottom #356 @yonaskolb
|
||||
@@ -595,41 +684,49 @@ If XcodeGen is compiled with Swift 4.2, then UUID's in the generated project wil
|
||||
- Copy files phases have descriptive names #360 @brentley
|
||||
|
||||
#### Internal
|
||||
|
||||
- Moved brew formula to homebrew core
|
||||
- Added `CONTRIBUTING.md`
|
||||
|
||||
## 1.10.3
|
||||
|
||||
#### Fixed
|
||||
|
||||
- Fixed Mint installations finding `SettingPresets` #338 @yonaskolb
|
||||
|
||||
## 1.10.2
|
||||
|
||||
#### Changed
|
||||
|
||||
- Set `transitivelyLinkDependencies` to false by default
|
||||
|
||||
## 1.10.1
|
||||
|
||||
#### Fixed
|
||||
|
||||
- Fixed `transitivelyLinkDependencies` typo #332 @brentleyjones
|
||||
- Fixed framework target dependencies not being code signed by default #332 @yonaskolb
|
||||
|
||||
#### Changed
|
||||
|
||||
- Code sign all dependencies by default except target executables #332 @yonaskolb
|
||||
|
||||
## 1.10.0
|
||||
|
||||
#### Added
|
||||
|
||||
- Added build rule support #306 @yonaskolb
|
||||
- Added support for frameworks in sources #308 @keith
|
||||
- Added ability to automatically embed transient dependencies. Controlled with `transitivelyLinkDependencies` #327 @brentleyjones
|
||||
|
||||
#### Changed
|
||||
|
||||
- Upgraded to Swift 4.1
|
||||
- Improved Carthage dependency lookup performance with many targets #298 @keith
|
||||
- By default don't CodeSignOnCopy `target` dependencies. This can still be controlled with `Dependency.codeSign` #324 @yonaskolb
|
||||
|
||||
#### Fixed
|
||||
|
||||
- Fixed PBXBuildFile and PBXFileReference being incorrectly generated for Legacy targets #296 @sascha
|
||||
- Fixed required sources build phase not being generated if there are no sources #307 @yonaskolb
|
||||
- Fixed install script in binary release #303 @alvarhansen
|
||||
@@ -644,15 +741,18 @@ If XcodeGen is compiled with Swift 4.2, then UUID's in the generated project wil
|
||||
## 1.9.0
|
||||
|
||||
#### Added
|
||||
|
||||
- Scheme pre and post actions can now be added to `target.scheme` #280 @yonaskolb
|
||||
- Individual files can now be added to `fileGroups` #293 @yonaskolb
|
||||
|
||||
#### Changed
|
||||
|
||||
- Updated to `xcproj` 4.3.0 for Xcode 9.3 updates
|
||||
- Update default Xcode version to 9.3 including new settings #284 @LinusU
|
||||
- **Breaking for ProjectSpec library users** Changed `ProjectSpec` to `Project` and `ProjectSpec.Options` to `SpecOptions` #281 @jerrymarino
|
||||
|
||||
#### Fixed
|
||||
|
||||
- Fixed manual build phase of `none` not being applied to folders #288 @yonaskolb
|
||||
- Quoted values now correctly get parsed as strings #282 @yonaskolb
|
||||
- Fixed adding a root source folder when `createIntermediateGroups` is on #291 @yonaskolb
|
||||
@@ -662,16 +762,19 @@ If XcodeGen is compiled with Swift 4.2, then UUID's in the generated project wil
|
||||
## 1.8.0
|
||||
|
||||
#### Added
|
||||
|
||||
- Added Project `defaultConfig` #269 @keith
|
||||
- Added Target `attributes` #276 @yonaskolb
|
||||
- Automatically set `DevelopmentTeam` and `ProvisioningStyle` within `TargetAttributes` if relevant build settings are defined #277 @yonaskolb
|
||||
|
||||
#### Fixed
|
||||
|
||||
- Fixed default `LD_RUNPATH_SEARCH_PATHS` for app extensions #272 @LinusU
|
||||
|
||||
#### Internal
|
||||
|
||||
- Make `LegacyTarget` init public #264 @jerrymarino
|
||||
- Upgrade to *xcproj* to 4.2.0, *Yams* to 0.6.0 and *PathKit* to 0.9.1 @yonaskolb
|
||||
- Upgrade to _xcproj_ to 4.2.0, _Yams_ to 0.6.0 and _PathKit_ to 0.9.1 @yonaskolb
|
||||
|
||||
## 1.7.0
|
||||
|
||||
@@ -688,6 +791,7 @@ If XcodeGen is compiled with Swift 4.2, then UUID's in the generated project wil
|
||||
- Releases now include a pre-compiled binary and setting presets, including an install script
|
||||
|
||||
#### Fixed
|
||||
|
||||
- Fixed Mint installation from reading setting presets #248 @yonaskolb
|
||||
- Fixed setting `buildPhase` on a `folder` source. This allows for a folder of header files #254 @toshi0383
|
||||
- Carthage dependencies are not automatically embedded into test targets #256 @yonaskolb
|
||||
@@ -698,23 +802,27 @@ If XcodeGen is compiled with Swift 4.2, then UUID's in the generated project wil
|
||||
## 1.6.0
|
||||
|
||||
#### Added
|
||||
|
||||
- Added scheme pre-actions and post-actions #231 @kastiglione
|
||||
- Added `options.disabledValidations` including `missingConfigs` to disable project validation errors #220 @keith
|
||||
- Generate UI Test Target Attributes #221 @anreitersimon
|
||||
|
||||
#### Fixed
|
||||
|
||||
- Filter out duplicate source files #217 @allu22
|
||||
- Fixed how `lastKnownFileType` and `explicitFileType` were generated across platforms #115 @toshi0383
|
||||
- Removed a few cases of project diffs when opening the project in Xcode @yonaskolb
|
||||
- Fixed Swift not being embedded by default in watch apps @yonaskolb
|
||||
|
||||
#### Changed
|
||||
|
||||
- Change arrays to strings in setting presets #218 @allu22
|
||||
- Updated to xcproj 4.0 #227
|
||||
|
||||
## 1.5.0
|
||||
|
||||
#### Added
|
||||
|
||||
- added support for `gatherCoverageData` flag in target schemes #170 @alexruperez
|
||||
- added support for `commandLineOptions` in target schemes #172 @rahul-malik
|
||||
- added Project spec as a SwiftPM library for reuse in other projects #164 @soffes
|
||||
@@ -732,6 +840,7 @@ If XcodeGen is compiled with Swift 4.2, then UUID's in the generated project wil
|
||||
- added `deploymentTarget` setting to project and target #205 @yonaskolb
|
||||
|
||||
#### Changed
|
||||
|
||||
- huge performance improvements when writing the project file due to changes in xcproj
|
||||
- updated dependencies
|
||||
- minor logging changes
|
||||
@@ -742,6 +851,7 @@ If XcodeGen is compiled with Swift 4.2, then UUID's in the generated project wil
|
||||
- when specifying a `--spec` argument, the default for the `--project` path is now the directory containing the spec #211 @yonaskolb
|
||||
|
||||
#### Fixed
|
||||
|
||||
- fixed shell scripts escaping quotes twice #186 @allu22
|
||||
- fixed `createIntermediateGroups` when using a relative spec path #184 @kastiglione
|
||||
- fixed command line arguments for test and profile from being overridden #199 @vhbit
|
||||
@@ -752,6 +862,7 @@ If XcodeGen is compiled with Swift 4.2, then UUID's in the generated project wil
|
||||
## 1.4.0
|
||||
|
||||
#### Added
|
||||
|
||||
- added `--version` flag #112 @mironal
|
||||
- added support for adding individual file sources #106 @bkase
|
||||
- added source compiler flag support #121 @bkase
|
||||
@@ -762,6 +873,7 @@ If XcodeGen is compiled with Swift 4.2, then UUID's in the generated project wil
|
||||
- added `ProjectSpec.options.developmentLanguage` #155 @yonaskolb
|
||||
|
||||
#### Changed
|
||||
|
||||
- updated to xcproj 1.2.0 #113 @yonaskolb
|
||||
- build settings from presets will be removed if they are provided in `xcconfig` files #77 @toshi0383
|
||||
- all files and groups are sorted by type and then alphabetically #144 @yonaskolb
|
||||
@@ -770,6 +882,7 @@ If XcodeGen is compiled with Swift 4.2, then UUID's in the generated project wil
|
||||
- make UUIDs more deterministic #154 @yonaskolb
|
||||
|
||||
#### Fixed
|
||||
|
||||
- only add headers to frameworks and libraries #118 @ryohey
|
||||
- fixed localized files with the same name #126 @ryohey
|
||||
- fix intermediate sources #144 @yonaskolb
|
||||
@@ -780,6 +893,7 @@ If XcodeGen is compiled with Swift 4.2, then UUID's in the generated project wil
|
||||
- all localizations found are added to a projects known regions #157 @ryohey
|
||||
|
||||
#### Internal
|
||||
|
||||
- refactoring
|
||||
- more tests
|
||||
- added release scripts
|
||||
@@ -787,11 +901,13 @@ If XcodeGen is compiled with Swift 4.2, then UUID's in the generated project wil
|
||||
## 1.3.0
|
||||
|
||||
#### Added
|
||||
|
||||
- generate output files for Carthage copy-frameworks script #84 @mironal
|
||||
- added options.settingPreset to choose which setting presets get applied #100 @yonaskolb
|
||||
- added `link` option for target dependencies #109 @keith
|
||||
|
||||
#### Changed
|
||||
|
||||
- updated to xcproj 0.4.1 #85 @enmiller
|
||||
- don't copy base settings if config type has been left out #100 @yonaskolb
|
||||
- generate localised files under a single variant group #70 @ryohey
|
||||
@@ -800,6 +916,7 @@ If XcodeGen is compiled with Swift 4.2, then UUID's in the generated project wil
|
||||
- other small internal changes @yonaskolb
|
||||
|
||||
#### Fixed
|
||||
|
||||
- embed Carthage frameworks for macOS #82 @toshi0383
|
||||
- fixed copying of watchOS app resources #96 @keith
|
||||
- automatically ignore more file types for a target's sources (entitlements, gpx, apns) #94 @keith
|
||||
@@ -812,16 +929,19 @@ If XcodeGen is compiled with Swift 4.2, then UUID's in the generated project wil
|
||||
## 1.2.4
|
||||
|
||||
#### Fixed
|
||||
|
||||
- setting presets only apply `ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES: YES` to applications
|
||||
- don't add carthage dependency to `copy-frameworks` script if `embed: false`
|
||||
- sort group children on APFS
|
||||
|
||||
#### Changed
|
||||
|
||||
- update to xcproj 0.3.0
|
||||
|
||||
## 1.2.3
|
||||
|
||||
#### Fixed
|
||||
|
||||
- Fixed wrong carthage directory name reference for macOS #74 @toshi0383
|
||||
- Removed unnecessary `carthage copy-frameworks` for macOS app target #76 @toshi0383
|
||||
- Added some missing default settings for framework targets. `SKIP_INSTALL: YES` fixes archiving
|
||||
@@ -830,16 +950,18 @@ If XcodeGen is compiled with Swift 4.2, then UUID's in the generated project wil
|
||||
## 1.2.2
|
||||
|
||||
#### Added
|
||||
|
||||
- automatically set `TEST_TARGET_NAME` on UI test targets if one of the dependencies is an application target
|
||||
|
||||
#### Fixed
|
||||
|
||||
- set `DYLIB_INSTALL_NAME_BASE` to `@rpath` in framework target presets
|
||||
- fixed tvOS launch screen setting. `ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME` is now `LaunchImage` not `tvOS LaunchImage`
|
||||
|
||||
|
||||
## 1.2.0
|
||||
|
||||
#### Added
|
||||
|
||||
- `include` now supports a single string as well as a list
|
||||
- add support setting xcconfig files on a project with `configFiles` #64
|
||||
- add `fileGroups` to project spec for adding groups of files that aren't target source files #64
|
||||
@@ -849,6 +971,7 @@ If XcodeGen is compiled with Swift 4.2, then UUID's in the generated project wil
|
||||
- add `mint` installation support
|
||||
|
||||
#### Fixed
|
||||
|
||||
- fixed homebrew installation
|
||||
- fixed target xcconfig files not working via `configFiles` #64
|
||||
- look for `INFOPLIST_FILE` setting in project and xcconfig files before adding it automatically. It was just looking in target settings before #64
|
||||
@@ -857,107 +980,129 @@ If XcodeGen is compiled with Swift 4.2, then UUID's in the generated project wil
|
||||
## 1.1.0
|
||||
|
||||
#### Changed
|
||||
|
||||
- set project version to Xcode 9 - `LastUpgradeVersion` attribute to `0900`
|
||||
- set default Swift version to 4.0 - `SWIFT_VERSION` build setting to `4.0`
|
||||
|
||||
### 1.0.1
|
||||
|
||||
### Fixed
|
||||
|
||||
- fixed incorrect default build script shell path
|
||||
- fixed install scripts
|
||||
|
||||
## 1.0.0
|
||||
|
||||
#### Added
|
||||
|
||||
- Swift 4 support #52
|
||||
- Support for C and C++ files #48 by @antoniocasero
|
||||
- Xcode 9 default settings
|
||||
|
||||
#### Fixed
|
||||
|
||||
- fixed empty string in YAML not being parsed properly #50 by @antoniocasero
|
||||
|
||||
#### Changed
|
||||
|
||||
- updated to xcodeproj 0.1.2 #56
|
||||
- **BREAKING**: changed target definitions from list to map #54
|
||||
|
||||
|
||||
## 0.6.1
|
||||
|
||||
#### Added
|
||||
|
||||
- Ability to set PBXProject attributes #45
|
||||
|
||||
#### Changed
|
||||
|
||||
- Don't bother linking target frameworks for target dependencies.
|
||||
- Move code signing default settings from all iOS targets to iOS application targets, via Product + Platform setting preset files #46
|
||||
|
||||
## 0.6.0
|
||||
|
||||
#### Added
|
||||
|
||||
- Allow a project spec to include other project specs #44
|
||||
|
||||
#### Changed
|
||||
|
||||
- Changed default spec path to `project.yml`
|
||||
- Changed default project directory to the current directory instead of the spec file's directory
|
||||
|
||||
## 0.5.1
|
||||
|
||||
#### Fixed
|
||||
|
||||
- Fix embedded framework dependencies
|
||||
- Add `CODE_SIGN_IDENTITY[sdk=iphoneos*]` back to iOS targets
|
||||
- Fix build scripts with "" generating invalid projects #43
|
||||
|
||||
## 0.5.0
|
||||
|
||||
#### Added
|
||||
|
||||
- Added multi platform targets #35
|
||||
- Automatically generate platform specific `FRAMEWORK_SEARCH_PATHS` for Carthage dependencies #38
|
||||
- Automatically find Info.plist and set `INFOPLIST_FILE` build setting if it doesn't exist on a target #40
|
||||
- Add options for controlling embedding of dependencies #37
|
||||
|
||||
#### Fixed
|
||||
|
||||
- Fixed localized files not being added to a target's resources
|
||||
|
||||
#### Changed
|
||||
|
||||
- Renamed Setting Presets to Setting Groups
|
||||
- Carthage group is now created under top level Frameworks group
|
||||
|
||||
## 0.4.0
|
||||
|
||||
##### Added
|
||||
|
||||
- Homebrew support #16 by @pepibumur
|
||||
- Added `runOnlyWhenInstalling` to build scripts #32
|
||||
- Added `carthageBuildPath` option #34
|
||||
|
||||
#### Fixed
|
||||
|
||||
- Fixed installations of XcodeGen not applying build setting presets for configs, products, and platforms, due to missing resources
|
||||
|
||||
#### Changed
|
||||
- Upgraded to https://github.com/swift-xcode/xcodeproj 0.1.1 #33
|
||||
|
||||
- Upgraded to <https://github.com/swift-xcode/xcodeproj> 0.1.1 #33
|
||||
|
||||
## 0.3.0 - Extensions and Scheme Tests
|
||||
|
||||
#### Added
|
||||
|
||||
- Support for app extension dependencies, using the same `target: MyExtension` syntax #19
|
||||
- Added test targets to generated target schemes via `Target.scheme.testTargets` #21
|
||||
|
||||
#### Changed
|
||||
|
||||
- Updated xcodeproj to 0.0.9
|
||||
|
||||
#### Fixed
|
||||
|
||||
- Fixed watch and messages apps not copying carthage dependencies
|
||||
|
||||
#### Breaking changes
|
||||
|
||||
- Changed `Target.generatedSchemes` to `Target.scheme.configVariants`
|
||||
|
||||
## 0.2.0 - Build scripts
|
||||
|
||||
#### Added
|
||||
|
||||
- Added Target build scripts with `Target.prebuildScripts` and `Target.postbuildScripts` #17
|
||||
- Support for absolute paths in target sources, run script files, and config files
|
||||
- Add validation for incorrect `Target.configFiles`
|
||||
|
||||
#### Fixed
|
||||
|
||||
- Fixed some project objects sometimes having duplicate ids
|
||||
|
||||
## 0.1.0
|
||||
First official release
|
||||
|
||||
First official release
|
||||
|
||||
@@ -56,7 +56,7 @@ public struct Dependency: Equatable {
|
||||
public static let `default` = dynamic
|
||||
}
|
||||
|
||||
public enum DependencyType: Equatable {
|
||||
public enum DependencyType: Hashable {
|
||||
case target
|
||||
case framework
|
||||
case carthage(findFrameworks: Bool?, linkType: CarthageLinkType)
|
||||
|
||||
@@ -154,38 +154,16 @@ extension Project {
|
||||
}
|
||||
|
||||
for target in targets {
|
||||
for dependency in target.dependencies {
|
||||
switch dependency.type {
|
||||
case .target:
|
||||
let dependencyTargetReference = try TargetReference(dependency.reference)
|
||||
var uniqueDependencies = Set<Dependency>()
|
||||
|
||||
switch dependencyTargetReference.location {
|
||||
case .local:
|
||||
if getProjectTarget(dependency.reference) == nil {
|
||||
errors.append(.invalidTargetDependency(target: target.name, dependency: dependency.reference))
|
||||
}
|
||||
case .project(let dependencyProjectName):
|
||||
if getProjectReference(dependencyProjectName) == nil {
|
||||
errors.append(.invalidTargetDependency(target: target.name, dependency: dependency.reference))
|
||||
}
|
||||
}
|
||||
case .sdk:
|
||||
let path = Path(dependency.reference)
|
||||
if !dependency.reference.contains("/") {
|
||||
switch path.extension {
|
||||
case "framework"?,
|
||||
"tbd"?,
|
||||
"dylib"?:
|
||||
break
|
||||
default:
|
||||
errors.append(.invalidSDKDependency(target: target.name, dependency: dependency.reference))
|
||||
}
|
||||
}
|
||||
case .package:
|
||||
if packages[dependency.reference] == nil {
|
||||
errors.append(.invalidSwiftPackage(name: dependency.reference, target: target.name))
|
||||
}
|
||||
default: break
|
||||
for dependency in target.dependencies {
|
||||
let dependencyValidationErrors = try validate(dependency, in: target)
|
||||
errors.append(contentsOf: dependencyValidationErrors)
|
||||
|
||||
if uniqueDependencies.contains(dependency) {
|
||||
errors.append(.duplicateDependencies(target: target.name, dependencyReference: dependency.reference))
|
||||
} else {
|
||||
uniqueDependencies.insert(dependency)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -252,6 +230,46 @@ extension Project {
|
||||
}
|
||||
}
|
||||
|
||||
// Returns error if the given dependency from target is invalid.
|
||||
private func validate(_ dependency: Dependency, in target: Target) throws -> [SpecValidationError.ValidationError] {
|
||||
var errors: [SpecValidationError.ValidationError] = []
|
||||
|
||||
switch dependency.type {
|
||||
case .target:
|
||||
let dependencyTargetReference = try TargetReference(dependency.reference)
|
||||
|
||||
switch dependencyTargetReference.location {
|
||||
case .local:
|
||||
if getProjectTarget(dependency.reference) == nil {
|
||||
errors.append(.invalidTargetDependency(target: target.name, dependency: dependency.reference))
|
||||
}
|
||||
case .project(let dependencyProjectName):
|
||||
if getProjectReference(dependencyProjectName) == nil {
|
||||
errors.append(.invalidTargetDependency(target: target.name, dependency: dependency.reference))
|
||||
}
|
||||
}
|
||||
case .sdk:
|
||||
let path = Path(dependency.reference)
|
||||
if !dependency.reference.contains("/") {
|
||||
switch path.extension {
|
||||
case "framework"?,
|
||||
"tbd"?,
|
||||
"dylib"?:
|
||||
break
|
||||
default:
|
||||
errors.append(.invalidSDKDependency(target: target.name, dependency: dependency.reference))
|
||||
}
|
||||
}
|
||||
case .package:
|
||||
if packages[dependency.reference] == nil {
|
||||
errors.append(.invalidSwiftPackage(name: dependency.reference, target: target.name))
|
||||
}
|
||||
default: break
|
||||
}
|
||||
|
||||
return errors
|
||||
}
|
||||
|
||||
/// Returns a descriptive error if the given target reference was invalid otherwise `nil`.
|
||||
private func validationError(for targetReference: TargetReference, in scheme: Scheme, action: String) -> SpecValidationError.ValidationError? {
|
||||
switch targetReference.location {
|
||||
|
||||
@@ -35,6 +35,7 @@ public struct SpecValidationError: Error, CustomStringConvertible {
|
||||
case invalidProjectReferencePath(ProjectReference)
|
||||
case invalidTestPlan(TestPlan)
|
||||
case multipleDefaultTestPlans
|
||||
case duplicateDependencies(target: String, dependencyReference: String)
|
||||
|
||||
public var description: String {
|
||||
switch self {
|
||||
@@ -88,6 +89,8 @@ public struct SpecValidationError: Error, CustomStringConvertible {
|
||||
return "Test plan path \"\(testPlan.path)\" doesn't exist"
|
||||
case .multipleDefaultTestPlans:
|
||||
return "Your test plans contain more than one default test plan"
|
||||
case let .duplicateDependencies(target, dependencyReference):
|
||||
return "Target \(target.quoted) has the dependency \(dependencyReference.quoted) multiple times"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -142,6 +142,40 @@ class ProjectSpecTests: XCTestCase {
|
||||
try expectValidationError(project, .invalidBuildSettingConfig("invalidSettingGroupConfig"))
|
||||
}
|
||||
|
||||
$0.it("fails with duplicate dependencies") {
|
||||
var project = baseProject
|
||||
project.targets = [
|
||||
Target(
|
||||
name: "target1",
|
||||
type: .application,
|
||||
platform: .iOS,
|
||||
settings: invalidSettings,
|
||||
dependencies: [
|
||||
Dependency(type: .target, reference: "dependency1"),
|
||||
Dependency(type: .target, reference: "dependency1"),
|
||||
Dependency(type: .framework, reference: "dependency2"),
|
||||
Dependency(type: .framework, reference: "dependency2"),
|
||||
]
|
||||
),
|
||||
Target(
|
||||
name: "target2",
|
||||
type: .framework,
|
||||
platform: .iOS,
|
||||
settings: invalidSettings,
|
||||
dependencies: [
|
||||
Dependency(type: .framework, reference: "dependency3"),
|
||||
Dependency(type: .target, reference: "dependency3"),
|
||||
Dependency(type: .target, reference: "dependency4"),
|
||||
Dependency(type: .target, reference: "dependency4"),
|
||||
]
|
||||
)
|
||||
]
|
||||
|
||||
try expectValidationError(project, .duplicateDependencies(target: "target1", dependencyReference: "dependency1"))
|
||||
try expectValidationError(project, .duplicateDependencies(target: "target1", dependencyReference: "dependency2"))
|
||||
try expectValidationError(project, .duplicateDependencies(target: "target2", dependencyReference: "dependency4"))
|
||||
}
|
||||
|
||||
$0.it("allows non-existent configurations") {
|
||||
var project = baseProject
|
||||
project.options = SpecOptions(disabledValidations: [.missingConfigs])
|
||||
|
||||
Reference in New Issue
Block a user