Class: HMap::XcodeprojHelper

Inherits:
Object
  • Object
show all
Defined in:
lib/hmap/helper/xcconfig_helper.rb

Overview

A collection of xcodeproj Helper functions used throughout hmap.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(xcconfig) ⇒ XcodeprojHelper

Returns a new instance of XcodeprojHelper.



10
11
12
13
# File 'lib/hmap/helper/xcconfig_helper.rb', line 10

def initialize(xcconfig)
  @xcconfig_path = xcconfig
  @xcconfig = Xcodeproj::Config.new(xcconfig_path)
end

Instance Attribute Details

#build_setting_keyObject (readonly)

Returns the value of attribute build_setting_key.



8
9
10
# File 'lib/hmap/helper/xcconfig_helper.rb', line 8

def build_setting_key
  @build_setting_key
end

#xcconfig_pathObject (readonly)

Returns the value of attribute xcconfig_path.



8
9
10
# File 'lib/hmap/helper/xcconfig_helper.rb', line 8

def xcconfig_path
  @xcconfig_path
end

Instance Method Details

#change_hmap_build_setting_and_save(values, use_headermap: false, save_origin: false) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/hmap/helper/xcconfig_helper.rb', line 15

def change_hmap_build_setting_and_save(values, use_headermap: false, save_origin: false)
  ocf = values[BuildSettingConstants::OTHER_CFLAGS]
  ocppf = values[BuildSettingConstants::OTHER_CPLUSPLUSFLAGS]
  change_xcconfig_build_setting(BuildSettingConstants::OTHER_CFLAGS, ocf, true)
  change_xcconfig_build_setting(BuildSettingConstants::OTHER_CPLUSPLUSFLAGS, ocppf, true) if  build_setting?(BuildSettingConstants::OTHER_CPLUSPLUSFLAGS)
  change_xcconfig_build_setting(BuildSettingConstants::USE_HEADERMAP, 'NO', false) unless use_headermap
  build_settings = [BuildSettingConstants::HEAD_SEARCH_PATHS, BuildSettingConstants::USER_HEADER_SEARCH_PATHS]
  if save_origin
    clean_hmap_build_settings_to_xcconfig(build_settings)
  else
    save_build_settings_to_xcconfig(build_settings)
  end
  save_to_path
end

#change_xcconfig_build_setting(build_setting_key, setting, save_origin) {|@xcconfig| ... } ⇒ Object

Yields:

  • (@xcconfig)


36
37
38
39
40
41
42
43
44
45
# File 'lib/hmap/helper/xcconfig_helper.rb', line 36

def change_xcconfig_build_setting(build_setting_key, setting, save_origin)
  return if setting.nil?

  save_origin_build_setting = save_build_setting_to_xcconfig(build_setting_key)
  value = setting
  value = "#{value} ${#{save_key(build_setting_key)}}" if save_origin && !save_origin_build_setting.nil?
  @xcconfig.attributes[hmap_key(build_setting_key)] = value
  @xcconfig.attributes[build_setting_key] = "${#{hmap_key(build_setting_key)}}"
  yield(@xcconfig) if block_given?
end

#change_xcconfig_build_settings(settings, save_origin) ⇒ Object



30
31
32
33
34
# File 'lib/hmap/helper/xcconfig_helper.rb', line 30

def change_xcconfig_build_settings(settings, save_origin)
  settings.each do |key, value|
    change_xcconfig_build_setting(key.to_s, value, save_origin)
  end
end

#clean_hmap_build_setting_and_saveObject



61
62
63
64
65
66
67
68
# File 'lib/hmap/helper/xcconfig_helper.rb', line 61

def clean_hmap_build_setting_and_save
  clean_hmap_build_setting_to_xcconfig(BuildSettingConstants::OTHER_CFLAGS)
  clean_hmap_build_setting_to_xcconfig(BuildSettingConstants::OTHER_CPLUSPLUSFLAGS)
  clean_hmap_build_setting_to_xcconfig(BuildSettingConstants::HEAD_SEARCH_PATHS)
  clean_hmap_build_setting_to_xcconfig(BuildSettingConstants::USER_HEADER_SEARCH_PATHS)
  clean_hmap_build_setting_to_xcconfig(BuildSettingConstants::USE_HEADERMAP)
  save_to_path
end

#clean_hmap_build_setting_to_xcconfig(build_setting) ⇒ Object



75
76
77
78
79
80
81
82
83
84
# File 'lib/hmap/helper/xcconfig_helper.rb', line 75

def clean_hmap_build_setting_to_xcconfig(build_setting)
  save_origin_build_setting = @xcconfig.attributes[save_key(build_setting)]
  origin_build_setting = @xcconfig.attributes[build_setting]
  if save_origin_build_setting.nil? && !origin_build_setting.nil? && origin_build_setting.include?(hmap_key(build_setting))
    @xcconfig.attributes.delete(build_setting)
  end
  @xcconfig.attributes[build_setting] = save_origin_build_setting unless save_origin_build_setting.nil?
  @xcconfig.attributes.delete(hmap_key(build_setting))
  @xcconfig.attributes.delete(save_key(build_setting))
end

#clean_hmap_build_settings_to_xcconfig(build_settings) ⇒ Object



70
71
72
73
# File 'lib/hmap/helper/xcconfig_helper.rb', line 70

def clean_hmap_build_settings_to_xcconfig(build_settings)
  build_settings ||= []
  build_settings.each { |build_setting| clean_hmap_build_setting_to_xcconfig(build_setting) }
end

#save_build_setting_to_xcconfig(key) ⇒ Object



52
53
54
55
56
57
58
59
# File 'lib/hmap/helper/xcconfig_helper.rb', line 52

def save_build_setting_to_xcconfig(key)
  origin_build_setting = @xcconfig.attributes[key]
  if origin_build_setting.nil? || !origin_build_setting.include?(hmap_key(key))
    @xcconfig.attributes[save_key(key)] = origin_build_setting unless origin_build_setting.nil?
    @xcconfig.attributes.delete(key)
  end
  @xcconfig.attributes[save_key(key)]
end

#save_build_settings_to_xcconfig(build_settings) ⇒ Object



47
48
49
50
# File 'lib/hmap/helper/xcconfig_helper.rb', line 47

def save_build_settings_to_xcconfig(build_settings)
  build_settings ||= []
  build_settings.each { |key| save_build_setting_to_xcconfig(key) }
end

#save_to_path(path = nil) ⇒ Object



86
87
88
89
# File 'lib/hmap/helper/xcconfig_helper.rb', line 86

def save_to_path(path = nil)
  path = xcconfig_path if path.nil?
  @xcconfig.save_as(path)
end