Skip to content

Commit a3bb12c

Browse files
authored
[Xamarin.MacDev] Add methods to map between iOS and macOS versions for Mac Catalyst. (#88)
1 parent 02d6d05 commit a3bb12c

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed

Xamarin.MacDev/MacOSXSdk.cs

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,43 @@ string GetSdkPlistFilename (string version)
159159
return Path.Combine (GetSdkPath (version), "SDKSettings.plist");
160160
}
161161

162+
Dictionary<string, string> catalyst_version_map_ios_to_macos;
163+
Dictionary<string, string> catalyst_version_map_macos_to_ios;
164+
165+
void LoadCatalystVersionMaps (string version)
166+
{
167+
if (catalyst_version_map_ios_to_macos != null && catalyst_version_map_macos_to_ios != null)
168+
return;
169+
170+
catalyst_version_map_ios_to_macos = new Dictionary<string, string> ();
171+
catalyst_version_map_macos_to_ios = new Dictionary<string, string> ();
172+
173+
var fn = GetSdkPlistFilename (version);
174+
var plist = PDictionary.FromFile (fn);
175+
if (plist.TryGetValue ("VersionMap", out PDictionary versionMap)) {
176+
if (versionMap.TryGetValue ("iOSMac_macOS", out PDictionary versionMapiOSToMac)) {
177+
foreach (var kvp in versionMapiOSToMac)
178+
catalyst_version_map_ios_to_macos [kvp.Key] = ((PString) kvp.Value).Value;
179+
}
180+
if (versionMap.TryGetValue ("macOS_iOSMac", out PDictionary versionMapMacToiOS)) {
181+
foreach (var kvp in versionMapMacToiOS)
182+
catalyst_version_map_macos_to_ios [kvp.Key] = ((PString) kvp.Value).Value;
183+
}
184+
}
185+
}
186+
187+
public Dictionary<string, string> GetCatalystVersionMap_iOS_to_Mac (string version)
188+
{
189+
LoadCatalystVersionMaps (version);
190+
return catalyst_version_map_ios_to_macos;
191+
}
192+
193+
public Dictionary<string, string> GetCatalystVersionMap_Mac_to_iOS (string version)
194+
{
195+
LoadCatalystVersionMaps (version);
196+
return catalyst_version_map_macos_to_ios;
197+
}
198+
162199
bool IAppleSdk.SdkIsInstalled (IAppleSdkVersion version, bool isSimulator)
163200
{
164201
return SdkIsInstalled ((AppleSdkVersion) version);

0 commit comments

Comments
 (0)