Class: Pod::SPM::MacroPrebuilder

Inherits:
Object
  • Object
show all
Includes:
Executables, MacroConfigMixin
Defined in:
lib/cocoapods-spm/macro/prebuilder.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from MacroConfigMixin

#macro_dir, #macro_downloaded_dir, #macro_prebuilt_dir, #metadata, #metadata_path

Methods included from Config::SPMConfigMixin

#local_macro_pod?, #local_macro_pod_dir, #macro_pods, #spm_config

Methods included from Config::PodConfigMixin

#pod_config

Methods included from Config::ProjectConfigMixin

#project_config

Constructor Details

#initialize(options = {}) ⇒ MacroPrebuilder

Returns a new instance of MacroPrebuilder.



12
13
14
# File 'lib/cocoapods-spm/macro/prebuilder.rb', line 12

def initialize(options = {})
  @name = options[:name]
end

Instance Attribute Details

#nameObject (readonly)

Returns the value of attribute name.



10
11
12
# File 'lib/cocoapods-spm/macro/prebuilder.rb', line 10

def name
  @name
end

Instance Method Details

#prebuild_macro_implObject



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/cocoapods-spm/macro/prebuilder.rb', line 20

def prebuild_macro_impl
  return if spm_config.dont_prebuild_macros?

  config = spm_config.macro_config
  impl_module_name = .macro_impl_name
  prebuilt_binary = macro_prebuilt_dir / "#{impl_module_name}-#{config}"
  if spm_config.dont_prebuild_macros_if_exist? && prebuilt_binary.exist?
    return UI.message "Macro binary exists at #{prebuilt_binary} -> Skip prebuilding macro"
  end

  UI.section "Building macro implementation: #{impl_module_name} (#{config})...".green do
    Dir.chdir(macro_downloaded_dir) do
      swift! ["--version"]
      swift! ["build", "-c", config, "--product", impl_module_name]
    end
  end

  prebuilt_binary.parent.mkpath
  macro_downloaded_build_config_dir = macro_downloaded_dir / ".build" / config
  macro_build_binary_file_path = macro_downloaded_build_config_dir / impl_module_name
  unless macro_build_binary_file_path.exist?
    macro_build_binary_file_path = macro_downloaded_build_config_dir / "#{impl_module_name}-tool"
  end
  FileUtils.copy_entry(
    macro_build_binary_file_path,
    prebuilt_binary
  )
end

#runObject



16
17
18
# File 'lib/cocoapods-spm/macro/prebuilder.rb', line 16

def run
  prebuild_macro_impl
end