5
5
puts ( 'xcodeproj doesn\'t exist' )
6
6
Kernel . exit ( 0 )
7
7
end
8
- require 'fileutils'
9
8
10
9
# Replace these with your values
11
10
current_path = Dir . pwd
12
11
project_path = Dir . glob ( "#{ current_path } /ios/*.xcodeproj" ) . first
13
12
file_name = File . basename ( project_path , ".xcodeproj" )
14
- project_location = ' ./ios/' + file_name + ' .xcodeproj'
13
+ project_location = " ./ios/#{ file_name } .xcodeproj"
15
14
target_name = file_name
16
15
framework_root = '../node_modules/instabug-reactnative/ios'
17
16
framework_name = 'Instabug.framework'
18
17
19
18
INSTABUG_PHASE_NAME = "Strip Frameworks"
19
+
20
20
INSTABUG_PHASE_SCRIPT = <<-SCRIPTEND
21
21
bash "${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}/Instabug.framework/Instabug.bundle/strip-frameworks.sh"
22
22
SCRIPTEND
23
23
24
24
# Get useful variables
25
25
project = Xcodeproj ::Project . open ( project_location )
26
26
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
30
28
target = project . targets . find { |target | target . to_s == target_name }
31
29
frameworks_build_phase = target . build_phases . find { |build_phase | build_phase . to_s == 'FrameworksBuildPhase' }
32
30
33
31
# 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
38
39
39
40
# Add framework search path to target
40
41
[ '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
50
50
end
51
51
52
52
# 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
57
60
58
61
#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
61
67
62
68
# Save Xcode project
63
69
project . save
0 commit comments