Skip to content

Commit 963bea7

Browse files
committed
🎨 Reformat the structure of the linking and unlinking scripts
1 parent 1d6fdb1 commit 963bea7

File tree

2 files changed

+34
-29
lines changed

2 files changed

+34
-29
lines changed

link.rb

Lines changed: 30 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -5,59 +5,65 @@
55
puts('xcodeproj doesn\'t exist')
66
Kernel.exit(0)
77
end
8-
require 'fileutils'
98

109
# Replace these with your values
1110
current_path = Dir.pwd
1211
project_path = Dir.glob("#{current_path}/ios/*.xcodeproj").first
1312
file_name = File.basename(project_path, ".xcodeproj")
14-
project_location = './ios/'+file_name+'.xcodeproj'
13+
project_location = "./ios/#{file_name}.xcodeproj"
1514
target_name = file_name
1615
framework_root = '../node_modules/instabug-reactnative/ios'
1716
framework_name = 'Instabug.framework'
1817

1918
INSTABUG_PHASE_NAME = "Strip Frameworks"
19+
2020
INSTABUG_PHASE_SCRIPT = <<-SCRIPTEND
2121
bash "${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}/Instabug.framework/Instabug.bundle/strip-frameworks.sh"
2222
SCRIPTEND
2323

2424
# Get useful variables
2525
project = Xcodeproj::Project.open(project_location)
2626
frameworks_group = project.groups.find { |group| group.display_name == 'Frameworks' }
27-
if frameworks_group == nil
28-
frameworks_group = project.new_group('Frameworks')
29-
end
27+
frameworks_group = project.new_group('Frameworks') if frameworks_group == nil
3028
target = project.targets.find { |target| target.to_s == target_name }
3129
frameworks_build_phase = target.build_phases.find { |build_phase| build_phase.to_s == 'FrameworksBuildPhase' }
3230

3331
# Add new "Embed Frameworks" build phase to target
34-
embed_frameworks_build_phase = project.new(Xcodeproj::Project::Object::PBXCopyFilesBuildPhase)
35-
embed_frameworks_build_phase.name = 'Embed Frameworks'
36-
embed_frameworks_build_phase.symbol_dst_subfolder_spec = :frameworks
37-
target.build_phases << embed_frameworks_build_phase
32+
embed_frameworks_build_phase = target.build_phases.find { |build_phase| build_phase.to_s == 'Embed Frameworks'}
33+
if embed_frameworks_build_phase == nil
34+
embed_frameworks_build_phase = project.new(Xcodeproj::Project::Object::PBXCopyFilesBuildPhase)
35+
embed_frameworks_build_phase.name = 'Embed Frameworks'
36+
embed_frameworks_build_phase.symbol_dst_subfolder_spec = :frameworks
37+
target.build_phases << embed_frameworks_build_phase
38+
end
3839

3940
# Add framework search path to target
4041
['Debug', 'Release'].each do |config|
41-
paths = ['$(inherited', framework_root]
42-
if target.build_settings(config)['FRAMEWORK_SEARCH_PATHS'] == nil
43-
target.build_settings(config)['FRAMEWORK_SEARCH_PATHS'] = paths
44-
elsif target.build_settings(config)['FRAMEWORK_SEARCH_PATHS'].kind_of?(Array)
45-
target.build_settings(config)['FRAMEWORK_SEARCH_PATHS'] << framework_root unless target.build_settings(config)['FRAMEWORK_SEARCH_PATHS'].include? framework_root
46-
else
47-
paths = [target.build_settings(config)['FRAMEWORK_SEARCH_PATHS'], framework_root]
48-
target.build_settings(config)['FRAMEWORK_SEARCH_PATHS'] = paths
49-
end
42+
paths = ['$(inherited)', framework_root]
43+
framework_search_paths = target.build_settings(config)['FRAMEWORK_SEARCH_PATHS']
44+
45+
framework_search_paths ||= ['$(inherited)']
46+
framework_search_paths = [framework_search_paths] unless framework_search_paths.is_a?(Array)
47+
framework_search_paths << framework_root unless framework_search_paths.include? framework_root
48+
49+
target.build_settings(config)['FRAMEWORK_SEARCH_PATHS'] = framework_search_paths
5050
end
5151

