Skip to content

Commit ae4f670

Browse files
committed
Merge branch 'deploy/0.6.4' into productive
2 parents f480812 + b886da7 commit ae4f670

File tree

9 files changed

+68
-136
lines changed

9 files changed

+68
-136
lines changed

CHANGELOG.md

+5-107
Original file line numberDiff line numberDiff line change
@@ -17,32 +17,19 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) a
1717
### Security
1818
- None.
1919

20+
## [0.6.4] - 2019-09-01
21+
### Fixed
22+
- Adjusted the bundle version fallback to support both macOS and iOS frameworks
23+
Issue: [#76](https://github.com/JamitLabs/Accio/issues/76) | PR: [#77](https://github.com/JamitLabs/Accio/pull/77) | Author: [Torsten Curdt](https://github.com/tcurdti)
24+
2025
## [0.6.3] - 2019-07-12
21-
### Added
22-
- None.
23-
### Changed
24-
- None.
25-
### Deprecated
26-
- None.
27-
### Removed
28-
- None.
2926
### Fixed
3027
- Fix mixed caching of frameworks with different Swift versions.
3128
Issue: [#61](https://github.com/JamitLabs/Accio/issues/61) | PR: [#62](https://github.com/JamitLabs/Accio/pull/62) | Author: [Frederick Pietschmann](https://github.com/fredpi)
3229
- Fix missing CFBundleVersion in Info.plist of build Frameworks by adding it implicity with the default value "1"
3330
Issue: [#69](https://github.com/JamitLabs/Accio/issues/69) | PR: [#70](https://github.com/JamitLabs/Accio/pull/70) | Author: [Murat Yilmaz](https://github.com/mrylmz)
34-
### Security
35-
- None.
3631

3732
## [0.6.2] - 2019-06-20
38-
### Added
39-
- None.
40-
### Changed
41-
- None.
42-
### Deprecated
43-
- None.
44-
### Removed
45-
- None.
4633
### Fixed
4734
- Redownload dependencies as a fallback when previously checked out repositories are broken.
4835
Issue: [#27](https://github.com/JamitLabs/Accio/issues/27) | PR: [#40](https://github.com/JamitLabs/Accio/pull/40) | Author: [Frederick Pietschmann](https://github.com/fredpi)
@@ -52,26 +39,16 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) a
5239
PR: [#59](https://github.com/JamitLabs/Accio/pull/59) | Author: [Frederick Pietschmann](https://github.com/fredpi)
5340
- Remove duplicated processing of frameworks referenced by multiple other frameworks.
5441
Issue: [#51](https://github.com/JamitLabs/Accio/issues/51) | PR: [#53](https://github.com/JamitLabs/Accio/pull/53) | Author: [Frederick Pietschmann](https://github.com/fredpi)
55-
### Security
56-
- None.
5742

5843
## [0.6.1] - 2019-04-26
5944
### Added
6045
- Adds several popular GitHub projects for official integration support testing to the Demo project.
6146
PR: [#10](https://github.com/JamitLabs/Accio/pull/10) | Author: [Cihat Gündüz](https://github.com/Dschee)
62-
### Changed
63-
- None.
64-
### Deprecated
65-
- None.
66-
### Removed
67-
- None.
6847
### Fixed
6948
- Fixes an issue where two or more targets for the same platform would cause project linking issues.
7049
Issue: [#29](https://github.com/JamitLabs/Accio/issues/29) | PR: [#34](https://github.com/JamitLabs/Accio/pull/34) | Author: [Murat Yilmaz](https://github.com/mrylmz)
7150
- Fixes an issue where temporary changes to SwiftPM-only frameworks would be reset before building.
7251
Issue: [#35](https://github.com/JamitLabs/Accio/issues/35) | PR: [#36](https://github.com/JamitLabs/Accio/pull/36) | Author: [Cihat Gündüz](https://github.com/Dschee)
73-
### Security
74-
- None.
7552

7653
## [0.6.0] - 2019-04-19
7754
### Added
@@ -81,116 +58,51 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) a
8158
### Changed
8259
- Improves reading of supported deployment targets.
8360
- Improves init command by treating empty manifest files like non-existing ones. Fixes [#24](https://github.com/JamitLabs/Accio/issues/24).
84-
### Deprecated
85-
- None.
86-
### Removed
87-
- None.
8861
### Fixed
8962
- Fixes an issue where Accio commands where failing when Git resets failed.
9063
- Fixes an issue where Accio didn't reset changed files untracked by Git.
91-
### Security
92-
- None.
9364

9465
## [0.5.6] - 2019-04-09
9566
### Added
9667
- Adds support for automatically finding schemes named like 'MBProgressHUD Framework tvOS'.
9768
### Changed
9869
- Some improvements that make the output information on the console more precise.
99-
### Deprecated
100-
- None.
101-
### Removed
102-
- None.
10370
### Fixed
10471
- Fixes the broken cleanup command of temporary frameworks after completing install.
10572
- Fixes an issue with multiple targets linking a single framework with schemes named after their platforms.
10673
- Fixes an issue with different platform specifiers used in scheme names.
107-
### Security
108-
- None.
10974

11075
## [0.5.5] - 2019-04-05
111-
### Added
112-
- None.
11376
### Changed
11477
- The framework copy build phase now optimizes "dirty" build timing by specifying the output files. [#13](https://github.com/JamitLabs/Accio/issues/13)
115-
### Deprecated
116-
- None.
117-
### Removed
118-
- None.
11978
### Fixed
12079
- Fixes an issue where broken previous install attempt leftovers cause errors on subsequent installs. [#12](https://github.com/JamitLabs/Accio/issues/12)
121-
### Security
122-
- None.
12380

12481
## [0.5.4] - 2019-04-03
125-
### Added
126-
- None.
127-
### Changed
128-
- None.
129-
### Deprecated
130-
- None.
131-
### Removed
132-
- None.
13382
### Fixed
13483
- Fix symbolic linking of .framework and .dSYM files.
135-
### Security
136-
- None.
13784

13885
## [0.5.3] - 2019-04-01
139-
### Added
140-
- None.
141-
### Changed
142-
- None.
143-
### Deprecated
144-
- None.
145-
### Removed
146-
- None.
14786
### Fixed
14887
- Fixes an issue where recursive copies of non symbolic links could cause build errors.
149-
### Security
150-
- None.
15188

15289
## [0.5.2] - 2019-04-01
153-
### Added
154-
- None.
155-
### Changed
156-
- None.
157-
### Deprecated
158-
- None.
159-
### Removed
160-
- None.
16190
### Fixed
16291
- Keep symlinks in cached ZIP files for macOS support.
163-
### Security
164-
- None.
16592

16693
## [0.5.1] - 2019-03-31
167-
### Added
168-
- None.
16994
### Changed
17095
- Check if shared cache path is available, else add new build products to local cache.
171-
### Deprecated
172-
- None.
173-
### Removed
174-
- None.
17596
### Fixed
17697
- Fixed an issue with copying unzipped cache build products back to project.
177-
### Security
178-
- None.
179-
18098

18199
## [0.5.0] - 2019-03-30
182100
### Added
183101
- Demo project for integration testing with popular Swift frameworks.
184102
### Changed
185103
- Compress cached build products in a .zip file. Old style cached build products can be deleted.
186-
### Deprecated
187-
- None.
188-
### Removed
189-
- None.
190104
### Fixed
191105
- Multiple issues with paths, names, symbolic links & more.
192-
### Security
193-
- None.
194106

195107
## [0.4.0] - 2019-03-29
196108
### Added
@@ -204,30 +116,16 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) a
204116
- Unlink frameworks that are no longer included.
205117
- Don't save build products to local cache if shared cache is available.
206118
- Cleanup Accio run script phase when target gets removed.
207-
### Deprecated
208-
- None.
209-
### Removed
210-
- None.
211119
### Fixed
212120
- Fix typo in local cache logging.
213121
- Fix missing use of `Constants.xcodeDependenciesGroup` & `Constants.dependenciesPath`.
214-
### Security
215-
- None.
216122

217123
## [0.3.0] - 2019-03-26
218-
### Added
219-
- None.
220124
### Changed
221125
- Add support for Swift 5 and Xcode 10.2.
222126
- Separate cached frameworks by Swift tools version.
223-
### Deprecated
224-
- None.
225127
### Removed
226128
- Drop support for Swift 4.2 and Xcode <=10.1.
227-
### Fixed
228-
- None.
229-
### Security
230-
- None.
231129

232130
## [0.2.2]
233131
### Fixed

Formula/accio.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
class Accio < Formula
22
desc "Dependency manager driven by SwiftPM for iOS/macOS/tvOS/watchOS"
33
homepage "https://github.com/JamitLabs/Accio"
4-
url "https://github.com/JamitLabs/Accio.git", :tag => "0.6.2", :revision => "b9bb6215778fccc6c4428101786b582f9217cd75"
4+
url "https://github.com/JamitLabs/Accio.git", :tag => "0.6.3", :revision => "f480812e044486cb3ed890e67e3fd32700e7deea"
55
head "https://github.com/JamitLabs/Accio.git"
66

77
depends_on :xcode => ["10.2", :build]

Package.resolved

+3-3
Original file line numberDiff line numberDiff line change
@@ -86,9 +86,9 @@
8686
"package": "XcodeProj",
8787
"repositoryURL": "https://github.com/tuist/xcodeproj.git",
8888
"state": {
89-
"branch": "master",
90-
"revision": "fca5c6b5cf6a28bae466d0a23080e94f5d8814e6",
91-
"version": null
89+
"branch": null,
90+
"revision": "b951777f42e9acbfb8f19da623b43aaa604422f9",
91+
"version": "7.0.0"
9292
}
9393
}
9494
]

Package.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ let package = Package(
1515
.package(url: "https://github.com/onevcat/Rainbow.git", .upToNextMajor(from: "3.1.4")),
1616
.package(url: "https://github.com/jakeheis/SwiftCLI.git", .upToNextMajor(from: "5.2.2")),
1717
.package(url: "https://github.com/kareman/SwiftShell.git", .upToNextMajor(from: "4.1.2")),
18-
.package(url: "https://github.com/tuist/xcodeproj.git", .branch("master")),
18+
.package(url: "https://github.com/tuist/xcodeproj.git", .upToNextMajor(from: "7.0.0")),
1919
],
2020
targets: [
2121
.target(

README.md

+3-2
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@
1313
alt="Codebeat Badge">
1414
</a>
1515
<a href="https://github.com/JamitLabs/Accio/releases">
16-
<img src="https://img.shields.io/badge/Version-0.6.3-blue.svg"
17-
alt="Version: 0.6.3">
16+
<img src="https://img.shields.io/badge/Version-0.6.4-blue.svg"
17+
alt="Version: 0.6.4">
1818
</a>
1919
<img src="https://img.shields.io/badge/Swift-5.0-FFAC45.svg"
2020
alt="Swift: 5.0">
@@ -88,6 +88,7 @@ Alternatively, read the following expandable summary:
8888
<summary>
8989
Summary of the Motivation & Advantages
9090
</summary>
91+
9192
For developers on Apple platforms there are already well established dependency managers, namely [CocoaPods](https://github.com/CocoaPods/CocoaPods) & [Carthage](https://github.com/Carthage/Carthage). If you like how CocoaPods deals with things, you probably won't ever need to use Accio. It doesn't do anything that CocoaPods doesn't.
9293

9394
But if you are like the many developers who prefer to use Carthage because it's written in Swift (not Ruby) and it doesn't create an Xcode workspace but is rather unintrusive, you might find that Accio solves some of the problems you might have come across with Carthage.

Sources/Accio/main.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import Foundation
33
import SwiftCLI
44

55
// MARK: - CLI
6-
let cli = CLI(name: "accio", version: "0.6.3", description: "A dependency manager driven by SwiftPM that works for iOS/tvOS/watchOS/macOS projects.")
6+
let cli = CLI(name: "accio", version: "0.6.4", description: "A dependency manager driven by SwiftPM that works for iOS/tvOS/watchOS/macOS projects.")
77

88
cli.commands = [InitCommand(), InstallCommand(), UpdateCommand(), CleanCommand(), ClearCacheCommand(), SetSharedCacheCommand()]
99
cli.globalOptions.append(contentsOf: GlobalOptions.all)

Sources/AccioKit/Models/Platform.swift

+17
Original file line numberDiff line numberDiff line change
@@ -66,4 +66,21 @@ enum Platform: String, CaseIterable {
6666
return [rawValue, "Apple Watch", "AppleWatch"]
6767
}
6868
}
69+
70+
var pathToPlist: String {
71+
switch self {
72+
case .iOS:
73+
return ""
74+
75+
case .macOS:
76+
return "Resources"
77+
78+
case .tvOS:
79+
return ""
80+
81+
case .watchOS:
82+
return ""
83+
}
84+
}
85+
6986
}

Sources/AccioKit/Services/XcodeProjectIntegrationService.swift

+21-13
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ final class XcodeProjectIntegrationService {
128128

129129
let frameworkProduct = FrameworkProduct(frameworkDirPath: frameworkDirPath, symbolsFilePath: symbolsFilePath, commitHash: frameworkProduct.commitHash)
130130
try frameworkProduct.cleanupRecursiveFrameworkIfNeeded()
131-
try verifyBundleVersion(of: frameworkProduct)
131+
try ensureBundleVersionExistence(of: frameworkProduct)
132132

133133
copiedFrameworkProducts.append(frameworkProduct)
134134
}
@@ -243,18 +243,26 @@ final class XcodeProjectIntegrationService {
243243
try projectFile.write(path: Path(xcodeProjectPath), override: true)
244244
}
245245

246-
private func verifyBundleVersion(of product: FrameworkProduct) throws {
247-
let plistURL = product.frameworkDirUrl.appendingPathComponent("Info.plist")
248-
let data = try Data(contentsOf: plistURL)
249-
var format: PropertyListSerialization.PropertyListFormat = .binary
250-
var plist = try PropertyListSerialization.propertyList(from: data, options: [.mutableContainersAndLeaves], format: &format) as! [String: Any]
251-
252-
if plist["CFBundleVersion"] == nil {
253-
print("CFBundleVersion of framework \(product.libraryName) was not specified and will be set to 1", level: .warning)
254-
plist["CFBundleVersion"] = "1"
255-
256-
let data = try PropertyListSerialization.data(fromPropertyList: plist, format: format, options: 0)
257-
try data.write(to: plistURL, options: .atomic)
246+
private func ensureBundleVersionExistence(of product: FrameworkProduct) throws {
247+
let plistURLs = [
248+
product.frameworkDirUrl.appendingPathComponent("Resources").appendingPathComponent("Info.plist"),
249+
product.frameworkDirUrl.appendingPathComponent("Info.plist"),
250+
]
251+
for plistURL in plistURLs {
252+
if FileManager.default.fileExists(atPath: plistURL.path) {
253+
let data = try Data(contentsOf: plistURL)
254+
var format: PropertyListSerialization.PropertyListFormat = .binary
255+
var plist = try PropertyListSerialization.propertyList(from: data, options: [.mutableContainersAndLeaves], format: &format) as! [String: Any]
256+
257+
// add CFBundleVersion if missing
258+
if plist["CFBundleVersion"] == nil {
259+
print("CFBundleVersion of framework \(product.libraryName) was not specified and will be set to 1", level: .warning)
260+
plist["CFBundleVersion"] = "1"
261+
262+
let data = try PropertyListSerialization.data(fromPropertyList: plist, format: format, options: 0)
263+
try data.write(to: plistURL, options: .atomic)
264+
}
265+
}
258266
}
259267
}
260268
}

0 commit comments

Comments
 (0)