cocoapods-spm 0.1.8 → 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/podfile.rb +2 -2
- data/lib/cocoapods-spm/helpers/io.rb +1 -0
- 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 +1 -0
- data/lib/cocoapods-spm/patch/installer.rb +11 -0
- metadata +2 -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}"
|
@@ -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
@@ -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-12-
|
11
|
+
date: 2024-12-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: xcodeproj
|