| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| using System; |
| using System.IO; |
|
|
| namespace DiscoveryDocPatcher |
| { |
|
|
| class Program |
| { |
| static int Main(string[] args) |
| { |
| try |
| { |
| string discoveryDocPath = args[0]; |
|
|
| PatchDirectory(discoveryDocPath); |
|
|
| return 0; |
| } |
| catch (Exception e) |
| { |
| Console.WriteLine(e); |
| return 1; |
| } |
| } |
|
|
| static void PatchDirectory(string rootPath) |
| { |
| var patcher = IfFileExists(() => Patcher.Load(Path.Combine(rootPath, "admin.directory_v1.json"))); |
| if (patcher is null) |
| { |
| return; |
| } |
| |
| patcher.FromAnyToTypedArray("schemas.User.properties.addresses", "UserAddress"); |
| patcher.FromAnyToTypedArray("schemas.User.properties.emails", "UserEmail"); |
| patcher.FromAnyToTypedArray("schemas.User.properties.externalIds", "UserExternalId"); |
| patcher.FromAnyToTypedArray("schemas.User.properties.ims", "UserIm"); |
| patcher.FromAnyToTypedArray("schemas.User.properties.organizations", "UserOrganization"); |
| patcher.FromAnyToTypedArray("schemas.User.properties.phones", "UserPhone"); |
| patcher.FromAnyToTypedArray("schemas.User.properties.relations", "UserRelation"); |
| patcher.FromAnyToTypedArray("schemas.User.properties.websites", "UserWebsite"); |
| patcher.FromAnyToTyped("schemas.Aliases.properties.aliases.items", "Alias"); |
| patcher.SaveWithBackup(); |
|
|
| } |
|
|
| static T IfFileExists<T>(Func<T> fn) |
| { |
| try |
| { |
| return fn(); |
| } |
| catch (FileNotFoundException) |
| { |
| return default; |
| } |
| } |
| } |
| } |
|
|