5252
# Add framework to target as "Embedded Frameworks"
53-
framework_ref = frameworks_group.new_file("#{framework_root}/#{framework_name}")
54-
build_file = embed_frameworks_build_phase.add_file_reference(framework_ref)
55-
frameworks_build_phase.add_file_reference(framework_ref)
56-
build_file.settings = { 'ATTRIBUTES' => ['CodeSignOnCopy', 'RemoveHeadersOnCopy'] }
53+
framework_ref = frameworks_group.files.find { |file_reference| file_reference.path == "#{framework_root}/#{framework_name}"}
54+
if framework_ref == nil
55+
framework_ref = frameworks_group.new_file("#{framework_root}/#{framework_name}")
56+
build_file = embed_frameworks_build_phase.add_file_reference(framework_ref)
57+
frameworks_build_phase.add_file_reference(framework_ref)
58+
build_file.settings = { 'ATTRIBUTES' => ['CodeSignOnCopy', 'RemoveHeadersOnCopy'] }
59+
end
5760

5861
#Add New Run Script Phase to Build Phases
59-
phase = target.new_shell_script_build_phase(INSTABUG_PHASE_NAME)
60-
phase.shell_script = INSTABUG_PHASE_SCRIPT
62+
shell_script_build_phase = target.shell_script_build_phases.find { |build_phase| build_phase.to_s == INSTABUG_PHASE_NAME }
63+
if shell_script_build_phase == nil
64+
phase = target.new_shell_script_build_phase(INSTABUG_PHASE_NAME)
65+
phase.shell_script = INSTABUG_PHASE_SCRIPT
66+
end
6167

6268
# Save Xcode project
6369
project.save

unlink.rb

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,12 @@
55
puts('xcodeproj doesn\'t exist')
66
Kernel.exit(0)
77
end
8-
require 'fileutils'
98

109
# Replace these with your values
1110
current_path = Dir.pwd
1211
project_path = Dir.glob("#{current_path}/ios/*.xcodeproj").first
1312
file_name = File.basename(project_path, ".xcodeproj")
14-
project_location = './ios/'+file_name+'.xcodeproj'
13+
project_location = "./ios/#{file_name}.xcodeproj"
1514
target_name = file_name
1615
framework_root = '../node_modules/instabug-reactnative/ios'
1716
framework_name = 'Instabug.framework'
@@ -26,7 +25,7 @@
2625

2726
# Remove "Embed Frameworks" build phase to target
2827
embed_frameworks_build_phase = target.build_phases.find { |build_phase| build_phase.to_s == 'Embed Frameworks'}
29-
target.build_phases.delete(embed_frameworks_build_phase)
28+
target.build_phases.delete(embed_frameworks_build_phase) if embed_frameworks_build_phase
3029

3130
# Remove framework search path from target
3231
['Debug', 'Release'].each do |config|
@@ -36,11 +35,11 @@
3635
# Remove framework from target from "Embedded Frameworks"
3736
framework_ref = frameworks_group.files.find { |file_reference| file_reference.path == "#{framework_root}/#{framework_name}"}
3837
frameworks_build_phase.remove_file_reference(framework_ref)
39-
framework_ref.remove_from_project
38+
framework_ref.remove_from_project if framework_ref
4039

4140
#Delete New Run Script Phase from Build Phases
4241
shell_script_build_phase = target.shell_script_build_phases.find { |build_phase| build_phase.to_s == INSTABUG_PHASE_NAME }
43-
target.build_phases.delete(shell_script_build_phase)
42+
target.build_phases.delete(shell_script_build_phase) if shell_script_build_phase
4443

4544
# Save Xcode project
4645
project.save

0 commit comments

Comments
 (0)