cocoapods-spm 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 88926a40ad19c2ccc3b9ceccefe301a6f939ec7460c719b914a13eba5c1d3739
4
+ data.tar.gz: 190363f1092af74595af470f7bdc617e8ffaca00314894b136298a9c31e9d979
5
+ SHA512:
6
+ metadata.gz: '06209d7e15bdbccf151db058e53dc27dfb9179d75ed76c6341518f5f56f02d62629ae2f0a369cdace8e719725a040aee2a24d626b709f280c15b18277f2ca636'
7
+ data.tar.gz: c40d20e4560c12625ac7a4a52c6bbcee54407582039ac59f829f75978c29581379f24514e489fa6f393ef8872a131ce7608969b193927cabca7dfc2f06a0db35
@@ -0,0 +1,15 @@
1
+ module Pod
2
+ module SPM
3
+ class Config
4
+ attr_accessor :dsl_config
5
+
6
+ def initialize
7
+ @dsl_config = {}
8
+ end
9
+
10
+ def self.instance
11
+ @instance ||= Config.new
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,11 @@
1
+ require "cocoapods-spm/config"
2
+
3
+ module Pod
4
+ class Podfile
5
+ module DSL
6
+ def config_xcconfig_hooks(options)
7
+ Pod::SPM::Config.instance.dsl_config = options
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,78 @@
1
+ require "cocoapods-spm/config"
2
+ require "cocoapods-spm/dsl"
3
+ require "cocoapods-spm/specification"
4
+
5
+ module Pod
6
+ module SPM
7
+ class Hook
8
+ def initialize(context)
9
+ @context = context
10
+ end
11
+
12
+ def sandbox
13
+ @context.sandbox
14
+ end
15
+
16
+ def pods_project
17
+ @context.pods_project
18
+ end
19
+
20
+ def config
21
+ Config.instance
22
+ end
23
+
24
+ def all_specs
25
+ @all_specs ||= @context.umbrella_targets.flat_map(&:specs).uniq
26
+ end
27
+
28
+ def run
29
+ all_specs.each do |spec|
30
+ if spec.spm_dependencies
31
+ target = pods_project.targets.find { |t| t.name == spec.name }
32
+ add_spm_dependencies(target, spec.spm_dependencies)
33
+ end
34
+ end
35
+ update_import_paths
36
+ pods_project.save
37
+ end
38
+
39
+ private
40
+
41
+ def add_spm_dependencies(target, dependencies)
42
+ dependencies.each do |data|
43
+ pkg = pkg_from_data(data)
44
+ data[:products].each do |product|
45
+ ref = pods_project.new(Xcodeproj::Project::Object::XCSwiftPackageProductDependency)
46
+ ref.package = pkg
47
+ ref.product_name = product
48
+ target.package_product_dependencies << ref
49
+ end
50
+ pods_project.root_object.package_references << pkg
51
+ end
52
+ end
53
+
54
+ def update_import_paths
55
+ # Workaround: Currently, update the swift import paths of the base/Pods project
56
+ # to make it effective across all pod targets
57
+ pods_project.build_configurations.each do |config|
58
+ to_add = '${SYMROOT}/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}'
59
+ import_paths = config.build_settings['SWIFT_INCLUDE_PATHS'] || ['$(inherited)']
60
+ import_paths << to_add unless import_paths.include?(to_add)
61
+ config.build_settings['SWIFT_INCLUDE_PATHS'] = import_paths
62
+ end
63
+ end
64
+
65
+ def pkg_from_data(data)
66
+ if data[:requirement]
67
+ pkg = pods_project.new(Xcodeproj::Project::Object::XCRemoteSwiftPackageReference)
68
+ pkg.repositoryURL = data[:url]
69
+ pkg.requirement = data[:requirement]
70
+ else
71
+ pkg = pods_project.new(Xcodeproj::Project::Object::XCLocalSwiftPackageReference)
72
+ pkg.relative_path = data[:relative_path]
73
+ end
74
+ pkg
75
+ end
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,10 @@
1
+ module Pod
2
+ class Specification
3
+ attr_reader :spm_dependencies
4
+
5
+ def spm_dependency(options)
6
+ @spm_dependencies ||= []
7
+ @spm_dependencies << options
8
+ end
9
+ end
10
+ end
@@ -0,0 +1 @@
1
+ require "cocoapods-spm/gem_version"
@@ -0,0 +1,5 @@
1
+ require "cocoapods-spm/main"
2
+
3
+ Pod::HooksManager.register("cocoapods-spm", :post_install) do |context|
4
+ Pod::SPM::Hook.new(context).run
5
+ end
metadata ADDED
@@ -0,0 +1,91 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: cocoapods-spm
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Thuyen Trinh
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2023-11-28 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.3'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rspec
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rubocop
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ description: CocoaPods plugin to add SPM dependencies to CocoaPods targets
56
+ email:
57
+ - trinhngocthuyen@gmail.com
58
+ executables: []
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - lib/cocoapods-spm.rb
63
+ - lib/cocoapods-spm/config.rb
64
+ - lib/cocoapods-spm/dsl.rb
65
+ - lib/cocoapods-spm/main.rb
66
+ - lib/cocoapods-spm/specification.rb
67
+ - lib/cocoapods_plugin.rb
68
+ homepage: https://github.com/trinhngocthuyen/cocoapods-spm
69
+ licenses:
70
+ - MIT
71
+ metadata: {}
72
+ post_install_message:
73
+ rdoc_options: []
74
+ require_paths:
75
+ - lib
76
+ required_ruby_version: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ version: '0'
81
+ required_rubygems_version: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - ">="
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ requirements: []
87
+ rubygems_version: 3.2.3
88
+ signing_key:
89
+ specification_version: 4
90
+ summary: CocoaPods plugin to add SPM dependencies to CocoaPods targets
91
+ test_files: []