cocoapods-spm 0.1.6 → 0.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/cocoapods-spm/def/installer.rb +7 -0
- data/lib/cocoapods-spm/hooks/base.rb +8 -0
- data/lib/cocoapods-spm/hooks/post_integrate/1.add_spm_pkgs.rb +14 -30
- data/lib/cocoapods-spm/macro/config.rb +27 -0
- data/lib/cocoapods-spm/macro/fetcher.rb +16 -1
- data/lib/cocoapods-spm/macro/metadata.rb +7 -1
- data/lib/cocoapods-spm/macro/prebuilder.rb +3 -28
- data/lib/cocoapods-spm/main.rb +1 -0
- data/lib/cocoapods-spm/swift/package/target.rb +16 -11
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bbcb911c20a1ba82d17dce1be6e78b74e4a1d8e2b32d60e38363ea67cbe4f8a8
|
4
|
+
data.tar.gz: 9b15453f318dec4cd6d54119e8245023a200befa673e490a35f59b6768015c40
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 209616fc087b99e98a39356f06a458190ba59d5e9272355dcaa3caa0fd312557a159a0c7e2bd159ea1cd420aff8f1c206c124a328b6cd7b7be40c656343fff14
|
7
|
+
data.tar.gz: d7dd3483408ec69e18e4bebd8a8a7055ddd570f9ddd878e6e7b82d99c84914476a89e1a2cb05f29880904aa6823bbf074e83d8ccc52bbcd0eca3f5a0f6792978
|
@@ -30,6 +30,14 @@ module Pod
|
|
30
30
|
@analysis_result.targets
|
31
31
|
end
|
32
32
|
|
33
|
+
def pod_target_subprojects
|
34
|
+
@context.pod_target_subprojects
|
35
|
+
end
|
36
|
+
|
37
|
+
def projects_to_integrate
|
38
|
+
[pods_project] + pod_target_subprojects
|
39
|
+
end
|
40
|
+
|
33
41
|
def user_build_configurations
|
34
42
|
@user_build_configurations ||= (pod_targets + aggregate_targets)[0].user_build_configurations
|
35
43
|
end
|
@@ -8,37 +8,21 @@ module Pod
|
|
8
8
|
def run
|
9
9
|
return if @spm_resolver.result.spm_pkgs.empty?
|
10
10
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
pkg_ref = pkg.create_pkg_ref(pods_project)
|
25
|
-
pods_project.root_object.package_references << pkg_ref
|
26
|
-
[pkg.name, pkg_ref]
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
def spm_pkgs_by_target
|
31
|
-
@spm_pkgs_by_target ||= {}
|
32
|
-
end
|
33
|
-
|
34
|
-
def add_spm_products_to_targets
|
35
|
-
pods_project.targets.each do |target|
|
36
|
-
@spm_resolver.result.spm_dependencies_for(target).each do |dep|
|
37
|
-
pkg_ref = spm_pkg_refs[dep.pkg.name]
|
38
|
-
target_dep_ref = pkg_ref.create_target_dependency_ref(dep.product)
|
39
|
-
target.dependencies << target_dep_ref
|
40
|
-
target.package_product_dependencies << target_dep_ref.product_ref if dep.pkg.use_default_xcode_linking?
|
11
|
+
projects_to_integrate.compact.each do |project|
|
12
|
+
spm_pkg_refs = {}
|
13
|
+
project.targets.each do |target|
|
14
|
+
@spm_resolver.result.spm_dependencies_for(target).each do |dep|
|
15
|
+
pkg_ref = dep.pkg.create_pkg_ref(project)
|
16
|
+
target_dep_ref = pkg_ref.create_target_dependency_ref(dep.product)
|
17
|
+
target.dependencies << target_dep_ref
|
18
|
+
target.package_product_dependencies << target_dep_ref.product_ref if dep.pkg.use_default_xcode_linking?
|
19
|
+
spm_pkg_refs.store(dep.pkg.name, pkg_ref)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
spm_pkg_refs.each_value do |pkg_ref|
|
23
|
+
project.root_object.package_references << pkg_ref
|
41
24
|
end
|
25
|
+
project.save
|
42
26
|
end
|
43
27
|
end
|
44
28
|
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Pod
|
2
|
+
module SPM
|
3
|
+
module MacroConfigMixin
|
4
|
+
include Config::Mixin
|
5
|
+
|
6
|
+
def macro_downloaded_dir
|
7
|
+
spm_config.macro_downloaded_root_dir / name
|
8
|
+
end
|
9
|
+
|
10
|
+
def macro_dir
|
11
|
+
@macro_dir ||= spm_config.macro_root_dir / name
|
12
|
+
end
|
13
|
+
|
14
|
+
def macro_prebuilt_dir
|
15
|
+
spm_config.macro_prebuilt_root_dir / name
|
16
|
+
end
|
17
|
+
|
18
|
+
def metadata_path
|
19
|
+
macro_dir / "metadata.json"
|
20
|
+
end
|
21
|
+
|
22
|
+
def metadata
|
23
|
+
@metadata ||= MacroMetadata.for_pod(name)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -1,7 +1,10 @@
|
|
1
|
+
require "cocoapods-spm/macro/metadata"
|
2
|
+
require_relative "config"
|
3
|
+
|
1
4
|
module Pod
|
2
5
|
module SPM
|
3
6
|
class MacroFetcher
|
4
|
-
include
|
7
|
+
include MacroConfigMixin
|
5
8
|
|
6
9
|
attr_reader :name
|
7
10
|
|
@@ -13,6 +16,7 @@ module Pod
|
|
13
16
|
end
|
14
17
|
|
15
18
|
def run
|
19
|
+
UI.puts "Fetching macro #{name}...".magenta
|
16
20
|
download_macro_source
|
17
21
|
macro_dir = spm_config.macro_root_dir / name
|
18
22
|
macro_downloaded_dir = spm_config.macro_downloaded_root_dir / name
|
@@ -20,6 +24,17 @@ module Pod
|
|
20
24
|
macro_downloaded_dir / "Sources" / name,
|
21
25
|
macro_dir / "Sources" / name
|
22
26
|
)
|
27
|
+
generate_metadata
|
28
|
+
end
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
def generate_metadata
|
33
|
+
raise "Package.swift not exist in #{macro_downloaded_dir}" \
|
34
|
+
unless (macro_downloaded_dir / "Package.swift").exist?
|
35
|
+
|
36
|
+
raw = Dir.chdir(macro_downloaded_dir) { `swift package dump-package` }
|
37
|
+
metadata_path.write(raw)
|
23
38
|
end
|
24
39
|
|
25
40
|
def download_macro_source
|
@@ -4,7 +4,13 @@ module Pod
|
|
4
4
|
module SPM
|
5
5
|
class MacroMetadata < Swift::PackageDescription
|
6
6
|
def self.for_pod(name)
|
7
|
-
|
7
|
+
path = Config.instance.macro_root_dir / name / "metadata.json"
|
8
|
+
unless path.exist?
|
9
|
+
UI.message "Will fetch macro #{name} because its metadata does not exist at #{path}"
|
10
|
+
require "cocoapods-spm/macro/fetcher"
|
11
|
+
MacroFetcher.new(name: name, can_cache: true).run
|
12
|
+
end
|
13
|
+
from_file(path)
|
8
14
|
end
|
9
15
|
end
|
10
16
|
end
|
@@ -1,9 +1,10 @@
|
|
1
1
|
require "cocoapods-spm/macro/metadata"
|
2
|
+
require_relative "config"
|
2
3
|
|
3
4
|
module Pod
|
4
5
|
module SPM
|
5
6
|
class MacroPrebuilder
|
6
|
-
include
|
7
|
+
include MacroConfigMixin
|
7
8
|
include Executables
|
8
9
|
|
9
10
|
attr_reader :name
|
@@ -13,40 +14,14 @@ module Pod
|
|
13
14
|
end
|
14
15
|
|
15
16
|
def run
|
16
|
-
generate_metadata
|
17
17
|
prebuild_macro_impl
|
18
18
|
end
|
19
19
|
|
20
|
-
def macro_downloaded_dir
|
21
|
-
spm_config.macro_downloaded_root_dir / name
|
22
|
-
end
|
23
|
-
|
24
|
-
def macro_dir
|
25
|
-
@macro_dir ||= spm_config.macro_root_dir / name
|
26
|
-
end
|
27
|
-
|
28
|
-
def macro_prebuilt_dir
|
29
|
-
spm_config.macro_prebuilt_root_dir / name
|
30
|
-
end
|
31
|
-
|
32
|
-
def metadata_path
|
33
|
-
macro_dir / "metadata.json"
|
34
|
-
end
|
35
|
-
|
36
|
-
def generate_metadata
|
37
|
-
raise "Package.swift not exist in #{macro_downloaded_dir}" \
|
38
|
-
unless (macro_downloaded_dir / "Package.swift").exist?
|
39
|
-
|
40
|
-
raw = Dir.chdir(macro_downloaded_dir) { `swift package dump-package` }
|
41
|
-
metadata_path.write(raw)
|
42
|
-
@metadata = MacroMetadata.from_s(raw)
|
43
|
-
end
|
44
|
-
|
45
20
|
def prebuild_macro_impl
|
46
21
|
return if spm_config.dont_prebuild_macros?
|
47
22
|
|
48
23
|
config = spm_config.macro_config
|
49
|
-
impl_module_name =
|
24
|
+
impl_module_name = metadata.macro_impl_name
|
50
25
|
prebuilt_binary = macro_prebuilt_dir / "#{impl_module_name}-#{config}"
|
51
26
|
return if spm_config.dont_prebuild_macros_if_exist? && prebuilt_binary.exist?
|
52
27
|
|
data/lib/cocoapods-spm/main.rb
CHANGED
@@ -3,6 +3,7 @@ require "cocoapods-spm/helpers/io"
|
|
3
3
|
require "cocoapods-spm/helpers/patch"
|
4
4
|
require "cocoapods-spm/config"
|
5
5
|
require "cocoapods-spm/executables"
|
6
|
+
require "cocoapods-spm/def/installer"
|
6
7
|
require "cocoapods-spm/def/target_definition"
|
7
8
|
require "cocoapods-spm/def/podfile"
|
8
9
|
require "cocoapods-spm/def/spec"
|
@@ -35,11 +35,15 @@ module Pod
|
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
38
|
-
def
|
39
|
-
|
38
|
+
def public_headers_path_expr
|
39
|
+
@public_headers_path_expr ||= public_headers_path.to_s.sub(
|
40
|
+
root.checkouts_dir.to_s,
|
41
|
+
"${SOURCE_PACKAGES_CHECKOUTS_DIR}"
|
42
|
+
)
|
43
|
+
end
|
40
44
|
|
41
|
-
|
42
|
-
"\"#{
|
45
|
+
def header_search_path_arg
|
46
|
+
"\"#{public_headers_path_expr}\"" unless public_headers_path.nil?
|
43
47
|
end
|
44
48
|
|
45
49
|
def public_headers_path
|
@@ -53,17 +57,18 @@ module Pod
|
|
53
57
|
path unless path.glob("**/*.h*").empty?
|
54
58
|
end
|
55
59
|
|
56
|
-
def
|
57
|
-
|
60
|
+
def modulemap_path
|
61
|
+
@modulemap_path ||= public_headers_path&.glob("*.modulemap")&.first
|
62
|
+
end
|
63
|
+
|
64
|
+
def clang_modulemap_path_expr
|
65
|
+
return "#{public_headers_path_expr}/#{modulemap_path.basename}" unless modulemap_path.nil?
|
58
66
|
|
59
|
-
|
60
|
-
true if public_headers_path.glob("module.modulemap").empty?
|
67
|
+
"${GENERATED_MODULEMAP_DIR}/#{name}.modulemap" unless binary?
|
61
68
|
end
|
62
69
|
|
63
70
|
def clang_modulemap_arg
|
64
|
-
|
65
|
-
|
66
|
-
"-fmodule-map-file=\"${GENERATED_MODULEMAP_DIR}/#{name}.modulemap\""
|
71
|
+
"-fmodule-map-file=\"#{clang_modulemap_path_expr}\"" unless clang_modulemap_path_expr.nil?
|
67
72
|
end
|
68
73
|
|
69
74
|
def resources
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cocoapods-spm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thuyen Trinh
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-12-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: xcodeproj
|
@@ -44,6 +44,7 @@ files:
|
|
44
44
|
- lib/cocoapods-spm/config/pod.rb
|
45
45
|
- lib/cocoapods-spm/config/project.rb
|
46
46
|
- lib/cocoapods-spm/config/spm.rb
|
47
|
+
- lib/cocoapods-spm/def/installer.rb
|
47
48
|
- lib/cocoapods-spm/def/podfile.rb
|
48
49
|
- lib/cocoapods-spm/def/spec.rb
|
49
50
|
- lib/cocoapods-spm/def/spm_dependency.rb
|
@@ -59,6 +60,7 @@ files:
|
|
59
60
|
- lib/cocoapods-spm/hooks/post_integrate/5.update_settings.rb
|
60
61
|
- lib/cocoapods-spm/hooks/post_integrate/6.update_embed_frameworks_script.rb
|
61
62
|
- lib/cocoapods-spm/hooks/post_integrate/7.update_copy_resources_script.rb
|
63
|
+
- lib/cocoapods-spm/macro/config.rb
|
62
64
|
- lib/cocoapods-spm/macro/fetcher.rb
|
63
65
|
- lib/cocoapods-spm/macro/metadata.rb
|
64
66
|
- lib/cocoapods-spm/macro/pod_installer.rb
|