cocoapods-spm 0.0.4 → 0.1.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7d90d3841df89cb8d7eb74c8ad184992ae08ec0ed58581827bae94fecdbb9d71
4
- data.tar.gz: 90220d0a9b57102775d8819e972098f5d43a8ddb367e091f1963fe24fead0232
3
+ metadata.gz: 82ee497116a843f58d7c720e348099991ffa073f2666496fab41c807197c8e60
4
+ data.tar.gz: c057825ee4c7e194d2a45c76373e280090fd175611be45dc456d756cb5997f1f
5
5
  SHA512:
6
- metadata.gz: e67677e877f86e94e159630506ab0638429f374cb2aeed940630db7c0b05450ac40cc23fc21868caeef91be9c2c5feed11b61d4e1d2d2f23383da6329d3a1f7c
7
- data.tar.gz: cb91b35ceff530f2b475ab25a5a645cc4e9622401de79064cf0841403135c83aa440265803b7c9520931dd37d18745be7a9dcda7f030a6cfdc36000d79f30279
6
+ metadata.gz: 682233630b82af675249d02cebbb97df63887741b27b0c2036ca05d3b762f3ea8e9c58020dca8a09c58889e907e33d3316c8565ee9c102b7d27b0b6cf6f86fe3
7
+ data.tar.gz: '070698bb276319f11d4a133276cc3b4e4694770f07bfc52c946409130f4b0b22516f500e00294a6185b6e4edbc62b25fe3cc6b5be6b841dda824036a8cb41efb'
@@ -8,11 +8,28 @@ module Pod
8
8
 
9
9
  def initialize(name, options = {})
10
10
  @name = name
11
- @options = options
12
- @requirement = requirement_from(options)
13
- @url = options[:url]
14
- @relative_path = options[:relative_path]
11
+ @_options = options
12
+ @relative_path = nil
13
+ @linkage = nil
14
+ @url = nil
15
+ @requirement = nil
16
+ parse_options(options)
17
+ end
18
+
19
+ def parse_options(options)
20
+ @url = options[:url] || options[:git]
15
21
  @linkage = options[:linkage]
22
+ @relative_path = relative_path_from(options)
23
+ @requirement = requirement_from(options)
24
+ end
25
+
26
+ def relative_path_from(options)
27
+ if (relative_path = options[:relative_path])
28
+ relative_path
29
+ elsif (path = options[:path])
30
+ path = Pathname(path).expand_path
31
+ path.relative_path_from(File.absolute_path("Pods")).to_s
32
+ end
16
33
  end
17
34
 
18
35
  def inspect
@@ -24,7 +41,7 @@ module Pod
24
41
  end
25
42
 
26
43
  def to_dependencies
27
- if (products = @options[:products])
44
+ if (products = @_options[:products])
28
45
  products.map { |product| Dependency.new(@name, product: product, pkg: self) }
29
46
  else
30
47
  [Dependency.new(@name, pkg: self)]
@@ -47,16 +64,16 @@ module Pod
47
64
  private
48
65
 
49
66
  def requirement_from(options)
50
- if options[:requirement]
51
- options[:requirement]
52
- elsif (version = options.delete(:version))
67
+ return if @relative_path
68
+
69
+ if (requirement = options[:requirement])
70
+ requirement
71
+ elsif (version = options.delete(:version) || options.delete(:tag))
53
72
  { :kind => "exactVersion", :version => version }
54
73
  elsif (branch = options.delete(:branch))
55
74
  { :kind => "branch", :branch => branch }
56
75
  elsif (revision = options.delete(:commit))
57
76
  { :kind => "revision", :revision => revision }
58
- elsif options[:relative_path]
59
- nil
60
77
  else
61
78
  raise "Missing requirement for SPM package: #{name}"
62
79
  end
@@ -0,0 +1,9 @@
1
+ module Pod
2
+ module SPM
3
+ module Executables
4
+ extend Executable
5
+
6
+ executable :swift
7
+ end
8
+ end
9
+ end
@@ -45,8 +45,9 @@ module Pod
45
45
  require f
46
46
  id = File.basename(f, ".*")
47
47
  cls_name = "Pod::SPM::Hook::#{id.camelize}"
48
- UI.message "Running hook: #{cls_name}"
49
- cls_name.constantize.new(context, options).run
48
+ UI.message "- Running hook: #{cls_name}" do
49
+ cls_name.constantize.new(context, options).run
50
+ end
50
51
  end
51
52
  end
52
53
 
@@ -3,9 +3,9 @@ module Pod
3
3
  class SPMAnalyzer
4
4
  attr_reader :spm_pkgs, :spm_dependencies_by_target
5
5
 
6
- def initialize(podfile, umbrella_targets)
6
+ def initialize(podfile, aggregate_targets)
7
7
  @podfile = podfile
8
- @umbrella_targets = umbrella_targets
8
+ @aggregate_targets = aggregate_targets
9
9
  @spm_pkgs = []
10
10
  @spm_dependencies_by_target = {}
11
11
  end
@@ -27,19 +27,19 @@ module Pod
27
27
 
28
28
  def analyze_spm_dependencies_by_target
