From 8c5dd19324c798a7111fbcda128715384c233ecc Mon Sep 17 00:00:00 2001 From: Ethan Wong Date: Tue, 15 Mar 2022 12:29:13 +0800 Subject: [PATCH] Add support for Swift Package Manager. (#62) --- .gitignore | 2 ++ Framework/Headers/MASPreferences.h | 1 + Framework/Headers/MASPreferences.modulemap | 1 + .../Headers/MASPreferencesViewController.h | 1 + .../Headers/MASPreferencesWindowController.h | 1 + Framework/MASPreferencesWindowController.m | 4 +++ MASPreferences.podspec | 4 +-- Package.swift | 26 +++++++++++++++++++ README.md | 5 ++++ 9 files changed, 43 insertions(+), 2 deletions(-) create mode 120000 Framework/Headers/MASPreferences.h create mode 120000 Framework/Headers/MASPreferences.modulemap create mode 120000 Framework/Headers/MASPreferencesViewController.h create mode 120000 Framework/Headers/MASPreferencesWindowController.h create mode 100644 Package.swift diff --git a/.gitignore b/.gitignore index ba178bc..1dcdfe2 100644 --- a/.gitignore +++ b/.gitignore @@ -17,3 +17,5 @@ profile .DS_Store # Carthage Carthage/Build +# Swift Package Manager +.swiftpm diff --git a/Framework/Headers/MASPreferences.h b/Framework/Headers/MASPreferences.h new file mode 120000 index 0000000..cfbedf0 --- /dev/null +++ b/Framework/Headers/MASPreferences.h @@ -0,0 +1 @@ +../MASPreferences.h \ No newline at end of file diff --git a/Framework/Headers/MASPreferences.modulemap b/Framework/Headers/MASPreferences.modulemap new file mode 120000 index 0000000..cb17d00 --- /dev/null +++ b/Framework/Headers/MASPreferences.modulemap @@ -0,0 +1 @@ +../MASPreferences.modulemap \ No newline at end of file diff --git a/Framework/Headers/MASPreferencesViewController.h b/Framework/Headers/MASPreferencesViewController.h new file mode 120000 index 0000000..a11ae73 --- /dev/null +++ b/Framework/Headers/MASPreferencesViewController.h @@ -0,0 +1 @@ +../MASPreferencesViewController.h \ No newline at end of file diff --git a/Framework/Headers/MASPreferencesWindowController.h b/Framework/Headers/MASPreferencesWindowController.h new file mode 120000 index 0000000..3808291 --- /dev/null +++ b/Framework/Headers/MASPreferencesWindowController.h @@ -0,0 +1 @@ +../MASPreferencesWindowController.h \ No newline at end of file diff --git a/Framework/MASPreferencesWindowController.m b/Framework/MASPreferencesWindowController.m index 6c40815..bedb861 100644 --- a/Framework/MASPreferencesWindowController.m +++ b/Framework/MASPreferencesWindowController.m @@ -355,8 +355,12 @@ - (IBAction)goPreviousTab:(id __unused)sender #pragma mark Helper Functions + (NSBundle *)resourceBundle { +#ifdef SWIFT_PACKAGE + return SWIFTPM_MODULE_BUNDLE; +#else NSBundle *moduleBundle = [NSBundle bundleForClass:MASPreferencesWindowController.class]; return [NSBundle bundleWithURL:[NSURL fileURLWithPath:[moduleBundle pathForResource:@"MASPreferences" ofType:@"bundle"]]]; +#endif } @end diff --git a/MASPreferences.podspec b/MASPreferences.podspec index b1968a1..af57355 100644 --- a/MASPreferences.podspec +++ b/MASPreferences.podspec @@ -1,12 +1,12 @@ Pod::Spec.new do |s| s.platform = :osx, '10.10' s.name = "MASPreferences" - s.version = "1.3" + s.version = "1.4" s.summary = "Modern implementation of the Preferences window for OS X apps, used in TextMate, GitBox and Mou." s.homepage = "https://github.com/shpakovski/MASPreferences" s.license = { :type => 'BSD', :file => 'LICENSE.md' } s.author = { "Vadim Shpakovski" => "vadim@shpakovski.com" } - s.source = { :git => 'https://github.com/shpakovski/MASPreferences.git', :tag => '1.3' } + s.source = { :git => 'https://github.com/shpakovski/MASPreferences.git', :tag => '1.4' } s.source_files = 'Framework/*.{h,m}' s.resource_bundles = { 'MASPreferences' => ['Framework/en.lproj/*.xib'] diff --git a/Package.swift b/Package.swift new file mode 100644 index 0000000..80f7557 --- /dev/null +++ b/Package.swift @@ -0,0 +1,26 @@ +// swift-tools-version:5.3 +import PackageDescription + +let package = Package( + name: "MASPreferences", + defaultLocalization: "en", + platforms: [ + .macOS(.v10_10), + ], + products: [ + .library(name: "MASPreferences", + targets: ["MASPreferences"]) + ], + targets: [ + .target( + name: "MASPreferences", + path: "./Framework", + exclude: [ + "Info.plist", + "MASPreferences.modulemap", + ], + resources: [], + publicHeadersPath: "./Headers" + ) + ] +) diff --git a/README.md b/README.md index 76a9d32..3f2fe84 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,7 @@ This component is intended as a replacement for SS_PrefsController by Matt Legen You can find a Demo project at [MASPreferencesDemo](https://github.com/shpakovski/MASPreferencesDemo). # Install + #### [Carthage](https://github.com/Carthage/Carthage) - Add `github "shpakovski/MASPreferences"` to your Cartfile. @@ -14,3 +15,7 @@ You can find a Demo project at [MASPreferencesDemo](https://github.com/shpakovsk #### [CocoaPods](https://github.com/cocoapods/cocoapods) - Add `pod 'MASPreferences'` to your Podfile. + +#### [Swift Package Manager](https://www.swift.org/package-manager/) + +- Add `.package(url: "https://github.com/shpakovski/MASPreferences.git", .upToNextMajor(from: "1.4"))` to your Package.swift.