cocoapods-spm 0.1.7 → 0.1.9
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/config/spm.rb +11 -0
- data/lib/cocoapods-spm/def/installer.rb +7 -0
- data/lib/cocoapods-spm/def/podfile.rb +2 -2
- data/lib/cocoapods-spm/helpers/io.rb +1 -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/fetcher.rb +22 -2
- data/lib/cocoapods-spm/macro/pod_installer.rb +1 -1
- data/lib/cocoapods-spm/macro/prebuilder.rb +10 -2
- data/lib/cocoapods-spm/main.rb +2 -0
- data/lib/cocoapods-spm/patch/installer.rb +11 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 24612d253fbaf74d473abe53ca7b3293e06b5dda91b1ef52fd2795f96d5a3a97
|
4
|
+
data.tar.gz: 1394cfc0a85d5378fab7929926f1f65acd7635a9236f427e2f746b4bc973a145
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b9a897b591b5265b2ab5fc760261fd4d2bc319d26e23a4dcf603e51f8dd40103b0d67c3ee6fbc53749727373d748ae8b0252ad2b2e74d4d972ed6f0716cc7267
|
7
|
+
data.tar.gz: 062b87214c04d88dc26fbc871951006eb69c65055410a7537c03c5f7177e039adf2cf93f6ece2d718e51dd8eec66d392acd8462157dbd5634ef6f4347d587221
|
@@ -9,6 +9,17 @@ module Pod
|
|
9
9
|
def macro_pods
|
10
10
|
pod_config.podfile.macro_pods
|
11
11
|
end
|
12
|
+
|
13
|
+
def local_macro_pod?(name)
|
14
|
+
!local_macro_pod_dir(name).nil?
|
15
|
+
end
|
16
|
+
|
17
|
+
def local_macro_pod_dir(name)
|
18
|
+
opts = macro_pods.fetch(name, {})
|
19
|
+
return Path(opts[:podspec]).dirname if opts.key?(:podspec)
|
20
|
+
|
21
|
+
Pathname(opts[:path]) if opts.key?(:path)
|
22
|
+
end
|
12
23
|
end
|
13
24
|
|
14
25
|
attr_accessor :dsl_config, :cli_config
|
@@ -7,7 +7,7 @@ module Pod
|
|
7
7
|
attr_accessor :spm_resolver
|
8
8
|
|
9
9
|
def config_cocoapods_spm(options)
|
10
|
-
SPM::Config.instance.dsl_config
|
10
|
+
SPM::Config.instance.dsl_config.merge!(options)
|
11
11
|
end
|
12
12
|
|
13
13
|
def macro_pods
|
@@ -56,7 +56,7 @@ module Pod
|
|
56
56
|
private
|
57
57
|
|
58
58
|
def prepare_macro_pod_dir(name, requirement)
|
59
|
-
link = requirement[:git]
|
59
|
+
link = requirement[:git] || "N/A"
|
60
60
|
podspec_content = <<~HEREDOC
|
61
61
|
Pod::Spec.new do |s|
|
62
62
|
s.name = "#{name}"
|
@@ -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
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require "cocoapods-spm/helpers/io"
|
1
2
|
require "cocoapods-spm/macro/metadata"
|
2
3
|
require_relative "config"
|
3
4
|
|
@@ -16,8 +17,7 @@ module Pod
|
|
16
17
|
end
|
17
18
|
|
18
19
|
def run
|
19
|
-
|
20
|
-
download_macro_source
|
20
|
+
prepare_macro_source
|
21
21
|
macro_dir = spm_config.macro_root_dir / name
|
22
22
|
macro_downloaded_dir = spm_config.macro_downloaded_root_dir / name
|
23
23
|
FileUtils.copy_entry(
|
@@ -29,6 +29,10 @@ module Pod
|
|
29
29
|
|
30
30
|
private
|
31
31
|
|
32
|
+
def local?
|
33
|
+
local_macro_pod?(name)
|
34
|
+
end
|
35
|
+
|
32
36
|
def generate_metadata
|
33
37
|
raise "Package.swift not exist in #{macro_downloaded_dir}" \
|
34
38
|
unless (macro_downloaded_dir / "Package.swift").exist?
|
@@ -37,7 +41,23 @@ module Pod
|
|
37
41
|
metadata_path.write(raw)
|
38
42
|
end
|
39
43
|
|
44
|
+
def prepare_macro_source
|
45
|
+
if local?
|
46
|
+
symlink_local_macro_source
|
47
|
+
else
|
48
|
+
download_macro_source
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def symlink_local_macro_source
|
53
|
+
UI.message "Creating symlink to local macro source: #{name}..."
|
54
|
+
# For local macro pod, just need to copy local pod dir to downloaded sandbox,
|
55
|
+
# or create a symlink .spm.pods/macros/.downloaded/FOO -> LocalPods/FOO
|
56
|
+
IOUtils.symlink(local_macro_pod_dir(name), macro_downloaded_dir)
|
57
|
+
end
|
58
|
+
|
40
59
|
def download_macro_source
|
60
|
+
UI.puts "Downloading source for macro: #{name}...".magenta
|
41
61
|
@specs_by_platform ||= @podfile.root_target_definitions.to_h do |definition|
|
42
62
|
spec = Pod::Spec.from_file(spm_config.macro_root_dir / name / "#{name}.podspec")
|
43
63
|
[definition.platform, [spec]]
|
@@ -23,17 +23,25 @@ module Pod
|
|
23
23
|
config = spm_config.macro_config
|
24
24
|
impl_module_name = metadata.macro_impl_name
|
25
25
|
prebuilt_binary = macro_prebuilt_dir / "#{impl_module_name}-#{config}"
|
26
|
-
|
26
|
+
if spm_config.dont_prebuild_macros_if_exist? && prebuilt_binary.exist?
|
27
|
+
return UI.message "Macro binary exists at #{prebuilt_binary} -> Skip prebuilding macro"
|
28
|
+
end
|
27
29
|
|
28
30
|
UI.section "Building macro implementation: #{impl_module_name} (#{config})...".green do
|
29
31
|
Dir.chdir(macro_downloaded_dir) do
|
32
|
+
swift! ["--version"]
|
30
33
|
swift! ["build", "-c", config, "--product", impl_module_name]
|
31
34
|
end
|
32
35
|
end
|
33
36
|
|
34
37
|
prebuilt_binary.parent.mkpath
|
38
|
+
macro_downloaded_build_config_dir = macro_downloaded_dir / ".build" / config
|
39
|
+
macro_build_binary_file_path = macro_downloaded_build_config_dir / impl_module_name
|
40
|
+
unless macro_build_binary_file_path.exist?
|
41
|
+
macro_build_binary_file_path = macro_downloaded_build_config_dir / "#{impl_module_name}-tool"
|
42
|
+
end
|
35
43
|
FileUtils.copy_entry(
|
36
|
-
|
44
|
+
macro_build_binary_file_path,
|
37
45
|
prebuilt_binary
|
38
46
|
)
|
39
47
|
end
|
data/lib/cocoapods-spm/main.rb
CHANGED
@@ -1,8 +1,10 @@
|
|
1
|
+
require "pry" if ENV["COCOAPODS_IMPORT_PRY"] == "true"
|
1
2
|
require "cocoapods-spm/compatibility/all"
|
2
3
|
require "cocoapods-spm/helpers/io"
|
3
4
|
require "cocoapods-spm/helpers/patch"
|
4
5
|
require "cocoapods-spm/config"
|
5
6
|
require "cocoapods-spm/executables"
|
7
|
+
require "cocoapods-spm/def/installer"
|
6
8
|
require "cocoapods-spm/def/target_definition"
|
7
9
|
require "cocoapods-spm/def/podfile"
|
8
10
|
require "cocoapods-spm/def/spec"
|
@@ -34,6 +34,17 @@ module Pod
|
|
34
34
|
run_spm_post_integrate_hooks
|
35
35
|
end
|
36
36
|
|
37
|
+
patch_method :sandbox_state do
|
38
|
+
state = origin_sandbox_state
|
39
|
+
# NOTE: For macro pods, we force-trigger their source installers even in incremental installations.
|
40
|
+
# This is done by altering the `sandbox_state` & marking them as `added`
|
41
|
+
spm_config.all_macros.each do |name|
|
42
|
+
%i[unchanged changed deleted].each { |key| state.send(key).delete(name) }
|
43
|
+
state.added << (name)
|
44
|
+
end
|
45
|
+
state
|
46
|
+
end
|
47
|
+
|
37
48
|
private
|
38
49
|
|
39
50
|
def hook_options
|
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.9
|
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-08 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
|