run_loop 2.7.1 → 3.0.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 +4 -4
- data/lib/run_loop.rb +0 -38
- data/lib/run_loop/app.rb +37 -1
- data/lib/run_loop/cli/idm.rb +71 -0
- data/lib/run_loop/cli/simctl.rb +2 -2
- data/lib/run_loop/core.rb +12 -156
- data/lib/run_loop/core_simulator.rb +17 -9
- data/lib/run_loop/device.rb +39 -18
- data/lib/run_loop/device_agent/Frameworks.zip +0 -0
- data/lib/run_loop/device_agent/app/DeviceAgent-Runner.app.zip +0 -0
- data/lib/run_loop/device_agent/bin/iOSDeviceManager +0 -0
- data/lib/run_loop/device_agent/ipa/DeviceAgent-Runner.app.zip +0 -0
- data/lib/run_loop/language.rb +3 -0
- data/lib/run_loop/locale.rb +3 -0
- data/lib/run_loop/simctl.rb +95 -37
- data/lib/run_loop/strings.rb +15 -0
- data/lib/run_loop/version.rb +1 -1
- data/lib/run_loop/xcode.rb +34 -167
- metadata +4 -4
- data/lib/run_loop/sim_control.rb +0 -1268
data/lib/run_loop/device.rb
CHANGED
@@ -94,27 +94,23 @@ module RunLoop
|
|
94
94
|
# @return [RunLoop::Device] A device that matches `udid_or_name`.
|
95
95
|
# @raise [ArgumentError] If no matching device can be found.
|
96
96
|
def self.device_with_identifier(udid_or_name, options={})
|
97
|
-
if options
|
98
|
-
|
99
|
-
removed (1.5.0). It has been replaced by an options hash with two keys:
|
100
|
-
:simctl and :instruments. Please update your sources.))]
|
97
|
+
if options[:xcode]
|
98
|
+
RunLoop.log_warn("device_with_identifier no longer uses :xcode option")
|
101
99
|
end
|
102
100
|
|
103
101
|
default_options = {
|
104
102
|
:simctl => RunLoop::Simctl.new,
|
105
103
|
:instruments => RunLoop::Instruments.new,
|
106
|
-
:xcode => RunLoop::Xcode.new
|
107
104
|
}
|
108
105
|
|
109
106
|
merged_options = default_options.merge(options)
|
110
107
|
|
111
108
|
instruments = merged_options[:instruments]
|
112
109
|
simctl = merged_options[:simctl]
|
113
|
-
xcode = merged_options[:xcode]
|
114
110
|
|
115
111
|
simulator = simctl.simulators.detect do |sim|
|
116
|
-
sim.
|
117
|
-
|
112
|
+
sim.udid == udid_or_name ||
|
113
|
+
sim.simulator_instruments_identifier_same_as?(udid_or_name)
|
118
114
|
end
|
119
115
|
|
120
116
|
return simulator if !simulator.nil?
|
@@ -129,6 +125,22 @@ removed (1.5.0). It has been replaced by an options hash with two keys:
|
|
129
125
|
raise ArgumentError, "Could not find a device with a UDID or name matching '#{udid_or_name}'"
|
130
126
|
end
|
131
127
|
|
128
|
+
# iPhone 8 10.3.1 is the same as iPhone 10.3 when comparing identifiers
|
129
|
+
def simulator_instruments_identifier_same_as?(identifier)
|
130
|
+
instruments_id = instruments_identifier
|
131
|
+
return true if instruments_id == identifier
|
132
|
+
|
133
|
+
model_part = identifier.split(" (").first
|
134
|
+
return false if model_part != name
|
135
|
+
|
136
|
+
version_part = RunLoop::Version.new(identifier[RunLoop::Regex::VERSION_REGEX])
|
137
|
+
|
138
|
+
return false if version.major != version_part.major
|
139
|
+
return false if version.minor != version_part.minor
|
140
|
+
|
141
|
+
true
|
142
|
+
end
|
143
|
+
|
132
144
|
# @!visibility private
|
133
145
|
#
|
134
146
|
# Please don't call this method. It is for internal use only. The behavior
|
@@ -187,21 +199,21 @@ removed (1.5.0). It has been replaced by an options hash with two keys:
|
|
187
199
|
# @return [String] An instruments-ready device identifier.
|
188
200
|
# @raise [RuntimeError] If trying to obtain a instruments-ready identifier
|
189
201
|
# for a simulator when Xcode < 6.
|
190
|
-
def instruments_identifier(xcode)
|
202
|
+
def instruments_identifier(xcode=nil)
|
203
|
+
if xcode
|
204
|
+
RunLoop.deprecated("3.0.0",
|
205
|
+
"instruments_identifier no longer takes an argument")
|
206
|
+
end
|
191
207
|
if physical_device?
|
192
208
|
udid
|
193
209
|
else
|
194
|
-
if version
|
195
|
-
version_part = version.
|
210
|
+
if version.patch
|
211
|
+
version_part = "#{version.major}.#{version.minor}.#{version.patch}"
|
196
212
|
else
|
197
213
|
version_part = "#{version.major}.#{version.minor}"
|
198
214
|
end
|
199
215
|
|
200
|
-
|
201
|
-
"#{name} (#{version_part})"
|
202
|
-
else
|
203
|
-
"#{name} (#{version_part} Simulator)"
|
204
|
-
end
|
216
|
+
"#{name} (#{version_part})"
|
205
217
|
end
|
206
218
|
end
|
207
219
|
|
@@ -392,6 +404,7 @@ version: #{version}
|
|
392
404
|
RunLoop.log_debug("Waited for #{elapsed} seconds for simulator to stabilize")
|
393
405
|
else
|
394
406
|
RunLoop.log_debug("Timed out after #{timeout} seconds waiting for simulator to stabilize")
|
407
|
+
RunLoop.log_debug("These simulator processes did not start: #{required.join(",")}")
|
395
408
|
end
|
396
409
|
end
|
397
410
|
|
@@ -613,11 +626,19 @@ Could not update the Simulator languages.
|
|
613
626
|
|
614
627
|
# @!visibility private
|
615
628
|
def simulator_required_child_processes
|
629
|
+
# required: ["SimulatorBridge", "medialibraryd"]
|
616
630
|
@simulator_required_child_processes ||= begin
|
617
|
-
|
631
|
+
if xcode.version_gte_100?
|
632
|
+
required = ["backboardd", "installd", "SpringBoard"]
|
633
|
+
elsif xcode.version_gte_83? && version.major > 10
|
634
|
+
required = ["backboardd", "installd", "SpringBoard", "suggestd"]
|
635
|
+
else
|
636
|
+
required = ["backboardd", "installd", "SimulatorBridge", "SpringBoard"]
|
637
|
+
end
|
638
|
+
|
618
639
|
if xcode.version_gte_90?
|
619
640
|
required << "filecoordinationd"
|
620
|
-
elsif xcode.version_gte_8? && version.major > 8
|
641
|
+
elsif xcode.version_gte_8? && (version.major > 8 && version.major < 11)
|
621
642
|
required << "medialibraryd"
|
622
643
|
end
|
623
644
|
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/lib/run_loop/language.rb
CHANGED
@@ -45,6 +45,9 @@ module RunLoop
|
|
45
45
|
# printf("\"%s\",", [langCode cStringUsingEncoding:NSUTF8StringEncoding]);
|
46
46
|
# }
|
47
47
|
LANGUAGE_CODES = {
|
48
|
+
RunLoop::Version.new("12.0") => [
|
49
|
+
"af","af-NA","af-ZA","agq","agq-CM","ak","ak-GH","am","am-ET","ar","ar-001","ar-AE","ar-BH","ar-DJ","ar-DZ","ar-EG","ar-EH","ar-ER","ar-IL","ar-IQ","ar-JO","ar-KM","ar-KW","ar-LB","ar-LY","ar-MA","ar-MR","ar-OM","ar-PS","ar-QA","ar-SA","ar-SD","ar-SO","ar-SS","ar-SY","ar-TD","ar-TN","ar-YE","as","as-IN","asa","asa-TZ","ast","ast-ES","az","az-Cyrl","az-Cyrl-AZ","az-AZ","bas","bas-CM","be","be-BY","bem","bem-ZM","bez","bez-TZ","bg","bg-BG","bm","bm-ML","bn","bn-BD","bn-IN","bo","bo-CN","bo-IN","br","br-FR","brx","brx-IN","bs","bs-Cyrl","bs-Cyrl-BA","bs-BA","ca","ca-AD","ca-ES","ca-FR","ca-IT","ce","ce-RU","cgg","cgg-UG","chr","chr-US","ckb","ckb-IQ","ckb-IR","cs","cs-CZ","cy","cy-GB","da","da-DK","da-GL","dav","dav-KE","de","de-AT","de-BE","de-CH","de-DE","de-IT","de-LI","de-LU","dje","dje-NE","dsb","dsb-DE","dua","dua-CM","dyo","dyo-SN","dz","dz-BT","ebu","ebu-KE","ee","ee-GH","ee-TG","el","el-CY","el-GR","en","en-001","en-150","en-AD","en-AG","en-AI","en-AL","en-AR","en-AS","en-AT","en-AU","en-BA","en-BB","en-BD","en-BE","en-BG","en-BI","en-BM","en-BR","en-BS","en-BW","en-BZ","en-CA","en-CC","en-CH","en-CK","en-CM","en-CN","en-CX","en-CY","en-CZ","en-DE","en-DG","en-DK","en-DM","en-EE","en-ER","en-ES","en-FI","en-FJ","en-FK","en-FM","en-FR","en-GB","en-GD","en-GG","en-GH","en-GI","en-GM","en-GR","en-GU","en-GY","en-HK","en-HR","en-HU","en-ID","en-IE","en-IL","en-IM","en-IN","en-IO","en-IS","en-IT","en-JE","en-JM","en-JP","en-KE","en-KI","en-KN","en-KR","en-KY","en-LC","en-LR","en-LS","en-LT","en-LU","en-LV","en-ME","en-MG","en-MH","en-MO","en-MP","en-MS","en-MT","en-MU","en-MV","en-MW","en-MY","en-NA","en-NF","en-NG","en-NL","en-NO","en-NR","en-NU","en-NZ","en-PG","en-PH","en-PK","en-PL","en-PN","en-PR","en-PT","en-PW","en-RO","en-RU","en-RW","en-SA","en-SB","en-SC","en-SD","en-SE","en-SG","en-SH","en-SI","en-SK","en-SL","en-SS","en-SX","en-SZ","en-TC","en-TH","en-TK","en-TO","en-TR","en-TT","en-TV","en-TW","en-TZ","en-UG","en-UM","en-US","en-US-POSIX","en-VC","en-VG","en-VI","en-VU","en-WS","en-ZA","en-ZM","en-ZW","eo","es","es-419","es-AG","es-AI","es-AR","es-AW","es-BB","es-BL","es-BM","es-BO","es-BQ","es-BR","es-BS","es-BZ","es-CA","es-CL","es-CO","es-CR","es-CU","es-CW","es-DM","es-DO","es-EA","es-EC","es-ES","es-FK","es-GD","es-GF","es-GL","es-GP","es-GQ","es-GT","es-GY","es-HN","es-HT","es-IC","es-KN","es-KY","es-LC","es-MF","es-MQ","es-MS","es-MX","es-NI","es-PA","es-PE","es-PH","es-PM","es-PR","es-PY","es-SR","es-SV","es-SX","es-TC","es-TT","es-US","es-UY","es-VC","es-VE","es-VG","es-VI","et","et-EE","eu","eu-ES","ewo","ewo-CM","fa","fa-AF","fa-IR","ff","ff-CM","ff-GN","ff-MR","ff-SN","fi","fi-FI","fil","fil-PH","fo","fo-DK","fo-FO","fr","fr-BE","fr-BF","fr-BI","fr-BJ","fr-BL","fr-CA","fr-CD","fr-CF","fr-CG","fr-CH","fr-CI","fr-CM","fr-DJ","fr-DZ","fr-FR","fr-GA","fr-GF","fr-GN","fr-GP","fr-GQ","fr-HT","fr-KM","fr-LU","fr-MA","fr-MC","fr-MF","fr-MG","fr-ML","fr-MQ","fr-MR","fr-MU","fr-NC","fr-NE","fr-PF","fr-PM","fr-RE","fr-RW","fr-SC","fr-SN","fr-SY","fr-TD","fr-TG","fr-TN","fr-VU","fr-WF","fr-YT","fur","fur-IT","fy","fy-NL","ga","ga-IE","gd","gd-GB","gl","gl-ES","gsw","gsw-CH","gsw-FR","gsw-LI","gu","gu-IN","guz","guz-KE","gv","gv-IM","ha","ha-GH","ha-NE","ha-NG","haw","haw-US","he","he-IL","hi","hi-IN","hr","hr-BA","hr-HR","hsb","hsb-DE","hu","hu-HU","hy","hy-AM","id","id-ID","ig","ig-NG","ii","ii-CN","is","is-IS","it","it-CH","it-IT","it-SM","it-VA","iu","iu-CA","ja","ja-JP","jgo","jgo-CM","jmc","jmc-TZ","ka","ka-GE","kab","kab-DZ","kam","kam-KE","kde","kde-TZ","kea","kea-CV","khq","khq-ML","ki","ki-KE","kk","kk-KZ","kkj","kkj-CM","kl","kl-GL","kln","kln-KE","km","km-KH","kn","kn-IN","ko","ko-KP","ko-KR","kok","kok-IN","ks","ks-IN","ksb","ksb-TZ","ksf","ksf-CM","ksh","ksh-DE","kw","kw-GB","ky","ky-KG","lag","lag-TZ","lb","lb-LU","lg","lg-UG","lkt","lkt-US","ln","ln-AO","ln-CD","ln-CF","ln-CG","lo","lo-LA","lrc","lrc-IQ","lrc-IR","lt","lt-LT","lu","lu-CD","luo","luo-KE","luy","luy-KE","lv","lv-LV","mas","mas-KE","mas-TZ","mer","mer-KE","mfe","mfe-MU","mg","mg-MG","mgh","mgh-MZ","mgo","mgo-CM","mk","mk-MK","ml","ml-IN","mn","mn-MN","mr","mr-IN","ms","ms-Arab","ms-Arab-BN","ms-Arab-MY","ms-BN","ms-MY","ms-SG","mt","mt-MT","mua","mua-CM","my","my-MM","mzn","mzn-IR","naq","naq-NA","nb","nb-NO","nb-SJ","nd","nd-ZW","nds","nds-DE","nds-NL","ne","ne-IN","ne-NP","nl","nl-AW","nl-BE","nl-BQ","nl-CW","nl-NL","nl-SR","nl-SX","nmg","nmg-CM","nn","nn-NO","nnh","nnh-CM","nus","nus-SS","nyn","nyn-UG","om","om-ET","om-KE","or","or-IN","os","os-GE","os-RU","pa","pa-Arab","pa-Arab-PK","pa-IN","pl","pl-PL","ps","ps-AF","pt","pt-AO","pt-BR","pt-CH","pt-CV","pt-FR","pt-GQ","pt-GW","pt-LU","pt-MO","pt-MZ","pt-PT","pt-ST","pt-TL","qu","qu-BO","qu-EC","qu-PE","rm","rm-CH","rn","rn-BI","ro","ro-MD","ro-RO","rof","rof-TZ","ru","ru-BY","ru-KG","ru-KZ","ru-MD","ru-RU","ru-UA","rw","rw-RW","rwk","rwk-TZ","sah","sah-RU","saq","saq-KE","sbp","sbp-TZ","se","se-FI","se-NO","se-SE","seh","seh-MZ","ses","ses-ML","sg","sg-CF","shi","shi-MA","shi-Tfng","shi-Tfng-MA","si","si-LK","sk","sk-SK","sl","sl-SI","smn","smn-FI","sn","sn-ZW","so","so-DJ","so-ET","so-KE","so-SO","sq","sq-AL","sq-MK","sq-XK","sr","sr-BA","sr-ME","sr-RS","sr-XK","sr-Latn","sr-Latn-BA","sr-Latn-ME","sr-Latn-RS","sr-Latn-XK","sv","sv-AX","sv-FI","sv-SE","sw","sw-CD","sw-KE","sw-TZ","sw-UG","ta","ta-IN","ta-LK","ta-MY","ta-SG","te","te-IN","teo","teo-KE","teo-UG","tg","tg-TJ","th","th-TH","ti","ti-ER","ti-ET","tk","tk-TM","to","to-TO","tr","tr-CY","tr-TR","twq","twq-NE","tzm","tzm-MA","ug","ug-CN","uk","uk-UA","ur","ur-IN","ur-PK","uz","uz-Arab","uz-Arab-AF","uz-UZ","uz-Latn","uz-Latn-UZ","vai","vai-Latn","vai-Latn-LR","vai-LR","vi","vi-VN","vun","vun-TZ","wae","wae-CH","xog","xog-UG","yav","yav-CM","yi","yi-001","yo","yo-BJ","yo-NG","yue","yue-Hans","yue-Hans-CN","yue-Hant","yue-Hant-HK","zgh","zgh-MA","zh","zh-Hans","zh-Hans-CN","zh-Hans-HK","zh-Hans-MO","zh-Hans-SG","zh-Hant","zh-Hant-HK","zh-Hant-MO","zh-Hant-TW","zu","zu-ZA"
|
50
|
+
],
|
48
51
|
RunLoop::Version.new("11.0") => [
|
49
52
|
"af","af-NA","af-ZA","agq","agq-CM","ak","ak-GH","am","am-ET","ar","ar-001","ar-AE","ar-BH","ar-DJ","ar-DZ","ar-EG","ar-EH","ar-ER","ar-IL","ar-IQ","ar-JO","ar-KM","ar-KW","ar-LB","ar-LY","ar-MA","ar-MR","ar-OM","ar-PS","ar-QA","ar-SA","ar-SD","ar-SO","ar-SS","ar-SY","ar-TD","ar-TN","ar-YE","as","as-IN","asa","asa-TZ","ast","ast-ES","az","az-Cyrl","az-Cyrl-AZ","az-AZ","bas","bas-CM","be","be-BY","bem","bem-ZM","bez","bez-TZ","bg","bg-BG","bm","bm-ML","bn","bn-BD","bn-IN","bo","bo-CN","bo-IN","br","br-FR","brx","brx-IN","bs","bs-Cyrl","bs-Cyrl-BA","bs-BA","ca","ca-AD","ca-ES","ca-FR","ca-IT","ce","ce-RU","cgg","cgg-UG","chr","chr-US","ckb","ckb-IQ","ckb-IR","cs","cs-CZ","cy","cy-GB","da","da-DK","da-GL","dav","dav-KE","de","de-AT","de-BE","de-CH","de-DE","de-IT","de-LI","de-LU","dje","dje-NE","dsb","dsb-DE","dua","dua-CM","dyo","dyo-SN","dz","dz-BT","ebu","ebu-KE","ee","ee-GH","ee-TG","el","el-CY","el-GR","en","en-001","en-150","en-AD","en-AG","en-AI","en-AL","en-AR","en-AS","en-AT","en-AU","en-BA","en-BB","en-BD","en-BE","en-BG","en-BI","en-BM","en-BR","en-BS","en-BW","en-BZ","en-CA","en-CC","en-CH","en-CK","en-CM","en-CN","en-CX","en-CY","en-CZ","en-DE","en-DG","en-DK","en-DM","en-EE","en-ER","en-ES","en-FI","en-FJ","en-FK","en-FM","en-FR","en-GB","en-GD","en-GG","en-GH","en-GI","en-GM","en-GR","en-GU","en-GY","en-HK","en-HR","en-HU","en-ID","en-IE","en-IL","en-IM","en-IN","en-IO","en-IS","en-IT","en-JE","en-JM","en-JP","en-KE","en-KI","en-KN","en-KR","en-KY","en-LC","en-LR","en-LS","en-LT","en-LU","en-LV","en-ME","en-MG","en-MH","en-MO","en-MP","en-MS","en-MT","en-MU","en-MV","en-MW","en-MY","en-NA","en-NF","en-NG","en-NL","en-NO","en-NR","en-NU","en-NZ","en-PG","en-PH","en-PK","en-PL","en-PN","en-PR","en-PT","en-PW","en-RO","en-RU","en-RW","en-SA","en-SB","en-SC","en-SD","en-SE","en-SG","en-SH","en-SI","en-SK","en-SL","en-SS","en-SX","en-SZ","en-TC","en-TH","en-TK","en-TO","en-TR","en-TT","en-TV","en-TW","en-TZ","en-UG","en-UM","en-US","en-US-POSIX","en-VC","en-VG","en-VI","en-VU","en-WS","en-ZA","en-ZM","en-ZW","eo","es","es-419","es-AG","es-AI","es-AR","es-AW","es-BB","es-BL","es-BM","es-BO","es-BQ","es-BR","es-BS","es-BZ","es-CL","es-CO","es-CR","es-CU","es-CW","es-DM","es-DO","es-EA","es-EC","es-ES","es-FK","es-GD","es-GF","es-GL","es-GP","es-GQ","es-GT","es-GY","es-HN","es-HT","es-IC","es-KN","es-KY","es-LC","es-MF","es-MQ","es-MS","es-MX","es-NI","es-PA","es-PE","es-PH","es-PM","es-PR","es-PY","es-SR","es-SV","es-SX","es-TC","es-TT","es-US","es-UY","es-VC","es-VE","es-VG","es-VI","et","et-EE","eu","eu-ES","ewo","ewo-CM","fa","fa-AF","fa-IR","ff","ff-CM","ff-GN","ff-MR","ff-SN","fi","fi-FI","fil","fil-PH","fo","fo-DK","fo-FO","fr","fr-BE","fr-BF","fr-BI","fr-BJ","fr-BL","fr-CA","fr-CD","fr-CF","fr-CG","fr-CH","fr-CI","fr-CM","fr-DJ","fr-DZ","fr-FR","fr-GA","fr-GF","fr-GN","fr-GP","fr-GQ","fr-HT","fr-KM","fr-LU","fr-MA","fr-MC","fr-MF","fr-MG","fr-ML","fr-MQ","fr-MR","fr-MU","fr-NC","fr-NE","fr-PF","fr-PM","fr-RE","fr-RW","fr-SC","fr-SN","fr-SY","fr-TD","fr-TG","fr-TN","fr-VU","fr-WF","fr-YT","fur","fur-IT","fy","fy-NL","ga","ga-IE","gd","gd-GB","gl","gl-ES","gsw","gsw-CH","gsw-FR","gsw-LI","gu","gu-IN","guz","guz-KE","gv","gv-IM","ha","ha-GH","ha-NE","ha-NG","haw","haw-US","he","he-IL","hi","hi-IN","hr","hr-BA","hr-HR","hsb","hsb-DE","hu","hu-HU","hy","hy-AM","id","id-ID","ig","ig-NG","ii","ii-CN","is","is-IS","it","it-CH","it-IT","it-SM","it-VA","iu","iu-CA","ja","ja-JP","jgo","jgo-CM","jmc","jmc-TZ","ka","ka-GE","kab","kab-DZ","kam","kam-KE","kde","kde-TZ","kea","kea-CV","khq","khq-ML","ki","ki-KE","kk","kk-KZ","kkj","kkj-CM","kl","kl-GL","kln","kln-KE","km","km-KH","kn","kn-IN","ko","ko-KP","ko-KR","kok","kok-IN","ks","ks-IN","ksb","ksb-TZ","ksf","ksf-CM","ksh","ksh-DE","kw","kw-GB","ky","ky-KG","lag","lag-TZ","lb","lb-LU","lg","lg-UG","lkt","lkt-US","ln","ln-AO","ln-CD","ln-CF","ln-CG","lo","lo-LA","lrc","lrc-IQ","lrc-IR","lt","lt-LT","lu","lu-CD","luo","luo-KE","luy","luy-KE","lv","lv-LV","mas","mas-KE","mas-TZ","mer","mer-KE","mfe","mfe-MU","mg","mg-MG","mgh","mgh-MZ","mgo","mgo-CM","mk","mk-MK","ml","ml-IN","mn","mn-MN","mr","mr-IN","ms","ms-Arab","ms-Arab-BN","ms-Arab-MY","ms-BN","ms-MY","ms-SG","mt","mt-MT","mua","mua-CM","my","my-MM","mzn","mzn-IR","naq","naq-NA","nb","nb-NO","nb-SJ","nd","nd-ZW","nds","nds-DE","nds-NL","ne","ne-IN","ne-NP","nl","nl-AW","nl-BE","nl-BQ","nl-CW","nl-NL","nl-SR","nl-SX","nmg","nmg-CM","nn","nn-NO","nnh","nnh-CM","nus","nus-SS","nyn","nyn-UG","om","om-ET","om-KE","or","or-IN","os","os-GE","os-RU","pa","pa-Arab","pa-Arab-PK","pa-IN","pl","pl-PL","ps","ps-AF","pt","pt-AO","pt-BR","pt-CH","pt-CV","pt-FR","pt-GQ","pt-GW","pt-LU","pt-MO","pt-MZ","pt-PT","pt-ST","pt-TL","qu","qu-BO","qu-EC","qu-PE","rm","rm-CH","rn","rn-BI","ro","ro-MD","ro-RO","rof","rof-TZ","ru","ru-BY","ru-KG","ru-KZ","ru-MD","ru-RU","ru-UA","rw","rw-RW","rwk","rwk-TZ","sah","sah-RU","saq","saq-KE","sbp","sbp-TZ","se","se-FI","se-NO","se-SE","seh","seh-MZ","ses","ses-ML","sg","sg-CF","shi","shi-MA","shi-Tfng","shi-Tfng-MA","si","si-LK","sk","sk-SK","sl","sl-SI","smn","smn-FI","sn","sn-ZW","so","so-DJ","so-ET","so-KE","so-SO","sq","sq-AL","sq-MK","sq-XK","sr","sr-BA","sr-ME","sr-RS","sr-XK","sr-Latn","sr-Latn-BA","sr-Latn-ME","sr-Latn-RS","sr-Latn-XK","sv","sv-AX","sv-FI","sv-SE","sw","sw-CD","sw-KE","sw-TZ","sw-UG","ta","ta-IN","ta-LK","ta-MY","ta-SG","te","te-IN","teo","teo-KE","teo-UG","tg","tg-TJ","th","th-TH","ti","ti-ER","ti-ET","tk","tk-TM","to","to-TO","tr","tr-CY","tr-TR","twq","twq-NE","tzm","tzm-MA","ug","ug-CN","uk","uk-UA","ur","ur-IN","ur-PK","uz","uz-Arab","uz-Arab-AF","uz-UZ","uz-Latn","uz-Latn-UZ","vai","vai-Latn","vai-Latn-LR","vai-LR","vi","vi-VN","vun","vun-TZ","wae","wae-CH","xog","xog-UG","yav","yav-CM","yi","yi-001","yo","yo-BJ","yo-NG","yue","yue-Hans","yue-Hans-CN","yue-Hant","yue-Hant-HK","zgh","zgh-MA","zh","zh-Hans","zh-Hans-CN","zh-Hans-HK","zh-Hans-MO","zh-Hans-SG","zh-Hant","zh-Hant-HK","zh-Hant-MO","zh-Hant-TW","zu","zu-ZA"
|
50
53
|
],
|
data/lib/run_loop/locale.rb
CHANGED
@@ -84,6 +84,9 @@ module RunLoop
|
|
84
84
|
# value:localeId] cStringUsingEncoding:NSUTF8StringEncoding]);
|
85
85
|
# }
|
86
86
|
LOCALES = {
|
87
|
+
RunLoop::Version.new("12.0") => {
|
88
|
+
"af" => "Afrikaans","af_NA" => "Afrikaans (Namibia)","af_ZA" => "Afrikaans (South Africa)","agq" => "Aghem","agq_CM" => "Aghem (Cameroon)","ak" => "Akan","ak_GH" => "Akan (Ghana)","am" => "Amharic","am_ET" => "Amharic (Ethiopia)","ar" => "Arabic","ar_001" => "Arabic (World)","ar_AE" => "Arabic (United Arab Emirates)","ar_BH" => "Arabic (Bahrain)","ar_DJ" => "Arabic (Djibouti)","ar_DZ" => "Arabic (Algeria)","ar_EG" => "Arabic (Egypt)","ar_EH" => "Arabic (Western Sahara)","ar_ER" => "Arabic (Eritrea)","ar_IL" => "Arabic (Israel)","ar_IQ" => "Arabic (Iraq)","ar_JO" => "Arabic (Jordan)","ar_KM" => "Arabic (Comoros)","ar_KW" => "Arabic (Kuwait)","ar_LB" => "Arabic (Lebanon)","ar_LY" => "Arabic (Libya)","ar_MA" => "Arabic (Morocco)","ar_MR" => "Arabic (Mauritania)","ar_OM" => "Arabic (Oman)","ar_PS" => "Arabic (Palestinian Territories)","ar_QA" => "Arabic (Qatar)","ar_SA" => "Arabic (Saudi Arabia)","ar_SD" => "Arabic (Sudan)","ar_SO" => "Arabic (Somalia)","ar_SS" => "Arabic (South Sudan)","ar_SY" => "Arabic (Syria)","ar_TD" => "Arabic (Chad)","ar_TN" => "Arabic (Tunisia)","ar_YE" => "Arabic (Yemen)","as" => "Assamese","as_IN" => "Assamese (India)","asa" => "Asu","asa_TZ" => "Asu (Tanzania)","ast" => "Asturian","ast_ES" => "Asturian (Spain)","az" => "Azerbaijani","az_Cyrl" => "Azerbaijani (Cyrillic)","az_Cyrl_AZ" => "Azerbaijani (Cyrillic, Azerbaijan)","az_Latn" => "Azerbaijani (Latin)","az_Latn_AZ" => "Azerbaijani (Latin, Azerbaijan)","bas" => "Basaa","bas_CM" => "Basaa (Cameroon)","be" => "Belarusian","be_BY" => "Belarusian (Belarus)","bem" => "Bemba","bem_ZM" => "Bemba (Zambia)","bez" => "Bena","bez_TZ" => "Bena (Tanzania)","bg" => "Bulgarian","bg_BG" => "Bulgarian (Bulgaria)","bm" => "Bambara","bm_ML" => "Bambara (Mali)","bn" => "Bangla","bn_BD" => "Bangla (Bangladesh)","bn_IN" => "Bangla (India)","bo" => "Tibetan","bo_CN" => "Tibetan (China)","bo_IN" => "Tibetan (India)","br" => "Breton","br_FR" => "Breton (France)","brx" => "Bodo","brx_IN" => "Bodo (India)","bs" => "Bosnian","bs_Cyrl" => "Bosnian (Cyrillic)","bs_Cyrl_BA" => "Bosnian (Cyrillic, Bosnia & Herzegovina)","bs_Latn" => "Bosnian (Latin)","bs_Latn_BA" => "Bosnian (Latin, Bosnia & Herzegovina)","ca" => "Catalan","ca_AD" => "Catalan (Andorra)","ca_ES" => "Catalan (Spain)","ca_FR" => "Catalan (France)","ca_IT" => "Catalan (Italy)","ce" => "Chechen","ce_RU" => "Chechen (Russia)","cgg" => "Chiga","cgg_UG" => "Chiga (Uganda)","chr" => "Cherokee","chr_US" => "Cherokee (United States)","ckb" => "Central Kurdish","ckb_IQ" => "Central Kurdish (Iraq)","ckb_IR" => "Central Kurdish (Iran)","cs" => "Czech","cs_CZ" => "Czech (Czechia)","cy" => "Welsh","cy_GB" => "Welsh (United Kingdom)","da" => "Danish","da_DK" => "Danish (Denmark)","da_GL" => "Danish (Greenland)","dav" => "Taita","dav_KE" => "Taita (Kenya)","de" => "German","de_AT" => "German (Austria)","de_BE" => "German (Belgium)","de_CH" => "German (Switzerland)","de_DE" => "German (Germany)","de_IT" => "German (Italy)","de_LI" => "German (Liechtenstein)","de_LU" => "German (Luxembourg)","dje" => "Zarma","dje_NE" => "Zarma (Niger)","dsb" => "Lower Sorbian","dsb_DE" => "Lower Sorbian (Germany)","dua" => "Duala","dua_CM" => "Duala (Cameroon)","dyo" => "Jola-Fonyi","dyo_SN" => "Jola-Fonyi (Senegal)","dz" => "Dzongkha","dz_BT" => "Dzongkha (Bhutan)","ebu" => "Embu","ebu_KE" => "Embu (Kenya)","ee" => "Ewe","ee_GH" => "Ewe (Ghana)","ee_TG" => "Ewe (Togo)","el" => "Greek","el_CY" => "Greek (Cyprus)","el_GR" => "Greek (Greece)","en" => "English","en_001" => "English (World)","en_150" => "English (Europe)","en_AD" => "English (Andorra)","en_AG" => "English (Antigua & Barbuda)","en_AI" => "English (Anguilla)","en_AL" => "English (Albania)","en_AR" => "English (Argentina)","en_AS" => "English (American Samoa)","en_AT" => "English (Austria)","en_AU" => "English (Australia)","en_BA" => "English (Bosnia & Herzegovina)","en_BB" => "English (Barbados)","en_BD" => "English (Bangladesh)","en_BE" => "English (Belgium)","en_BG" => "English (Bulgaria)","en_BI" => "English (Burundi)","en_BM" => "English (Bermuda)","en_BR" => "English (Brazil)","en_BS" => "English (Bahamas)","en_BW" => "English (Botswana)","en_BZ" => "English (Belize)","en_CA" => "English (Canada)","en_CC" => "English (Cocos [Keeling] Islands)","en_CH" => "English (Switzerland)","en_CK" => "English (Cook Islands)","en_CM" => "English (Cameroon)","en_CN" => "English (China)","en_CX" => "English (Christmas Island)","en_CY" => "English (Cyprus)","en_CZ" => "English (Czechia)","en_DE" => "English (Germany)","en_DG" => "English (Diego Garcia)","en_DK" => "English (Denmark)","en_DM" => "English (Dominica)","en_EE" => "English (Estonia)","en_ER" => "English (Eritrea)","en_ES" => "English (Spain)","en_FI" => "English (Finland)","en_FJ" => "English (Fiji)","en_FK" => "English (Falkland Islands)","en_FM" => "English (Micronesia)","en_FR" => "English (France)","en_GB" => "English (United Kingdom)","en_GD" => "English (Grenada)","en_GG" => "English (Guernsey)","en_GH" => "English (Ghana)","en_GI" => "English (Gibraltar)","en_GM" => "English (Gambia)","en_GR" => "English (Greece)","en_GU" => "English (Guam)","en_GY" => "English (Guyana)","en_HK" => "English (Hong Kong [China])","en_HR" => "English (Croatia)","en_HU" => "English (Hungary)","en_ID" => "English (Indonesia)","en_IE" => "English (Ireland)","en_IL" => "English (Israel)","en_IM" => "English (Isle of Man)","en_IN" => "English (India)","en_IO" => "English (British Indian Ocean Territory)","en_IS" => "English (Iceland)","en_IT" => "English (Italy)","en_JE" => "English (Jersey)","en_JM" => "English (Jamaica)","en_JP" => "English (Japan)","en_KE" => "English (Kenya)","en_KI" => "English (Kiribati)","en_KN" => "English (St. Kitts & Nevis)","en_KR" => "English (South Korea)","en_KY" => "English (Cayman Islands)","en_LC" => "English (St. Lucia)","en_LR" => "English (Liberia)","en_LS" => "English (Lesotho)","en_LT" => "English (Lithuania)","en_LU" => "English (Luxembourg)","en_LV" => "English (Latvia)","en_ME" => "English (Montenegro)","en_MG" => "English (Madagascar)","en_MH" => "English (Marshall Islands)","en_MO" => "English (Macau [China])","en_MP" => "English (Northern Mariana Islands)","en_MS" => "English (Montserrat)","en_MT" => "English (Malta)","en_MU" => "English (Mauritius)","en_MV" => "English (Maldives)","en_MW" => "English (Malawi)","en_MY" => "English (Malaysia)","en_NA" => "English (Namibia)","en_NF" => "English (Norfolk Island)","en_NG" => "English (Nigeria)","en_NL" => "English (Netherlands)","en_NO" => "English (Norway)","en_NR" => "English (Nauru)","en_NU" => "English (Niue)","en_NZ" => "English (New Zealand)","en_PG" => "English (Papua New Guinea)","en_PH" => "English (Philippines)","en_PK" => "English (Pakistan)","en_PL" => "English (Poland)","en_PN" => "English (Pitcairn Islands)","en_PR" => "English (Puerto Rico)","en_PT" => "English (Portugal)","en_PW" => "English (Palau)","en_RO" => "English (Romania)","en_RU" => "English (Russia)","en_RW" => "English (Rwanda)","en_SA" => "English (Saudi Arabia)","en_SB" => "English (Solomon Islands)","en_SC" => "English (Seychelles)","en_SD" => "English (Sudan)","en_SE" => "English (Sweden)","en_SG" => "English (Singapore)","en_SH" => "English (St. Helena)","en_SI" => "English (Slovenia)","en_SK" => "English (Slovakia)","en_SL" => "English (Sierra Leone)","en_SS" => "English (South Sudan)","en_SX" => "English (Sint Maarten)","en_SZ" => "English (Swaziland)","en_TC" => "English (Turks & Caicos Islands)","en_TH" => "English (Thailand)","en_TK" => "English (Tokelau)","en_TO" => "English (Tonga)","en_TR" => "English (Turkey)","en_TT" => "English (Trinidad & Tobago)","en_TV" => "English (Tuvalu)","en_TW" => "English (Taiwan)","en_TZ" => "English (Tanzania)","en_UG" => "English (Uganda)","en_UM" => "English (U.S. Outlying Islands)","en_US" => "English (United States)","en_US_POSIX" => "English (United States, Computer)","en_VC" => "English (St. Vincent & Grenadines)","en_VG" => "English (British Virgin Islands)","en_VI" => "English (U.S. Virgin Islands)","en_VU" => "English (Vanuatu)","en_WS" => "English (Samoa)","en_ZA" => "English (South Africa)","en_ZM" => "English (Zambia)","en_ZW" => "English (Zimbabwe)","eo" => "Esperanto","es" => "Spanish","es_419" => "Spanish (Latin America)","es_AG" => "Spanish (Antigua & Barbuda)","es_AI" => "Spanish (Anguilla)","es_AR" => "Spanish (Argentina)","es_AW" => "Spanish (Aruba)","es_BB" => "Spanish (Barbados)","es_BL" => "Spanish (St. Barthélemy)","es_BM" => "Spanish (Bermuda)","es_BO" => "Spanish (Bolivia)","es_BQ" => "Spanish (Caribbean Netherlands)","es_BR" => "Spanish (Brazil)","es_BS" => "Spanish (Bahamas)","es_BZ" => "Spanish (Belize)","es_CA" => "Spanish (Canada)","es_CL" => "Spanish (Chile)","es_CO" => "Spanish (Colombia)","es_CR" => "Spanish (Costa Rica)","es_CU" => "Spanish (Cuba)","es_CW" => "Spanish (Curaçao)","es_DM" => "Spanish (Dominica)","es_DO" => "Spanish (Dominican Republic)","es_EA" => "Spanish (Ceuta & Melilla)","es_EC" => "Spanish (Ecuador)","es_ES" => "Spanish (Spain)","es_FK" => "Spanish (Falkland Islands)","es_GD" => "Spanish (Grenada)","es_GF" => "Spanish (French Guiana)","es_GL" => "Spanish (Greenland)","es_GP" => "Spanish (Guadeloupe)","es_GQ" => "Spanish (Equatorial Guinea)","es_GT" => "Spanish (Guatemala)","es_GY" => "Spanish (Guyana)","es_HN" => "Spanish (Honduras)","es_HT" => "Spanish (Haiti)","es_IC" => "Spanish (Canary Islands)","es_KN" => "Spanish (St. Kitts & Nevis)","es_KY" => "Spanish (Cayman Islands)","es_LC" => "Spanish (St. Lucia)","es_MF" => "Spanish (St. Martin)","es_MQ" => "Spanish (Martinique)","es_MS" => "Spanish (Montserrat)","es_MX" => "Spanish (Mexico)","es_NI" => "Spanish (Nicaragua)","es_PA" => "Spanish (Panama)","es_PE" => "Spanish (Peru)","es_PH" => "Spanish (Philippines)","es_PM" => "Spanish (St. Pierre & Miquelon)","es_PR" => "Spanish (Puerto Rico)","es_PY" => "Spanish (Paraguay)","es_SR" => "Spanish (Suriname)","es_SV" => "Spanish (El Salvador)","es_SX" => "Spanish (Sint Maarten)","es_TC" => "Spanish (Turks & Caicos Islands)","es_TT" => "Spanish (Trinidad & Tobago)","es_US" => "Spanish (United States)","es_UY" => "Spanish (Uruguay)","es_VC" => "Spanish (St. Vincent & Grenadines)","es_VE" => "Spanish (Venezuela)","es_VG" => "Spanish (British Virgin Islands)","es_VI" => "Spanish (U.S. Virgin Islands)","et" => "Estonian","et_EE" => "Estonian (Estonia)","eu" => "Basque","eu_ES" => "Basque (Spain)","ewo" => "Ewondo","ewo_CM" => "Ewondo (Cameroon)","fa" => "Persian","fa_AF" => "Persian (Afghanistan)","fa_IR" => "Persian (Iran)","ff" => "Fulah","ff_CM" => "Fulah (Cameroon)","ff_GN" => "Fulah (Guinea)","ff_MR" => "Fulah (Mauritania)","ff_SN" => "Fulah (Senegal)","fi" => "Finnish","fi_FI" => "Finnish (Finland)","fil" => "Filipino","fil_PH" => "Filipino (Philippines)","fo" => "Faroese","fo_DK" => "Faroese (Denmark)","fo_FO" => "Faroese (Faroe Islands)","fr" => "French","fr_BE" => "French (Belgium)","fr_BF" => "French (Burkina Faso)","fr_BI" => "French (Burundi)","fr_BJ" => "French (Benin)","fr_BL" => "French (St. Barthélemy)","fr_CA" => "French (Canada)","fr_CD" => "French (Congo - Kinshasa)","fr_CF" => "French (Central African Republic)","fr_CG" => "French (Congo - Brazzaville)","fr_CH" => "French (Switzerland)","fr_CI" => "French (Côte d’Ivoire)","fr_CM" => "French (Cameroon)","fr_DJ" => "French (Djibouti)","fr_DZ" => "French (Algeria)","fr_FR" => "French (France)","fr_GA" => "French (Gabon)","fr_GF" => "French (French Guiana)","fr_GN" => "French (Guinea)","fr_GP" => "French (Guadeloupe)","fr_GQ" => "French (Equatorial Guinea)","fr_HT" => "French (Haiti)","fr_KM" => "French (Comoros)","fr_LU" => "French (Luxembourg)","fr_MA" => "French (Morocco)","fr_MC" => "French (Monaco)","fr_MF" => "French (St. Martin)","fr_MG" => "French (Madagascar)","fr_ML" => "French (Mali)","fr_MQ" => "French (Martinique)","fr_MR" => "French (Mauritania)","fr_MU" => "French (Mauritius)","fr_NC" => "French (New Caledonia)","fr_NE" => "French (Niger)","fr_PF" => "French (French Polynesia)","fr_PM" => "French (St. Pierre & Miquelon)","fr_RE" => "French (Réunion)","fr_RW" => "French (Rwanda)","fr_SC" => "French (Seychelles)","fr_SN" => "French (Senegal)","fr_SY" => "French (Syria)","fr_TD" => "French (Chad)","fr_TG" => "French (Togo)","fr_TN" => "French (Tunisia)","fr_VU" => "French (Vanuatu)","fr_WF" => "French (Wallis & Futuna)","fr_YT" => "French (Mayotte)","fur" => "Friulian","fur_IT" => "Friulian (Italy)","fy" => "Western Frisian","fy_NL" => "Western Frisian (Netherlands)","ga" => "Irish","ga_IE" => "Irish (Ireland)","gd" => "Scottish Gaelic","gd_GB" => "Scottish Gaelic (United Kingdom)","gl" => "Galician","gl_ES" => "Galician (Spain)","gsw" => "Swiss German","gsw_CH" => "Swiss German (Switzerland)","gsw_FR" => "Swiss German (France)","gsw_LI" => "Swiss German (Liechtenstein)","gu" => "Gujarati","gu_IN" => "Gujarati (India)","guz" => "Gusii","guz_KE" => "Gusii (Kenya)","gv" => "Manx","gv_IM" => "Manx (Isle of Man)","ha" => "Hausa","ha_GH" => "Hausa (Ghana)","ha_NE" => "Hausa (Niger)","ha_NG" => "Hausa (Nigeria)","haw" => "Hawaiian","haw_US" => "Hawaiian (United States)","he" => "Hebrew","he_IL" => "Hebrew (Israel)","hi" => "Hindi","hi_IN" => "Hindi (India)","hr" => "Croatian","hr_BA" => "Croatian (Bosnia & Herzegovina)","hr_HR" => "Croatian (Croatia)","hsb" => "Upper Sorbian","hsb_DE" => "Upper Sorbian (Germany)","hu" => "Hungarian","hu_HU" => "Hungarian (Hungary)","hy" => "Armenian","hy_AM" => "Armenian (Armenia)","id" => "Indonesian","id_ID" => "Indonesian (Indonesia)","ig" => "Igbo","ig_NG" => "Igbo (Nigeria)","ii" => "Sichuan Yi","ii_CN" => "Sichuan Yi (China)","is" => "Icelandic","is_IS" => "Icelandic (Iceland)","it" => "Italian","it_CH" => "Italian (Switzerland)","it_IT" => "Italian (Italy)","it_SM" => "Italian (San Marino)","it_VA" => "Italian (Vatican City)","iu" => "Inuktitut","iu_CA" => "Inuktitut (Canada)","ja" => "Japanese","ja_JP" => "Japanese (Japan)","jgo" => "Ngomba","jgo_CM" => "Ngomba (Cameroon)","jmc" => "Machame","jmc_TZ" => "Machame (Tanzania)","ka" => "Georgian","ka_GE" => "Georgian (Georgia)","kab" => "Kabyle","kab_DZ" => "Kabyle (Algeria)","kam" => "Kamba","kam_KE" => "Kamba (Kenya)","kde" => "Makonde","kde_TZ" => "Makonde (Tanzania)","kea" => "Kabuverdianu","kea_CV" => "Kabuverdianu (Cape Verde)","khq" => "Koyra Chiini","khq_ML" => "Koyra Chiini (Mali)","ki" => "Kikuyu","ki_KE" => "Kikuyu (Kenya)","kk" => "Kazakh","kk_KZ" => "Kazakh (Kazakhstan)","kkj" => "Kako","kkj_CM" => "Kako (Cameroon)","kl" => "Kalaallisut","kl_GL" => "Kalaallisut (Greenland)","kln" => "Kalenjin","kln_KE" => "Kalenjin (Kenya)","km" => "Khmer","km_KH" => "Khmer (Cambodia)","kn" => "Kannada","kn_IN" => "Kannada (India)","ko" => "Korean","ko_KP" => "Korean (North Korea)","ko_KR" => "Korean (South Korea)","kok" => "Konkani","kok_IN" => "Konkani (India)","ks" => "Kashmiri","ks_IN" => "Kashmiri (India)","ksb" => "Shambala","ksb_TZ" => "Shambala (Tanzania)","ksf" => "Bafia","ksf_CM" => "Bafia (Cameroon)","ksh" => "Colognian","ksh_DE" => "Colognian (Germany)","kw" => "Cornish","kw_GB" => "Cornish (United Kingdom)","ky" => "Kyrgyz","ky_KG" => "Kyrgyz (Kyrgyzstan)","lag" => "Langi","lag_TZ" => "Langi (Tanzania)","lb" => "Luxembourgish","lb_LU" => "Luxembourgish (Luxembourg)","lg" => "Ganda","lg_UG" => "Ganda (Uganda)","lkt" => "Lakota","lkt_US" => "Lakota (United States)","ln" => "Lingala","ln_AO" => "Lingala (Angola)","ln_CD" => "Lingala (Congo - Kinshasa)","ln_CF" => "Lingala (Central African Republic)","ln_CG" => "Lingala (Congo - Brazzaville)","lo" => "Lao","lo_LA" => "Lao (Laos)","lrc" => "Northern Luri","lrc_IQ" => "Northern Luri (Iraq)","lrc_IR" => "Northern Luri (Iran)","lt" => "Lithuanian","lt_LT" => "Lithuanian (Lithuania)","lu" => "Luba-Katanga","lu_CD" => "Luba-Katanga (Congo - Kinshasa)","luo" => "Luo","luo_KE" => "Luo (Kenya)","luy" => "Luyia","luy_KE" => "Luyia (Kenya)","lv" => "Latvian","lv_LV" => "Latvian (Latvia)","mas" => "Masai","mas_KE" => "Masai (Kenya)","mas_TZ" => "Masai (Tanzania)","mer" => "Meru","mer_KE" => "Meru (Kenya)","mfe" => "Morisyen","mfe_MU" => "Morisyen (Mauritius)","mg" => "Malagasy","mg_MG" => "Malagasy (Madagascar)","mgh" => "Makhuwa-Meetto","mgh_MZ" => "Makhuwa-Meetto (Mozambique)","mgo" => "Metaʼ","mgo_CM" => "Metaʼ (Cameroon)","mk" => "Macedonian","mk_MK" => "Macedonian (Macedonia)","ml" => "Malayalam","ml_IN" => "Malayalam (India)","mn" => "Mongolian","mn_MN" => "Mongolian (Mongolia)","mr" => "Marathi","mr_IN" => "Marathi (India)","ms" => "Malay","ms_Arab" => "Malay (Arabic)","ms_Arab_BN" => "Malay (Arabic, Brunei)","ms_Arab_MY" => "Malay (Arabic, Malaysia)","ms_BN" => "Malay (Brunei)","ms_MY" => "Malay (Malaysia)","ms_SG" => "Malay (Singapore)","mt" => "Maltese","mt_MT" => "Maltese (Malta)","mua" => "Mundang","mua_CM" => "Mundang (Cameroon)","my" => "Burmese","my_MM" => "Burmese (Myanmar [Burma])","mzn" => "Mazanderani","mzn_IR" => "Mazanderani (Iran)","naq" => "Nama","naq_NA" => "Nama (Namibia)","nb" => "Norwegian Bokmål","nb_NO" => "Norwegian Bokmål (Norway)","nb_SJ" => "Norwegian Bokmål (Svalbard & Jan Mayen)","nd" => "North Ndebele","nd_ZW" => "North Ndebele (Zimbabwe)","nds" => "Low German","nds_DE" => "Low German (Germany)","nds_NL" => "Low German (Netherlands)","ne" => "Nepali","ne_IN" => "Nepali (India)","ne_NP" => "Nepali (Nepal)","nl" => "Dutch","nl_AW" => "Dutch (Aruba)","nl_BE" => "Dutch (Belgium)","nl_BQ" => "Dutch (Caribbean Netherlands)","nl_CW" => "Dutch (Curaçao)","nl_NL" => "Dutch (Netherlands)","nl_SR" => "Dutch (Suriname)","nl_SX" => "Dutch (Sint Maarten)","nmg" => "Kwasio","nmg_CM" => "Kwasio (Cameroon)","nn" => "Norwegian Nynorsk","nn_NO" => "Norwegian Nynorsk (Norway)","nnh" => "Ngiemboon","nnh_CM" => "Ngiemboon (Cameroon)","nus" => "Nuer","nus_SS" => "Nuer (South Sudan)","nyn" => "Nyankole","nyn_UG" => "Nyankole (Uganda)","om" => "Oromo","om_ET" => "Oromo (Ethiopia)","om_KE" => "Oromo (Kenya)","or" => "Odia","or_IN" => "Odia (India)","os" => "Ossetic","os_GE" => "Ossetic (Georgia)","os_RU" => "Ossetic (Russia)","pa" => "Punjabi","pa_Arab" => "Punjabi (Arabic)","pa_Arab_PK" => "Punjabi (Arabic, Pakistan)","pa_Guru" => "Punjabi (Gurmukhi)","pa_Guru_IN" => "Punjabi (Gurmukhi, India)","pl" => "Polish","pl_PL" => "Polish (Poland)","ps" => "Pashto","ps_AF" => "Pashto (Afghanistan)","pt" => "Portuguese","pt_AO" => "Portuguese (Angola)","pt_BR" => "Portuguese (Brazil)","pt_CH" => "Portuguese (Switzerland)","pt_CV" => "Portuguese (Cape Verde)","pt_FR" => "Portuguese (France)","pt_GQ" => "Portuguese (Equatorial Guinea)","pt_GW" => "Portuguese (Guinea-Bissau)","pt_LU" => "Portuguese (Luxembourg)","pt_MO" => "Portuguese (Macau [China])","pt_MZ" => "Portuguese (Mozambique)","pt_PT" => "Portuguese (Portugal)","pt_ST" => "Portuguese (São Tomé & Príncipe)","pt_TL" => "Portuguese (Timor-Leste)","qu" => "Quechua","qu_BO" => "Quechua (Bolivia)","qu_EC" => "Quechua (Ecuador)","qu_PE" => "Quechua (Peru)","rm" => "Romansh","rm_CH" => "Romansh (Switzerland)","rn" => "Rundi","rn_BI" => "Rundi (Burundi)","ro" => "Romanian","ro_MD" => "Romanian (Moldova)","ro_RO" => "Romanian (Romania)","rof" => "Rombo","rof_TZ" => "Rombo (Tanzania)","ru" => "Russian","ru_BY" => "Russian (Belarus)","ru_KG" => "Russian (Kyrgyzstan)","ru_KZ" => "Russian (Kazakhstan)","ru_MD" => "Russian (Moldova)","ru_RU" => "Russian (Russia)","ru_UA" => "Russian (Ukraine)","rw" => "Kinyarwanda","rw_RW" => "Kinyarwanda (Rwanda)","rwk" => "Rwa","rwk_TZ" => "Rwa (Tanzania)","sah" => "Sakha","sah_RU" => "Sakha (Russia)","saq" => "Samburu","saq_KE" => "Samburu (Kenya)","sbp" => "Sangu","sbp_TZ" => "Sangu (Tanzania)","se" => "Northern Sami","se_FI" => "Northern Sami (Finland)","se_NO" => "Northern Sami (Norway)","se_SE" => "Northern Sami (Sweden)","seh" => "Sena","seh_MZ" => "Sena (Mozambique)","ses" => "Koyraboro Senni","ses_ML" => "Koyraboro Senni (Mali)","sg" => "Sango","sg_CF" => "Sango (Central African Republic)","shi" => "Tachelhit","shi_Latn" => "Tachelhit (Latin)","shi_Latn_MA" => "Tachelhit (Latin, Morocco)","shi_Tfng" => "Tachelhit (Tifinagh)","shi_Tfng_MA" => "Tachelhit (Tifinagh, Morocco)","si" => "Sinhala","si_LK" => "Sinhala (Sri Lanka)","sk" => "Slovak","sk_SK" => "Slovak (Slovakia)","sl" => "Slovenian","sl_SI" => "Slovenian (Slovenia)","smn" => "Inari Sami","smn_FI" => "Inari Sami (Finland)","sn" => "Shona","sn_ZW" => "Shona (Zimbabwe)","so" => "Somali","so_DJ" => "Somali (Djibouti)","so_ET" => "Somali (Ethiopia)","so_KE" => "Somali (Kenya)","so_SO" => "Somali (Somalia)","sq" => "Albanian","sq_AL" => "Albanian (Albania)","sq_MK" => "Albanian (Macedonia)","sq_XK" => "Albanian (Kosovo)","sr" => "Serbian","sr_Cyrl" => "Serbian (Cyrillic)","sr_Cyrl_BA" => "Serbian (Cyrillic, Bosnia & Herzegovina)","sr_Cyrl_ME" => "Serbian (Cyrillic, Montenegro)","sr_Cyrl_RS" => "Serbian (Cyrillic, Serbia)","sr_Cyrl_XK" => "Serbian (Cyrillic, Kosovo)","sr_Latn" => "Serbian (Latin)","sr_Latn_BA" => "Serbian (Latin, Bosnia & Herzegovina)","sr_Latn_ME" => "Serbian (Latin, Montenegro)","sr_Latn_RS" => "Serbian (Latin, Serbia)","sr_Latn_XK" => "Serbian (Latin, Kosovo)","sv" => "Swedish","sv_AX" => "Swedish (Åland Islands)","sv_FI" => "Swedish (Finland)","sv_SE" => "Swedish (Sweden)","sw" => "Swahili","sw_CD" => "Swahili (Congo - Kinshasa)","sw_KE" => "Swahili (Kenya)","sw_TZ" => "Swahili (Tanzania)","sw_UG" => "Swahili (Uganda)","ta" => "Tamil","ta_IN" => "Tamil (India)","ta_LK" => "Tamil (Sri Lanka)","ta_MY" => "Tamil (Malaysia)","ta_SG" => "Tamil (Singapore)","te" => "Telugu","te_IN" => "Telugu (India)","teo" => "Teso","teo_KE" => "Teso (Kenya)","teo_UG" => "Teso (Uganda)","tg" => "Tajik","tg_TJ" => "Tajik (Tajikistan)","th" => "Thai","th_TH" => "Thai (Thailand)","ti" => "Tigrinya","ti_ER" => "Tigrinya (Eritrea)","ti_ET" => "Tigrinya (Ethiopia)","tk" => "Turkmen","tk_TM" => "Turkmen (Turkmenistan)","to" => "Tongan","to_TO" => "Tongan (Tonga)","tr" => "Turkish","tr_CY" => "Turkish (Cyprus)","tr_TR" => "Turkish (Turkey)","twq" => "Tasawaq","twq_NE" => "Tasawaq (Niger)","tzm" => "Central Atlas Tamazight","tzm_MA" => "Central Atlas Tamazight (Morocco)","ug" => "Uyghur","ug_CN" => "Uyghur (China)","uk" => "Ukrainian","uk_UA" => "Ukrainian (Ukraine)","ur" => "Urdu","ur_IN" => "Urdu (India)","ur_PK" => "Urdu (Pakistan)","uz" => "Uzbek","uz_Arab" => "Uzbek (Arabic)","uz_Arab_AF" => "Uzbek (Arabic, Afghanistan)","uz_Cyrl" => "Uzbek (Cyrillic)","uz_Cyrl_UZ" => "Uzbek (Cyrillic, Uzbekistan)","uz_Latn" => "Uzbek (Latin)","uz_Latn_UZ" => "Uzbek (Latin, Uzbekistan)","vai" => "Vai","vai_Latn" => "Vai (Latin)","vai_Latn_LR" => "Vai (Latin, Liberia)","vai_Vaii" => "Vai (Vai)","vai_Vaii_LR" => "Vai (Vai, Liberia)","vi" => "Vietnamese","vi_VN" => "Vietnamese (Vietnam)","vun" => "Vunjo","vun_TZ" => "Vunjo (Tanzania)","wae" => "Walser","wae_CH" => "Walser (Switzerland)","xog" => "Soga","xog_UG" => "Soga (Uganda)","yav" => "Yangben","yav_CM" => "Yangben (Cameroon)","yi" => "Yiddish","yi_001" => "Yiddish (World)","yo" => "Yoruba","yo_BJ" => "Yoruba (Benin)","yo_NG" => "Yoruba (Nigeria)","yue" => "Cantonese","yue_Hans" => "Cantonese (Simplified)","yue_Hans_CN" => "Cantonese (Simplified, China)","yue_Hant" => "Cantonese (Traditional)","yue_Hant_HK" => "Cantonese (Traditional, Hong Kong [China])","zgh" => "Standard Moroccan Tamazight","zgh_MA" => "Standard Moroccan Tamazight (Morocco)","zh" => "Chinese","zh_Hans" => "Chinese (Simplified)","zh_Hans_CN" => "Chinese (Simplified, China)","zh_Hans_HK" => "Chinese (Simplified, Hong Kong [China])","zh_Hans_MO" => "Chinese (Simplified, Macau [China])","zh_Hans_SG" => "Chinese (Simplified, Singapore)","zh_Hant" => "Chinese (Traditional)","zh_Hant_HK" => "Chinese (Traditional, Hong Kong [China])","zh_Hant_MO" => "Chinese (Traditional, Macau [China])","zh_Hant_TW" => "Chinese (Traditional, Taiwan)","zu" => "Zulu","zu_ZA" => "Zulu (South Africa)"
|
89
|
+
},
|
87
90
|
RunLoop::Version.new("11.0") => {
|
88
91
|
"af" => "Afrikaans","af_NA" => "Afrikaans (Namibia)","af_ZA" => "Afrikaans (South Africa)","agq" => "Aghem","agq_CM" => "Aghem (Cameroon)","ak" => "Akan","ak_GH" => "Akan (Ghana)","am" => "Amharic","am_ET" => "Amharic (Ethiopia)","ar" => "Arabic","ar_001" => "Arabic (World)","ar_AE" => "Arabic (United Arab Emirates)","ar_BH" => "Arabic (Bahrain)","ar_DJ" => "Arabic (Djibouti)","ar_DZ" => "Arabic (Algeria)","ar_EG" => "Arabic (Egypt)","ar_EH" => "Arabic (Western Sahara)","ar_ER" => "Arabic (Eritrea)","ar_IL" => "Arabic (Israel)","ar_IQ" => "Arabic (Iraq)","ar_JO" => "Arabic (Jordan)","ar_KM" => "Arabic (Comoros)","ar_KW" => "Arabic (Kuwait)","ar_LB" => "Arabic (Lebanon)","ar_LY" => "Arabic (Libya)","ar_MA" => "Arabic (Morocco)","ar_MR" => "Arabic (Mauritania)","ar_OM" => "Arabic (Oman)","ar_PS" => "Arabic (Palestinian Territories)","ar_QA" => "Arabic (Qatar)","ar_SA" => "Arabic (Saudi Arabia)","ar_SD" => "Arabic (Sudan)","ar_SO" => "Arabic (Somalia)","ar_SS" => "Arabic (South Sudan)","ar_SY" => "Arabic (Syria)","ar_TD" => "Arabic (Chad)","ar_TN" => "Arabic (Tunisia)","ar_YE" => "Arabic (Yemen)","as" => "Assamese","as_IN" => "Assamese (India)","asa" => "Asu","asa_TZ" => "Asu (Tanzania)","ast" => "Asturian","ast_ES" => "Asturian (Spain)","az" => "Azerbaijani","az_Cyrl" => "Azerbaijani (Cyrillic)","az_Cyrl_AZ" => "Azerbaijani (Cyrillic, Azerbaijan)","az_Latn" => "Azerbaijani (Latin)","az_Latn_AZ" => "Azerbaijani (Latin, Azerbaijan)","bas" => "Basaa","bas_CM" => "Basaa (Cameroon)","be" => "Belarusian","be_BY" => "Belarusian (Belarus)","bem" => "Bemba","bem_ZM" => "Bemba (Zambia)","bez" => "Bena","bez_TZ" => "Bena (Tanzania)","bg" => "Bulgarian","bg_BG" => "Bulgarian (Bulgaria)","bm" => "Bambara","bm_ML" => "Bambara (Mali)","bn" => "Bangla","bn_BD" => "Bangla (Bangladesh)","bn_IN" => "Bangla (India)","bo" => "Tibetan","bo_CN" => "Tibetan (China)","bo_IN" => "Tibetan (India)","br" => "Breton","br_FR" => "Breton (France)","brx" => "Bodo","brx_IN" => "Bodo (India)","bs" => "Bosnian","bs_Cyrl" => "Bosnian (Cyrillic)","bs_Cyrl_BA" => "Bosnian (Cyrillic, Bosnia & Herzegovina)","bs_Latn" => "Bosnian (Latin)","bs_Latn_BA" => "Bosnian (Latin, Bosnia & Herzegovina)","ca" => "Catalan","ca_AD" => "Catalan (Andorra)","ca_ES" => "Catalan (Spain)","ca_FR" => "Catalan (France)","ca_IT" => "Catalan (Italy)","ce" => "Chechen","ce_RU" => "Chechen (Russia)","cgg" => "Chiga","cgg_UG" => "Chiga (Uganda)","chr" => "Cherokee","chr_US" => "Cherokee (United States)","ckb" => "Central Kurdish","ckb_IQ" => "Central Kurdish (Iraq)","ckb_IR" => "Central Kurdish (Iran)","cs" => "Czech","cs_CZ" => "Czech (Czechia)","cy" => "Welsh","cy_GB" => "Welsh (United Kingdom)","da" => "Danish","da_DK" => "Danish (Denmark)","da_GL" => "Danish (Greenland)","dav" => "Taita","dav_KE" => "Taita (Kenya)","de" => "German","de_AT" => "German (Austria)","de_BE" => "German (Belgium)","de_CH" => "German (Switzerland)","de_DE" => "German (Germany)","de_IT" => "German (Italy)","de_LI" => "German (Liechtenstein)","de_LU" => "German (Luxembourg)","dje" => "Zarma","dje_NE" => "Zarma (Niger)","dsb" => "Lower Sorbian","dsb_DE" => "Lower Sorbian (Germany)","dua" => "Duala","dua_CM" => "Duala (Cameroon)","dyo" => "Jola-Fonyi","dyo_SN" => "Jola-Fonyi (Senegal)","dz" => "Dzongkha","dz_BT" => "Dzongkha (Bhutan)","ebu" => "Embu","ebu_KE" => "Embu (Kenya)","ee" => "Ewe","ee_GH" => "Ewe (Ghana)","ee_TG" => "Ewe (Togo)","el" => "Greek","el_CY" => "Greek (Cyprus)","el_GR" => "Greek (Greece)","en" => "English","en_001" => "English (World)","en_150" => "English (Europe)","en_AD" => "English (Andorra)","en_AG" => "English (Antigua & Barbuda)","en_AI" => "English (Anguilla)","en_AL" => "English (Albania)","en_AR" => "English (Argentina)","en_AS" => "English (American Samoa)","en_AT" => "English (Austria)","en_AU" => "English (Australia)","en_BA" => "English (Bosnia & Herzegovina)","en_BB" => "English (Barbados)","en_BD" => "English (Bangladesh)","en_BE" => "English (Belgium)","en_BG" => "English (Bulgaria)","en_BI" => "English (Burundi)","en_BM" => "English (Bermuda)","en_BR" => "English (Brazil)","en_BS" => "English (Bahamas)","en_BW" => "English (Botswana)","en_BZ" => "English (Belize)","en_CA" => "English (Canada)","en_CC" => "English (Cocos [Keeling] Islands)","en_CH" => "English (Switzerland)","en_CK" => "English (Cook Islands)","en_CM" => "English (Cameroon)","en_CN" => "English (China)","en_CX" => "English (Christmas Island)","en_CY" => "English (Cyprus)","en_CZ" => "English (Czechia)","en_DE" => "English (Germany)","en_DG" => "English (Diego Garcia)","en_DK" => "English (Denmark)","en_DM" => "English (Dominica)","en_EE" => "English (Estonia)","en_ER" => "English (Eritrea)","en_ES" => "English (Spain)","en_FI" => "English (Finland)","en_FJ" => "English (Fiji)","en_FK" => "English (Falkland Islands)","en_FM" => "English (Micronesia)","en_FR" => "English (France)","en_GB" => "English (United Kingdom)","en_GD" => "English (Grenada)","en_GG" => "English (Guernsey)","en_GH" => "English (Ghana)","en_GI" => "English (Gibraltar)","en_GM" => "English (Gambia)","en_GR" => "English (Greece)","en_GU" => "English (Guam)","en_GY" => "English (Guyana)","en_HK" => "English (Hong Kong [China])","en_HR" => "English (Croatia)","en_HU" => "English (Hungary)","en_ID" => "English (Indonesia)","en_IE" => "English (Ireland)","en_IL" => "English (Israel)","en_IM" => "English (Isle of Man)","en_IN" => "English (India)","en_IO" => "English (British Indian Ocean Territory)","en_IS" => "English (Iceland)","en_IT" => "English (Italy)","en_JE" => "English (Jersey)","en_JM" => "English (Jamaica)","en_JP" => "English (Japan)","en_KE" => "English (Kenya)","en_KI" => "English (Kiribati)","en_KN" => "English (St. Kitts & Nevis)","en_KR" => "English (South Korea)","en_KY" => "English (Cayman Islands)","en_LC" => "English (St. Lucia)","en_LR" => "English (Liberia)","en_LS" => "English (Lesotho)","en_LT" => "English (Lithuania)","en_LU" => "English (Luxembourg)","en_LV" => "English (Latvia)","en_ME" => "English (Montenegro)","en_MG" => "English (Madagascar)","en_MH" => "English (Marshall Islands)","en_MO" => "English (Macau [China])","en_MP" => "English (Northern Mariana Islands)","en_MS" => "English (Montserrat)","en_MT" => "English (Malta)","en_MU" => "English (Mauritius)","en_MV" => "English (Maldives)","en_MW" => "English (Malawi)","en_MY" => "English (Malaysia)","en_NA" => "English (Namibia)","en_NF" => "English (Norfolk Island)","en_NG" => "English (Nigeria)","en_NL" => "English (Netherlands)","en_NO" => "English (Norway)","en_NR" => "English (Nauru)","en_NU" => "English (Niue)","en_NZ" => "English (New Zealand)","en_PG" => "English (Papua New Guinea)","en_PH" => "English (Philippines)","en_PK" => "English (Pakistan)","en_PL" => "English (Poland)","en_PN" => "English (Pitcairn Islands)","en_PR" => "English (Puerto Rico)","en_PT" => "English (Portugal)","en_PW" => "English (Palau)","en_RO" => "English (Romania)","en_RU" => "English (Russia)","en_RW" => "English (Rwanda)","en_SA" => "English (Saudi Arabia)","en_SB" => "English (Solomon Islands)","en_SC" => "English (Seychelles)","en_SD" => "English (Sudan)","en_SE" => "English (Sweden)","en_SG" => "English (Singapore)","en_SH" => "English (St. Helena)","en_SI" => "English (Slovenia)","en_SK" => "English (Slovakia)","en_SL" => "English (Sierra Leone)","en_SS" => "English (South Sudan)","en_SX" => "English (Sint Maarten)","en_SZ" => "English (Swaziland)","en_TC" => "English (Turks & Caicos Islands)","en_TH" => "English (Thailand)","en_TK" => "English (Tokelau)","en_TO" => "English (Tonga)","en_TR" => "English (Turkey)","en_TT" => "English (Trinidad & Tobago)","en_TV" => "English (Tuvalu)","en_TW" => "English (Taiwan)","en_TZ" => "English (Tanzania)","en_UG" => "English (Uganda)","en_UM" => "English (U.S. Outlying Islands)","en_US" => "English (United States)","en_US_POSIX" => "English (United States, Computer)","en_VC" => "English (St. Vincent & Grenadines)","en_VG" => "English (British Virgin Islands)","en_VI" => "English (U.S. Virgin Islands)","en_VU" => "English (Vanuatu)","en_WS" => "English (Samoa)","en_ZA" => "English (South Africa)","en_ZM" => "English (Zambia)","en_ZW" => "English (Zimbabwe)","eo" => "Esperanto","es" => "Spanish","es_419" => "Spanish (Latin America)","es_AG" => "Spanish (Antigua & Barbuda)","es_AI" => "Spanish (Anguilla)","es_AR" => "Spanish (Argentina)","es_AW" => "Spanish (Aruba)","es_BB" => "Spanish (Barbados)","es_BL" => "Spanish (St. Barthélemy)","es_BM" => "Spanish (Bermuda)","es_BO" => "Spanish (Bolivia)","es_BQ" => "Spanish (Caribbean Netherlands)","es_BR" => "Spanish (Brazil)","es_BS" => "Spanish (Bahamas)","es_BZ" => "Spanish (Belize)","es_CL" => "Spanish (Chile)","es_CO" => "Spanish (Colombia)","es_CR" => "Spanish (Costa Rica)","es_CU" => "Spanish (Cuba)","es_CW" => "Spanish (Curaçao)","es_DM" => "Spanish (Dominica)","es_DO" => "Spanish (Dominican Republic)","es_EA" => "Spanish (Ceuta & Melilla)","es_EC" => "Spanish (Ecuador)","es_ES" => "Spanish (Spain)","es_FK" => "Spanish (Falkland Islands)","es_GD" => "Spanish (Grenada)","es_GF" => "Spanish (French Guiana)","es_GL" => "Spanish (Greenland)","es_GP" => "Spanish (Guadeloupe)","es_GQ" => "Spanish (Equatorial Guinea)","es_GT" => "Spanish (Guatemala)","es_GY" => "Spanish (Guyana)","es_HN" => "Spanish (Honduras)","es_HT" => "Spanish (Haiti)","es_IC" => "Spanish (Canary Islands)","es_KN" => "Spanish (St. Kitts & Nevis)","es_KY" => "Spanish (Cayman Islands)","es_LC" => "Spanish (St. Lucia)","es_MF" => "Spanish (St. Martin)","es_MQ" => "Spanish (Martinique)","es_MS" => "Spanish (Montserrat)","es_MX" => "Spanish (Mexico)","es_NI" => "Spanish (Nicaragua)","es_PA" => "Spanish (Panama)","es_PE" => "Spanish (Peru)","es_PH" => "Spanish (Philippines)","es_PM" => "Spanish (St. Pierre & Miquelon)","es_PR" => "Spanish (Puerto Rico)","es_PY" => "Spanish (Paraguay)","es_SR" => "Spanish (Suriname)","es_SV" => "Spanish (El Salvador)","es_SX" => "Spanish (Sint Maarten)","es_TC" => "Spanish (Turks & Caicos Islands)","es_TT" => "Spanish (Trinidad & Tobago)","es_US" => "Spanish (United States)","es_UY" => "Spanish (Uruguay)","es_VC" => "Spanish (St. Vincent & Grenadines)","es_VE" => "Spanish (Venezuela)","es_VG" => "Spanish (British Virgin Islands)","es_VI" => "Spanish (U.S. Virgin Islands)","et" => "Estonian","et_EE" => "Estonian (Estonia)","eu" => "Basque","eu_ES" => "Basque (Spain)","ewo" => "Ewondo","ewo_CM" => "Ewondo (Cameroon)","fa" => "Persian","fa_AF" => "Persian (Afghanistan)","fa_IR" => "Persian (Iran)","ff" => "Fulah","ff_CM" => "Fulah (Cameroon)","ff_GN" => "Fulah (Guinea)","ff_MR" => "Fulah (Mauritania)","ff_SN" => "Fulah (Senegal)","fi" => "Finnish","fi_FI" => "Finnish (Finland)","fil" => "Filipino","fil_PH" => "Filipino (Philippines)","fo" => "Faroese","fo_DK" => "Faroese (Denmark)","fo_FO" => "Faroese (Faroe Islands)","fr" => "French","fr_BE" => "French (Belgium)","fr_BF" => "French (Burkina Faso)","fr_BI" => "French (Burundi)","fr_BJ" => "French (Benin)","fr_BL" => "French (St. Barthélemy)","fr_CA" => "French (Canada)","fr_CD" => "French (Congo - Kinshasa)","fr_CF" => "French (Central African Republic)","fr_CG" => "French (Congo - Brazzaville)","fr_CH" => "French (Switzerland)","fr_CI" => "French (Côte d’Ivoire)","fr_CM" => "French (Cameroon)","fr_DJ" => "French (Djibouti)","fr_DZ" => "French (Algeria)","fr_FR" => "French (France)","fr_GA" => "French (Gabon)","fr_GF" => "French (French Guiana)","fr_GN" => "French (Guinea)","fr_GP" => "French (Guadeloupe)","fr_GQ" => "French (Equatorial Guinea)","fr_HT" => "French (Haiti)","fr_KM" => "French (Comoros)","fr_LU" => "French (Luxembourg)","fr_MA" => "French (Morocco)","fr_MC" => "French (Monaco)","fr_MF" => "French (St. Martin)","fr_MG" => "French (Madagascar)","fr_ML" => "French (Mali)","fr_MQ" => "French (Martinique)","fr_MR" => "French (Mauritania)","fr_MU" => "French (Mauritius)","fr_NC" => "French (New Caledonia)","fr_NE" => "French (Niger)","fr_PF" => "French (French Polynesia)","fr_PM" => "French (St. Pierre & Miquelon)","fr_RE" => "French (Réunion)","fr_RW" => "French (Rwanda)","fr_SC" => "French (Seychelles)","fr_SN" => "French (Senegal)","fr_SY" => "French (Syria)","fr_TD" => "French (Chad)","fr_TG" => "French (Togo)","fr_TN" => "French (Tunisia)","fr_VU" => "French (Vanuatu)","fr_WF" => "French (Wallis & Futuna)","fr_YT" => "French (Mayotte)","fur" => "Friulian","fur_IT" => "Friulian (Italy)","fy" => "Western Frisian","fy_NL" => "Western Frisian (Netherlands)","ga" => "Irish","ga_IE" => "Irish (Ireland)","gd" => "Scottish Gaelic","gd_GB" => "Scottish Gaelic (United Kingdom)","gl" => "Galician","gl_ES" => "Galician (Spain)","gsw" => "Swiss German","gsw_CH" => "Swiss German (Switzerland)","gsw_FR" => "Swiss German (France)","gsw_LI" => "Swiss German (Liechtenstein)","gu" => "Gujarati","gu_IN" => "Gujarati (India)","guz" => "Gusii","guz_KE" => "Gusii (Kenya)","gv" => "Manx","gv_IM" => "Manx (Isle of Man)","ha" => "Hausa","ha_GH" => "Hausa (Ghana)","ha_NE" => "Hausa (Niger)","ha_NG" => "Hausa (Nigeria)","haw" => "Hawaiian","haw_US" => "Hawaiian (United States)","he" => "Hebrew","he_IL" => "Hebrew (Israel)","hi" => "Hindi","hi_IN" => "Hindi (India)","hr" => "Croatian","hr_BA" => "Croatian (Bosnia & Herzegovina)","hr_HR" => "Croatian (Croatia)","hsb" => "Upper Sorbian","hsb_DE" => "Upper Sorbian (Germany)","hu" => "Hungarian","hu_HU" => "Hungarian (Hungary)","hy" => "Armenian","hy_AM" => "Armenian (Armenia)","id" => "Indonesian","id_ID" => "Indonesian (Indonesia)","ig" => "Igbo","ig_NG" => "Igbo (Nigeria)","ii" => "Sichuan Yi","ii_CN" => "Sichuan Yi (China)","is" => "Icelandic","is_IS" => "Icelandic (Iceland)","it" => "Italian","it_CH" => "Italian (Switzerland)","it_IT" => "Italian (Italy)","it_SM" => "Italian (San Marino)","it_VA" => "Italian (Vatican City)","iu" => "Inuktitut","iu_CA" => "Inuktitut (Canada)","ja" => "Japanese","ja_JP" => "Japanese (Japan)","jgo" => "Ngomba","jgo_CM" => "Ngomba (Cameroon)","jmc" => "Machame","jmc_TZ" => "Machame (Tanzania)","ka" => "Georgian","ka_GE" => "Georgian (Georgia)","kab" => "Kabyle","kab_DZ" => "Kabyle (Algeria)","kam" => "Kamba","kam_KE" => "Kamba (Kenya)","kde" => "Makonde","kde_TZ" => "Makonde (Tanzania)","kea" => "Kabuverdianu","kea_CV" => "Kabuverdianu (Cape Verde)","khq" => "Koyra Chiini","khq_ML" => "Koyra Chiini (Mali)","ki" => "Kikuyu","ki_KE" => "Kikuyu (Kenya)","kk" => "Kazakh","kk_KZ" => "Kazakh (Kazakhstan)","kkj" => "Kako","kkj_CM" => "Kako (Cameroon)","kl" => "Kalaallisut","kl_GL" => "Kalaallisut (Greenland)","kln" => "Kalenjin","kln_KE" => "Kalenjin (Kenya)","km" => "Khmer","km_KH" => "Khmer (Cambodia)","kn" => "Kannada","kn_IN" => "Kannada (India)","ko" => "Korean","ko_KP" => "Korean (North Korea)","ko_KR" => "Korean (South Korea)","kok" => "Konkani","kok_IN" => "Konkani (India)","ks" => "Kashmiri","ks_IN" => "Kashmiri (India)","ksb" => "Shambala","ksb_TZ" => "Shambala (Tanzania)","ksf" => "Bafia","ksf_CM" => "Bafia (Cameroon)","ksh" => "Colognian","ksh_DE" => "Colognian (Germany)","kw" => "Cornish","kw_GB" => "Cornish (United Kingdom)","ky" => "Kyrgyz","ky_KG" => "Kyrgyz (Kyrgyzstan)","lag" => "Langi","lag_TZ" => "Langi (Tanzania)","lb" => "Luxembourgish","lb_LU" => "Luxembourgish (Luxembourg)","lg" => "Ganda","lg_UG" => "Ganda (Uganda)","lkt" => "Lakota","lkt_US" => "Lakota (United States)","ln" => "Lingala","ln_AO" => "Lingala (Angola)","ln_CD" => "Lingala (Congo - Kinshasa)","ln_CF" => "Lingala (Central African Republic)","ln_CG" => "Lingala (Congo - Brazzaville)","lo" => "Lao","lo_LA" => "Lao (Laos)","lrc" => "Northern Luri","lrc_IQ" => "Northern Luri (Iraq)","lrc_IR" => "Northern Luri (Iran)","lt" => "Lithuanian","lt_LT" => "Lithuanian (Lithuania)","lu" => "Luba-Katanga","lu_CD" => "Luba-Katanga (Congo - Kinshasa)","luo" => "Luo","luo_KE" => "Luo (Kenya)","luy" => "Luyia","luy_KE" => "Luyia (Kenya)","lv" => "Latvian","lv_LV" => "Latvian (Latvia)","mas" => "Masai","mas_KE" => "Masai (Kenya)","mas_TZ" => "Masai (Tanzania)","mer" => "Meru","mer_KE" => "Meru (Kenya)","mfe" => "Morisyen","mfe_MU" => "Morisyen (Mauritius)","mg" => "Malagasy","mg_MG" => "Malagasy (Madagascar)","mgh" => "Makhuwa-Meetto","mgh_MZ" => "Makhuwa-Meetto (Mozambique)","mgo" => "Metaʼ","mgo_CM" => "Metaʼ (Cameroon)","mk" => "Macedonian","mk_MK" => "Macedonian (Macedonia)","ml" => "Malayalam","ml_IN" => "Malayalam (India)","mn" => "Mongolian","mn_MN" => "Mongolian (Mongolia)","mr" => "Marathi","mr_IN" => "Marathi (India)","ms" => "Malay","ms_Arab" => "Malay (Arabic)","ms_Arab_BN" => "Malay (Arabic, Brunei)","ms_Arab_MY" => "Malay (Arabic, Malaysia)","ms_BN" => "Malay (Brunei)","ms_MY" => "Malay (Malaysia)","ms_SG" => "Malay (Singapore)","mt" => "Maltese","mt_MT" => "Maltese (Malta)","mua" => "Mundang","mua_CM" => "Mundang (Cameroon)","my" => "Burmese","my_MM" => "Burmese (Myanmar [Burma])","mzn" => "Mazanderani","mzn_IR" => "Mazanderani (Iran)","naq" => "Nama","naq_NA" => "Nama (Namibia)","nb" => "Norwegian Bokmål","nb_NO" => "Norwegian Bokmål (Norway)","nb_SJ" => "Norwegian Bokmål (Svalbard & Jan Mayen)","nd" => "North Ndebele","nd_ZW" => "North Ndebele (Zimbabwe)","nds" => "Low German","nds_DE" => "Low German (Germany)","nds_NL" => "Low German (Netherlands)","ne" => "Nepali","ne_IN" => "Nepali (India)","ne_NP" => "Nepali (Nepal)","nl" => "Dutch","nl_AW" => "Dutch (Aruba)","nl_BE" => "Dutch (Belgium)","nl_BQ" => "Dutch (Caribbean Netherlands)","nl_CW" => "Dutch (Curaçao)","nl_NL" => "Dutch (Netherlands)","nl_SR" => "Dutch (Suriname)","nl_SX" => "Dutch (Sint Maarten)","nmg" => "Kwasio","nmg_CM" => "Kwasio (Cameroon)","nn" => "Norwegian Nynorsk","nn_NO" => "Norwegian Nynorsk (Norway)","nnh" => "Ngiemboon","nnh_CM" => "Ngiemboon (Cameroon)","nus" => "Nuer","nus_SS" => "Nuer (South Sudan)","nyn" => "Nyankole","nyn_UG" => "Nyankole (Uganda)","om" => "Oromo","om_ET" => "Oromo (Ethiopia)","om_KE" => "Oromo (Kenya)","or" => "Odia","or_IN" => "Odia (India)","os" => "Ossetic","os_GE" => "Ossetic (Georgia)","os_RU" => "Ossetic (Russia)","pa" => "Punjabi","pa_Arab" => "Punjabi (Arabic)","pa_Arab_PK" => "Punjabi (Arabic, Pakistan)","pa_Guru" => "Punjabi (Gurmukhi)","pa_Guru_IN" => "Punjabi (Gurmukhi, India)","pl" => "Polish","pl_PL" => "Polish (Poland)","ps" => "Pashto","ps_AF" => "Pashto (Afghanistan)","pt" => "Portuguese","pt_AO" => "Portuguese (Angola)","pt_BR" => "Portuguese (Brazil)","pt_CH" => "Portuguese (Switzerland)","pt_CV" => "Portuguese (Cape Verde)","pt_FR" => "Portuguese (France)","pt_GQ" => "Portuguese (Equatorial Guinea)","pt_GW" => "Portuguese (Guinea-Bissau)","pt_LU" => "Portuguese (Luxembourg)","pt_MO" => "Portuguese (Macau [China])","pt_MZ" => "Portuguese (Mozambique)","pt_PT" => "Portuguese (Portugal)","pt_ST" => "Portuguese (São Tomé & Príncipe)","pt_TL" => "Portuguese (Timor-Leste)","qu" => "Quechua","qu_BO" => "Quechua (Bolivia)","qu_EC" => "Quechua (Ecuador)","qu_PE" => "Quechua (Peru)","rm" => "Romansh","rm_CH" => "Romansh (Switzerland)","rn" => "Rundi","rn_BI" => "Rundi (Burundi)","ro" => "Romanian","ro_MD" => "Romanian (Moldova)","ro_RO" => "Romanian (Romania)","rof" => "Rombo","rof_TZ" => "Rombo (Tanzania)","ru" => "Russian","ru_BY" => "Russian (Belarus)","ru_KG" => "Russian (Kyrgyzstan)","ru_KZ" => "Russian (Kazakhstan)","ru_MD" => "Russian (Moldova)","ru_RU" => "Russian (Russia)","ru_UA" => "Russian (Ukraine)","rw" => "Kinyarwanda","rw_RW" => "Kinyarwanda (Rwanda)","rwk" => "Rwa","rwk_TZ" => "Rwa (Tanzania)","sah" => "Sakha","sah_RU" => "Sakha (Russia)","saq" => "Samburu","saq_KE" => "Samburu (Kenya)","sbp" => "Sangu","sbp_TZ" => "Sangu (Tanzania)","se" => "Northern Sami","se_FI" => "Northern Sami (Finland)","se_NO" => "Northern Sami (Norway)","se_SE" => "Northern Sami (Sweden)","seh" => "Sena","seh_MZ" => "Sena (Mozambique)","ses" => "Koyraboro Senni","ses_ML" => "Koyraboro Senni (Mali)","sg" => "Sango","sg_CF" => "Sango (Central African Republic)","shi" => "Tachelhit","shi_Latn" => "Tachelhit (Latin)","shi_Latn_MA" => "Tachelhit (Latin, Morocco)","shi_Tfng" => "Tachelhit (Tifinagh)","shi_Tfng_MA" => "Tachelhit (Tifinagh, Morocco)","si" => "Sinhala","si_LK" => "Sinhala (Sri Lanka)","sk" => "Slovak","sk_SK" => "Slovak (Slovakia)","sl" => "Slovenian","sl_SI" => "Slovenian (Slovenia)","smn" => "Inari Sami","smn_FI" => "Inari Sami (Finland)","sn" => "Shona","sn_ZW" => "Shona (Zimbabwe)","so" => "Somali","so_DJ" => "Somali (Djibouti)","so_ET" => "Somali (Ethiopia)","so_KE" => "Somali (Kenya)","so_SO" => "Somali (Somalia)","sq" => "Albanian","sq_AL" => "Albanian (Albania)","sq_MK" => "Albanian (Macedonia)","sq_XK" => "Albanian (Kosovo)","sr" => "Serbian","sr_Cyrl" => "Serbian (Cyrillic)","sr_Cyrl_BA" => "Serbian (Cyrillic, Bosnia & Herzegovina)","sr_Cyrl_ME" => "Serbian (Cyrillic, Montenegro)","sr_Cyrl_RS" => "Serbian (Cyrillic, Serbia)","sr_Cyrl_XK" => "Serbian (Cyrillic, Kosovo)","sr_Latn" => "Serbian (Latin)","sr_Latn_BA" => "Serbian (Latin, Bosnia & Herzegovina)","sr_Latn_ME" => "Serbian (Latin, Montenegro)","sr_Latn_RS" => "Serbian (Latin, Serbia)","sr_Latn_XK" => "Serbian (Latin, Kosovo)","sv" => "Swedish","sv_AX" => "Swedish (Åland Islands)","sv_FI" => "Swedish (Finland)","sv_SE" => "Swedish (Sweden)","sw" => "Swahili","sw_CD" => "Swahili (Congo - Kinshasa)","sw_KE" => "Swahili (Kenya)","sw_TZ" => "Swahili (Tanzania)","sw_UG" => "Swahili (Uganda)","ta" => "Tamil","ta_IN" => "Tamil (India)","ta_LK" => "Tamil (Sri Lanka)","ta_MY" => "Tamil (Malaysia)","ta_SG" => "Tamil (Singapore)","te" => "Telugu","te_IN" => "Telugu (India)","teo" => "Teso","teo_KE" => "Teso (Kenya)","teo_UG" => "Teso (Uganda)","tg" => "Tajik","tg_TJ" => "Tajik (Tajikistan)","th" => "Thai","th_TH" => "Thai (Thailand)","ti" => "Tigrinya","ti_ER" => "Tigrinya (Eritrea)","ti_ET" => "Tigrinya (Ethiopia)","tk" => "Turkmen","tk_TM" => "Turkmen (Turkmenistan)","to" => "Tongan","to_TO" => "Tongan (Tonga)","tr" => "Turkish","tr_CY" => "Turkish (Cyprus)","tr_TR" => "Turkish (Turkey)","twq" => "Tasawaq","twq_NE" => "Tasawaq (Niger)","tzm" => "Central Atlas Tamazight","tzm_MA" => "Central Atlas Tamazight (Morocco)","ug" => "Uyghur","ug_CN" => "Uyghur (China)","uk" => "Ukrainian","uk_UA" => "Ukrainian (Ukraine)","ur" => "Urdu","ur_IN" => "Urdu (India)","ur_PK" => "Urdu (Pakistan)","uz" => "Uzbek","uz_Arab" => "Uzbek (Arabic)","uz_Arab_AF" => "Uzbek (Arabic, Afghanistan)","uz_Cyrl" => "Uzbek (Cyrillic)","uz_Cyrl_UZ" => "Uzbek (Cyrillic, Uzbekistan)","uz_Latn" => "Uzbek (Latin)","uz_Latn_UZ" => "Uzbek (Latin, Uzbekistan)","vai" => "Vai","vai_Latn" => "Vai (Latin)","vai_Latn_LR" => "Vai (Latin, Liberia)","vai_Vaii" => "Vai (Vai)","vai_Vaii_LR" => "Vai (Vai, Liberia)","vi" => "Vietnamese","vi_VN" => "Vietnamese (Vietnam)","vun" => "Vunjo","vun_TZ" => "Vunjo (Tanzania)","wae" => "Walser","wae_CH" => "Walser (Switzerland)","xog" => "Soga","xog_UG" => "Soga (Uganda)","yav" => "Yangben","yav_CM" => "Yangben (Cameroon)","yi" => "Yiddish","yi_001" => "Yiddish (World)","yo" => "Yoruba","yo_BJ" => "Yoruba (Benin)","yo_NG" => "Yoruba (Nigeria)","yue" => "Cantonese","yue_Hans" => "Cantonese (Simplified)","yue_Hans_CN" => "Cantonese (Simplified, China)","yue_Hant" => "Cantonese (Traditional)","yue_Hant_HK" => "Cantonese (Traditional, Hong Kong [China])","zgh" => "Standard Moroccan Tamazight","zgh_MA" => "Standard Moroccan Tamazight (Morocco)","zh" => "Chinese","zh_Hans" => "Chinese (Simplified)","zh_Hans_CN" => "Chinese (Simplified, China)","zh_Hans_HK" => "Chinese (Simplified, Hong Kong [China])","zh_Hans_MO" => "Chinese (Simplified, Macau [China])","zh_Hans_SG" => "Chinese (Simplified, Singapore)","zh_Hant" => "Chinese (Traditional)","zh_Hant_HK" => "Chinese (Traditional, Hong Kong [China])","zh_Hant_MO" => "Chinese (Traditional, Macau [China])","zh_Hant_TW" => "Chinese (Traditional, Taiwan)","zu" => "Zulu","zu_ZA" => "Zulu (South Africa)"
|
89
92
|
},
|
data/lib/run_loop/simctl.rb
CHANGED
@@ -113,7 +113,6 @@ module RunLoop
|
|
113
113
|
# @param [RunLoop::Device] device The device under test.
|
114
114
|
# @return [String] The path to the .app bundle if it exists; nil otherwise.
|
115
115
|
def app_container(device, bundle_id)
|
116
|
-
return nil if !xcode.version_gte_7?
|
117
116
|
cmd = ["simctl", "get_app_container", device.udid, bundle_id]
|
118
117
|
hash = shell_out_with_xcrun(cmd, DEFAULTS)
|
119
118
|
|
@@ -152,8 +151,8 @@ module RunLoop
|
|
152
151
|
|
153
152
|
exit_status = hash[:exit_status]
|
154
153
|
if exit_status != 0
|
155
|
-
|
156
|
-
|
154
|
+
if simulator_state_as_int(device) == SIM_STATES["Shutdown"] ||
|
155
|
+
hash[:out][/Unable to shutdown device in current state: Shutdown/]
|
157
156
|
RunLoop.log_debug("simctl shutdown called when state is 'Shutdown'; ignoring error")
|
158
157
|
else
|
159
158
|
raise RuntimeError,
|
@@ -208,6 +207,49 @@ $ bundle exec run-loop simctl manage-processes
|
|
208
207
|
in_state
|
209
208
|
end
|
210
209
|
|
210
|
+
def boot(device)
|
211
|
+
if simulator_state_as_int(device) == SIM_STATES["Booted"]
|
212
|
+
RunLoop.log_debug("Simulator is already Booted")
|
213
|
+
true
|
214
|
+
else
|
215
|
+
cmd = ["simctl", "boot", device.udid]
|
216
|
+
hash = shell_out_with_xcrun(cmd, DEFAULTS)
|
217
|
+
|
218
|
+
exit_status = hash[:exit_status]
|
219
|
+
if exit_status != 0
|
220
|
+
if simulator_state_as_int(device) == SIM_STATES["Booted"]
|
221
|
+
RunLoop.log_debug("simctl boot called when state is 'Booted'; ignoring error")
|
222
|
+
else
|
223
|
+
raise RuntimeError,
|
224
|
+
%Q[Could not boot the simulator:
|
225
|
+
|
226
|
+
command: xcrun #{cmd.join(" ")}
|
227
|
+
simulator: #{device}
|
228
|
+
state: #{device.state}
|
229
|
+
|
230
|
+
#{hash[:out]}
|
231
|
+
|
232
|
+
This usually means your CoreSimulator processes need to be restarted.
|
233
|
+
|
234
|
+
You can restart the CoreSimulator processes with this command:
|
235
|
+
|
236
|
+
$ bundle exec run-loop simctl manage-processes
|
237
|
+
|
238
|
+
]
|
239
|
+
end
|
240
|
+
end
|
241
|
+
true
|
242
|
+
end
|
243
|
+
end
|
244
|
+
|
245
|
+
# @!visibility private
|
246
|
+
def reboot(device)
|
247
|
+
shutdown(device)
|
248
|
+
wait_for_shutdown(device, DEFAULTS[:timeout], 1.0)
|
249
|
+
boot(device)
|
250
|
+
device.simulator_wait_for_stable_state
|
251
|
+
end
|
252
|
+
|
211
253
|
# @!visibility private
|
212
254
|
# Erases the simulator.
|
213
255
|
#
|
@@ -224,6 +266,10 @@ $ bundle exec run-loop simctl manage-processes
|
|
224
266
|
shutdown(device)
|
225
267
|
wait_for_shutdown(device, wait_timeout, wait_delay)
|
226
268
|
|
269
|
+
# TODO: when we encounter a "data couldn't be removed because you don't
|
270
|
+
# have permission to access it" error" it is possible we can ignore the
|
271
|
+
# error.
|
272
|
+
|
227
273
|
cmd = ["simctl", "erase", device.udid]
|
228
274
|
hash = shell_out_with_xcrun(cmd, DEFAULTS)
|
229
275
|
|
@@ -235,7 +281,7 @@ $ bundle exec run-loop simctl manage-processes
|
|
235
281
|
command: xcrun #{cmd.join(" ")}
|
236
282
|
simulator: #{device}
|
237
283
|
|
238
|
-
|
284
|
+
#{hash[:out]}
|
239
285
|
|
240
286
|
This usually means your CoreSimulator processes need to be restarted.
|
241
287
|
|
@@ -332,6 +378,23 @@ $ bundle exec run-loop simctl manage-processes
|
|
332
378
|
|
333
379
|
]
|
334
380
|
end
|
381
|
+
|
382
|
+
app_container = app_container(device, app.bundle_identifier)
|
383
|
+
if app_container
|
384
|
+
RunLoop.log_debug("After uninstall, simctl thinks app container exists")
|
385
|
+
if File.exist?(app_container)
|
386
|
+
RunLoop.log_debug("App container _does_ exist on disk; deleting it")
|
387
|
+
FileUtils.rm_rf(app_container)
|
388
|
+
else
|
389
|
+
RunLoop.log_debug("App container does _not_ exist on disk")
|
390
|
+
end
|
391
|
+
RunLoop.log_debug("Rebooting the device")
|
392
|
+
reboot(device)
|
393
|
+
if app_container(device, app.bundle_identifier)
|
394
|
+
raise "simctl uninstall succeeded, but simctl says app is still installed"
|
395
|
+
end
|
396
|
+
end
|
397
|
+
|
335
398
|
true
|
336
399
|
end
|
337
400
|
|
@@ -353,11 +416,32 @@ $ bundle exec run-loop simctl manage-processes
|
|
353
416
|
options = DEFAULTS.dup
|
354
417
|
options[:timeout] = timeout
|
355
418
|
|
356
|
-
|
419
|
+
success = false
|
420
|
+
tries = 5
|
421
|
+
hash = nil
|
422
|
+
tries.times do |try|
|
423
|
+
hash = shell_out_with_xcrun(cmd, options)
|
424
|
+
exit_status = hash[:exit_status]
|
425
|
+
if exit_status == 0
|
426
|
+
RunLoop.log_debug("Successful install on #{try + 1} of #{tries} attempts")
|
427
|
+
success = true
|
428
|
+
break
|
429
|
+
else
|
430
|
+
out = hash[:out]
|
431
|
+
if out[/This app could not be installed at this time/]
|
432
|
+
RunLoop.log_debug("Install failed on attempt #{try + 1} of #{tries}")
|
433
|
+
sleep(1.0)
|
434
|
+
else
|
435
|
+
# Any other error, fail.
|
436
|
+
success = false
|
437
|
+
break
|
438
|
+
end
|
439
|
+
end
|
440
|
+
end
|
357
441
|
|
358
|
-
|
359
|
-
|
360
|
-
|
442
|
+
return true if success
|
443
|
+
|
444
|
+
raise RuntimeError,
|
361
445
|
%Q[Could not install app on simulator:
|
362
446
|
|
363
447
|
command: xcrun #{cmd.join(" ")}
|
@@ -373,29 +457,18 @@ You can restart the CoreSimulator processes with this command:
|
|
373
457
|
$ bundle exec run-loop simctl manage-processes
|
374
458
|
|
375
459
|
]
|
376
|
-
end
|
377
|
-
true
|
378
460
|
end
|
379
461
|
|
462
|
+
private
|
463
|
+
|
380
464
|
# @!visibility private
|
381
|
-
|
382
|
-
# SimControl compatibility
|
383
|
-
def ensure_accessibility(device)
|
384
|
-
sim_control.ensure_accessibility(device)
|
385
|
-
end
|
465
|
+
attr_reader :ios_devices, :tvos_devices, :watchos_devices, :pbuddy
|
386
466
|
|
387
467
|
# @!visibility private
|
388
|
-
#
|
389
|
-
# TODO Make this private again; exposed for SimControl compatibility.
|
390
468
|
def xcode
|
391
469
|
@xcode ||= RunLoop::Xcode.new
|
392
470
|
end
|
393
471
|
|
394
|
-
private
|
395
|
-
|
396
|
-
# @!visibility private
|
397
|
-
attr_reader :ios_devices, :tvos_devices, :watchos_devices, :pbuddy
|
398
|
-
|
399
472
|
# @!visibility private
|
400
473
|
def pbuddy
|
401
474
|
@pbuddy ||= RunLoop::PlistBuddy.new
|
@@ -430,14 +503,6 @@ $ bundle exec run-loop simctl manage-processes
|
|
430
503
|
# `@watchos_devices`. Callers should check for existing devices to avoid
|
431
504
|
# the overhead of calling `simctl list devices --json`.
|
432
505
|
def fetch_devices!
|
433
|
-
if !xcode.version_gte_7?
|
434
|
-
return {
|
435
|
-
:ios => sim_control.simulators,
|
436
|
-
:tvos => [],
|
437
|
-
:watchos => []
|
438
|
-
}
|
439
|
-
end
|
440
|
-
|
441
506
|
@ios_devices = []
|
442
507
|
@tvos_devices = []
|
443
508
|
@watchos_devices = []
|
@@ -564,12 +629,5 @@ is not an iOS, tvOS, or watchOS device"
|
|
564
629
|
def xcrun
|
565
630
|
@xcrun ||= RunLoop::Xcrun.new
|
566
631
|
end
|
567
|
-
|
568
|
-
# @!visibility private
|
569
|
-
# Support for Xcode < 7 when trying to collect simulators. Xcode 7 allows
|
570
|
-
# a --json option which is much easier to parse.
|
571
|
-
def sim_control
|
572
|
-
@sim_control ||= RunLoop::SimControl.new
|
573
|
-
end
|
574
632
|
end
|
575
633
|
end
|
data/lib/run_loop/strings.rb
CHANGED
@@ -48,6 +48,21 @@ must exist and not be a directory.
|
|
48
48
|
end
|
49
49
|
end
|
50
50
|
|
51
|
+
# @!visibility private
|
52
|
+
#
|
53
|
+
# @return [RunLoop::Version] A version instance or nil if the file
|
54
|
+
# at path does not contain server version information.
|
55
|
+
def server_id
|
56
|
+
regex = /LPSERVERID=[a-f0-9]{40}(-dirty)?/
|
57
|
+
match = dump[regex, 0]
|
58
|
+
|
59
|
+
if match
|
60
|
+
match.split("=")[1]
|
61
|
+
else
|
62
|
+
nil
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
51
66
|
private
|
52
67
|
|
53
68
|
# @!visibility private
|
data/lib/run_loop/version.rb
CHANGED
data/lib/run_loop/xcode.rb
CHANGED
@@ -26,6 +26,14 @@ module RunLoop
|
|
26
26
|
to_s
|
27
27
|
end
|
28
28
|
|
29
|
+
# Returns a version instance for Xcode 10.0; used to check for the
|
30
|
+
# availability of features and paths to various items on the filesystem
|
31
|
+
#
|
32
|
+
# @return [RunLoop::Version] 10.0
|
33
|
+
def v100
|
34
|
+
fetch_version(:v100)
|
35
|
+
end
|
36
|
+
|
29
37
|
# Returns a version instance for Xcode 9.4; used to check for the
|
30
38
|
# availability of features and paths to various items on the filesystem
|
31
39
|
#
|
@@ -98,97 +106,16 @@ module RunLoop
|
|
98
106
|
fetch_version(:v80)
|
99
107
|
end
|
100
108
|
|
101
|
-
#
|
102
|
-
# availability of features and paths to various items on the filesystem.
|
103
|
-
#
|
104
|
-
# @return [RunLoop::Version] 7.3
|
105
|
-
def v73
|
106
|
-
fetch_version(:v73)
|
107
|
-
end
|
108
|
-
|
109
|
-
# Returns a version instance for `Xcode 7.2`; used to check for the
|
110
|
-
# availability of features and paths to various items on the filesystem.
|
111
|
-
#
|
112
|
-
# @return [RunLoop::Version] 7.2
|
113
|
-
def v72
|
114
|
-
fetch_version(:v72)
|
115
|
-
end
|
116
|
-
|
117
|
-
# Returns a version instance for `Xcode 7.1`; used to check for the
|
118
|
-
# availability of features and paths to various items on the filesystem.
|
119
|
-
#
|
120
|
-
# @return [RunLoop::Version] 7.1
|
121
|
-
def v71
|
122
|
-
fetch_version(:v71)
|
123
|
-
end
|
124
|
-
|
125
|
-
# Returns a version instance for `Xcode 7.0`; used to check for the
|
126
|
-
# availability of features and paths to various items on the filesystem.
|
127
|
-
#
|
128
|
-
# @return [RunLoop::Version] 7.0
|
129
|
-
def v70
|
130
|
-
fetch_version(:v70)
|
131
|
-
end
|
132
|
-
|
133
|
-
# Returns a version instance for `Xcode 6.4`; used to check for the
|
134
|
-
# availability of features and paths to various items on the filesystem.
|
135
|
-
#
|
136
|
-
# @return [RunLoop::Version] 6.4
|
137
|
-
def v64
|
138
|
-
fetch_version(:v64)
|
139
|
-
end
|
140
|
-
|
141
|
-
# Returns a version instance for `Xcode 6.3`; used to check for the
|
142
|
-
# availability of features and paths to various items on the filesystem.
|
109
|
+
# Is the active Xcode version 10.0 or above?
|
143
110
|
#
|
144
|
-
# @return [
|
145
|
-
def
|
146
|
-
|
111
|
+
# @return [Boolean] `true` if the current Xcode version is >= 10.0
|
112
|
+
def version_gte_100?
|
113
|
+
version >= v100
|
147
114
|
end
|
148
115
|
|
149
|
-
#
|
150
|
-
# availability of features and paths to various items on the filesystem.
|
151
|
-
#
|
152
|
-
# @return [RunLoop::Version] 6.2
|
153
|
-
def v62
|
154
|
-
fetch_version(:v62)
|
155
|
-
end
|
156
|
-
|
157
|
-
# Returns a version instance for `Xcode 6.1`; used to check for the
|
158
|
-
# availability of features and paths to various items on the filesystem.
|
159
|
-
#
|
160
|
-
# @return [RunLoop::Version] 6.1
|
161
|
-
def v61
|
162
|
-
fetch_version(:v61)
|
163
|
-
end
|
164
|
-
|
165
|
-
# Returns a version instance for `Xcode 6.0`; used to check for the
|
166
|
-
# availability of features and paths to various items on the filesystem.
|
167
|
-
#
|
168
|
-
# @return [RunLoop::Version] 6.0
|
169
|
-
def v60
|
170
|
-
fetch_version(:v60)
|
171
|
-
end
|
172
|
-
|
173
|
-
# Returns a version instance for `Xcode 5.1`; used to check for the
|
174
|
-
# availability of features and paths to various items on the filesystem.
|
175
|
-
#
|
176
|
-
# @return [RunLoop::Version] 5.1
|
177
|
-
def v51
|
178
|
-
fetch_version(:v51)
|
179
|
-
end
|
180
|
-
|
181
|
-
# Returns a version instance for `Xcode 5.0`; used to check for the
|
182
|
-
# availability of features and paths to various items on the filesystem.
|
116
|
+
# Is the active Xcode version 9.4 or above?
|
183
117
|
#
|
184
|
-
# @return [
|
185
|
-
def v50
|
186
|
-
fetch_version(:v50)
|
187
|
-
end
|
188
|
-
|
189
|
-
# Is the active Xcode version 9.3 or above?
|
190
|
-
#
|
191
|
-
# @return [Boolean] `true` if the current Xcode version is >= 9.3
|
118
|
+
# @return [Boolean] `true` if the current Xcode version is >= 9.4
|
192
119
|
def version_gte_94?
|
193
120
|
version >= v94
|
194
121
|
end
|
@@ -249,78 +176,6 @@ module RunLoop
|
|
249
176
|
version >= v80
|
250
177
|
end
|
251
178
|
|
252
|
-
# Is the active Xcode version 7.3 or above?
|
253
|
-
#
|
254
|
-
# @return [Boolean] `true` if the current Xcode version is >= 7.3
|
255
|
-
def version_gte_73?
|
256
|
-
version >= v73
|
257
|
-
end
|
258
|
-
|
259
|
-
# Is the active Xcode version 7.2 or above?
|
260
|
-
#
|
261
|
-
# @return [Boolean] `true` if the current Xcode version is >= 7.2
|
262
|
-
def version_gte_72?
|
263
|
-
version >= v72
|
264
|
-
end
|
265
|
-
|
266
|
-
# Is the active Xcode version 7.1 or above?
|
267
|
-
#
|
268
|
-
# @return [Boolean] `true` if the current Xcode version is >= 7.1
|
269
|
-
def version_gte_71?
|
270
|
-
version >= v71
|
271
|
-
end
|
272
|
-
|
273
|
-
# Is the active Xcode version 7 or above?
|
274
|
-
#
|
275
|
-
# @return [Boolean] `true` if the current Xcode version is >= 7.0
|
276
|
-
def version_gte_7?
|
277
|
-
version >= v70
|
278
|
-
end
|
279
|
-
|
280
|
-
# Is the active Xcode version 6.4 or above?
|
281
|
-
#
|
282
|
-
# @return [Boolean] `true` if the current Xcode version is >= 6.4
|
283
|
-
def version_gte_64?
|
284
|
-
version >= v64
|
285
|
-
end
|
286
|
-
|
287
|
-
# Is the active Xcode version 6.3 or above?
|
288
|
-
#
|
289
|
-
# @return [Boolean] `true` if the current Xcode version is >= 6.3
|
290
|
-
def version_gte_63?
|
291
|
-
version >= v63
|
292
|
-
end
|
293
|
-
|
294
|
-
# Is the active Xcode version 6.2 or above?
|
295
|
-
#
|
296
|
-
# @return [Boolean] `true` if the current Xcode version is >= 6.2
|
297
|
-
def version_gte_62?
|
298
|
-
version >= v62
|
299
|
-
end
|
300
|
-
|
301
|
-
# Is the active Xcode version 6.1 or above?
|
302
|
-
#
|
303
|
-
# @return [Boolean] `true` if the current Xcode version is >= 6.1
|
304
|
-
def version_gte_61?
|
305
|
-
version >= v61
|
306
|
-
end
|
307
|
-
|
308
|
-
# Is the active Xcode version 6 or above?
|
309
|
-
#
|
310
|
-
# @return [Boolean] `true` if the current Xcode version is >= 6.0
|
311
|
-
def version_gte_6?
|
312
|
-
version >= v60
|
313
|
-
end
|
314
|
-
|
315
|
-
# @deprecated 2.1.0
|
316
|
-
# Is the active Xcode version 5.1 or above?
|
317
|
-
#
|
318
|
-
# @return [Boolean] `true` if the current Xcode version is >= 5.1
|
319
|
-
def version_gte_51?
|
320
|
-
#RunLoop.deprecated("2.1.0", "No replacement")
|
321
|
-
version >= v51
|
322
|
-
end
|
323
|
-
|
324
179
|
# Returns the current version of Xcode.
|
325
180
|
#
|
326
181
|
# @return [RunLoop::Version] The current version of Xcode as reported by
|
@@ -427,7 +282,7 @@ $ man xcode-select
|
|
427
282
|
|
428
283
|
string = key.to_s
|
429
284
|
string[0] = ''
|
430
|
-
version_string = string.split(
|
285
|
+
version_string = string.split(/^(10)*|(?!^)/).reject(&:empty?).join('.')
|
431
286
|
version = RunLoop::Version.new(version_string)
|
432
287
|
xcode_versions[key] = version
|
433
288
|
version
|
@@ -435,19 +290,31 @@ $ man xcode-select
|
|
435
290
|
|
436
291
|
def ensure_valid_version_key(key)
|
437
292
|
string = key.to_s
|
438
|
-
|
439
|
-
|
293
|
+
|
294
|
+
if !string.start_with?("v")
|
295
|
+
raise "Expected version key to start with 'v'"
|
440
296
|
end
|
441
297
|
|
442
|
-
|
443
|
-
|
298
|
+
if string.start_with?("v10")
|
299
|
+
expected_length = 4
|
300
|
+
regex = /v\d{3}/
|
301
|
+
else
|
302
|
+
expected_length = 3
|
303
|
+
regex = /v\d{2}/
|
304
|
+
end
|
305
|
+
|
306
|
+
if string.length != expected_length
|
307
|
+
raise "Expected version key '#{key}' to be exactly #{expected_length} chars long"
|
308
|
+
end
|
309
|
+
|
310
|
+
if !string[regex]
|
311
|
+
raise "Expected version key '#{key}' to match this pattern: #{regex}"
|
444
312
|
end
|
445
313
|
end
|
446
314
|
|
447
315
|
def xcode_select_path
|
448
|
-
|
449
|
-
|
450
|
-
end
|
316
|
+
hash = run_shell_command(["xcode-select", "--print-path"], {log_cmd: true})
|
317
|
+
hash[:out].chomp
|
451
318
|
end
|
452
319
|
end
|
453
320
|
end
|