29
29
  analyze_dependencies_for_targets
30
- analyze_dependencies_for_umbrella_targets
30
+ analyze_dependencies_for_aggregate_targets
31
31
  @spm_dependencies_by_target.values.flatten.each { |d| d.pkg = spm_pkg_for(d.name) }
32
32
  end
33
33
 
34
34
  def analyze_dependencies_for_targets
35
- specs = @umbrella_targets.flat_map(&:specs).uniq
35
+ specs = @aggregate_targets.flat_map(&:specs).uniq
36
36
  specs.each do |spec|
37
37
  @spm_dependencies_by_target[spec.name] = spec.spm_dependencies
38
38
  end
39
39
  end
40
40
 
41
- def analyze_dependencies_for_umbrella_targets
42
- @umbrella_targets.each do |target|
41
+ def analyze_dependencies_for_aggregate_targets
42
+ @aggregate_targets.each do |target|
43
43
  spm_dependencies = target.specs.flat_map(&:spm_dependencies)
44
44
  @spm_dependencies_by_target[target.to_s] = merge_spm_dependencies(spm_dependencies)
45
45
  end
@@ -4,6 +4,7 @@ module Pod
4
4
  module SPM
5
5
  class MacroPrebuilder
6
6
  include Config::Mixin
7
+ include Executables
7
8
 
8
9
  attr_reader :name
9
10
 
@@ -36,12 +37,13 @@ module Pod
36
37
  raise "Package.swift not exist in #{macro_downloaded_dir}" \
37
38
  unless (macro_downloaded_dir / "Package.swift").exist?
38
39
 
39
- cmd =
40
- "cd #{macro_downloaded_dir} " \
41
- "&& swift package dump-package " \
42
- "> #{metadata_path.relative_path_from(macro_downloaded_dir)}"
43
- `#{cmd}`
44
- @metadata = Metadata.from_file(metadata_path)
40
+ UI.message "Generating metadata at: #{metadata_path}" do
41
+ raw = Dir.chdir(macro_downloaded_dir) do
42
+ swift! ["package", "dump-package"]
43
+ end
44
+ metadata_path.write(raw)
45
+ @metadata = Metadata.from_s(raw)
46
+ end
45
47
  end
46
48
 
47
49
  def prebuild_macro_impl
@@ -51,8 +53,12 @@ module Pod
51
53
  impl_module_name = @metadata.macro_impl_name
52
54
  return if spm_config.dont_prebuild_macros_if_exist? && (macro_prebuilt_dir / config / impl_module_name).exist?
53
55
 
54
- UI.puts "Building macro implementation: #{impl_module_name} (#{config})...".green
55
- `cd #{macro_downloaded_dir} && swift build -c #{config}`
56
+ UI.section "Building macro implementation: #{impl_module_name} (#{config})...".green do
57
+ Dir.chdir(macro_downloaded_dir) do
58
+ swift! ["build", "-c", config, "--product", impl_module_name]
59
+ end
60
+ end
61
+
56
62
  (macro_prebuilt_dir / config).mkpath
57
63
  FileUtils.copy_entry(
58
64
  macro_downloaded_dir / ".build" / config / impl_module_name,
@@ -1,3 +1,6 @@
1
+ require "cocoapods-spm/config"
2
+ require "cocoapods-spm/metadata"
3
+ require "cocoapods-spm/executables"
1
4
  require "cocoapods-spm/def/target_definition"
2
5
  require "cocoapods-spm/def/podfile"
3
6
  require "cocoapods-spm/def/spec"
@@ -9,8 +9,12 @@ module Pod
9
9
  @raw = raw
10
10
  end
11
11
 
12
+ def self.from_s(str)
13
+ new(JSON.parse(str))
14
+ end
15
+
12
16
  def self.from_file(path)
13
- new(JSON.parse(File.read(path)))
17
+ from_s(File.read(path))
14
18
  end
15
19
 
16
20
  def self.for_pod(name)
@@ -55,7 +55,6 @@ module Pod
55
55
  end
56
56
 
57
57
  def resolve_spm_dependencies
58
- # TODO: convert aggregate_targets to umbrella_targets?
59
58
  UI.section "Analyzing SPM dependencies" do
60
59
  @spm_analyzer ||= Pod::Installer::SPMAnalyzer.new(podfile, aggregate_targets)
61
60
  @spm_analyzer.analyze
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.0.4
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thuyen Trinh
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-12-26 00:00:00.000000000 Z
11
+ date: 2023-12-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: xcodeproj
@@ -42,6 +42,7 @@ files:
42
42
  - lib/cocoapods-spm/def/spm_package.rb
43
43
  - lib/cocoapods-spm/def/target_definition.rb
44
44
  - lib/cocoapods-spm/def/xcodeproj.rb
45
+ - lib/cocoapods-spm/executables.rb
45
46
  - lib/cocoapods-spm/hooks/base.rb
46
47
  - lib/cocoapods-spm/hooks/post_integrate/add_spm_pkgs.rb
47
48
  - lib/cocoapods-spm/hooks/post_integrate/update_embed_frameworks_script.rb