RemoveNugetFromSamples.cs 3.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. using System;
  2. using System.IO;
  3. using System.Xml;
  4. using System.Xml.Linq;
  5. using System.Xml.XPath;
  6. class P
  7. {
  8. static XmlNamespaceManager nsManager;
  9. static XNamespace ns;
  10. static bool onlyRefs;
  11. static void Main(string[] args)
  12. {
  13. if (args.Length > 0 && args[0] == "-refsonly")
  14. onlyRefs = true;
  15. var nsStr = "http://schemas.microsoft.com/developer/msbuild/2003";
  16. nsManager = new XmlNamespaceManager(new NameTable());
  17. nsManager.AddNamespace("p", nsStr);
  18. ns = nsStr;
  19. //FeatureSamples.Core
  20. var coreCsproj = @"Samples/FeatureSamples/Core/Urho.Samples.csproj";
  21. var coreDoc = XDocument.Load(coreCsproj);
  22. RemovePackagesConfig(coreDoc);
  23. ReplaceRef(coreDoc, "Urho", "{641886db-2c6c-4d33-88da-97bec0ec5f86}", @"..\..\..\Bindings\Urho.csproj");
  24. coreDoc.Save(coreCsproj);
  25. //FeatureSamples.Droid
  26. var droidCsproj = @"Samples/FeatureSamples/Android/Urho.Samples.Droid.csproj";
  27. var droidDoc = XDocument.Load(droidCsproj);
  28. RemovePackagesConfig(droidDoc);
  29. ReplaceRef(droidDoc, "Urho", "{f0c1189b-75f7-4bd8-b394-a23d5b03eff6}", @"..\..\..\Bindings\Urho.Droid.csproj");
  30. droidDoc.Save(droidCsproj);
  31. //FeatureSamples.iOS
  32. var iosCsproj = @"Samples/FeatureSamples/iOS/Urho.Samples.iOS.csproj";
  33. var iosDoc = XDocument.Load(iosCsproj);
  34. RemovePackagesConfig(iosDoc);
  35. ReplaceRef(iosDoc, "Urho", "{9ae80bd9-e1e2-41da-bb6f-712b35028bd9}", @"..\..\..\Bindings\Urho.iOS.csproj");
  36. iosDoc.Save(iosCsproj);
  37. //FeatureSamples.Mac
  38. var desktopCsproj = @"Samples/FeatureSamples/Mac/Urho.Samples.Mac.csproj";
  39. var desktopDoc = XDocument.Load(desktopCsproj);
  40. RemovePackagesConfig(desktopDoc);
  41. ReplaceRef(desktopDoc, "Urho", "{F0359D5E-D6D4-47D3-A9F0-5A97C31DC476}", @"..\..\..\Bindings\Urho.Desktop.csproj");
  42. RemoveTargets(desktopDoc);
  43. desktopDoc.Save(desktopCsproj);
  44. //FormsSample.Core
  45. var formsCoreCsproj = @"Samples/FormsSample/FormsSample/FormsSample.csproj";
  46. var formsCoreDoc = XDocument.Load(formsCoreCsproj);
  47. RemovePackagesConfig(formsCoreDoc);
  48. ReplaceRef(formsCoreDoc, "Urho.Forms", "{D599C47F-B9E0-4A58-82E8-6286E0442E8F}", @"..\..\..\Bindings\Urho.Forms.csproj");
  49. formsCoreDoc.Save(formsCoreCsproj);
  50. //FormsSample.Droid
  51. var formsDroidCsproj = @"Samples/FormsSample/FormsSample.Droid/FormsSample.Droid.csproj";
  52. var formsDroidDoc = XDocument.Load(formsDroidCsproj);
  53. RemovePackagesConfig(formsDroidDoc);
  54. ReplaceRef(formsDroidDoc, "Urho.Forms", "{8BAE491B-46F0-4A51-A456-D7A3B332BDC4}", @"..\..\..\Bindings\Urho.Forms.Droid.csproj");
  55. formsDroidDoc.Save(formsDroidCsproj);
  56. //FormsSample.iOS
  57. var formsIosCsproj = @"Samples/FormsSample/FormsSample.iOS/FormsSample.iOS.csproj";
  58. var formsIosDoc = XDocument.Load(formsIosCsproj);
  59. RemovePackagesConfig(formsIosDoc);
  60. ReplaceRef(formsIosDoc, "Urho.Forms", "{8F3352BA-BF6A-49F8-81D6-58D54B3EA72B}", @"..\..\..\Bindings\Urho.Forms.iOS.csproj");
  61. formsIosDoc.Save(formsIosCsproj);
  62. }
  63. static void ReplaceRef(XDocument doc, string refName, string id, string path)
  64. {
  65. var node = doc.XPathSelectElement($"//p:Reference[@Include='{refName}' or contains(@Include, '{refName + ", "}')]", nsManager);
  66. if (node == null)//means it's already converted to ProjectReference
  67. return;
  68. node.Parent.Add(new XElement(ns + "ProjectReference", new XAttribute("Include", path),
  69. new XElement(ns + "Project", id),
  70. new XElement(ns + "Name", Path.GetFileNameWithoutExtension(path))));
  71. node.Remove();
  72. }
  73. static void RemovePackagesConfig(XDocument doc)
  74. {
  75. var node = doc.XPathSelectElement("//p:None[@Include='packages.config']", nsManager);
  76. node?.Remove();
  77. }
  78. static void RemoveTargets(XDocument doc)
  79. {
  80. if (onlyRefs) return;
  81. doc.XPathSelectElement(@"//p:Import[contains(@Project, 'packages\UrhoSharp')]", nsManager)?.Remove();
  82. doc.XPathSelectElement(@"//p:Error[contains(@Condition, 'packages\UrhoSharp')]", nsManager)?.Remove();
  83. }
  84. }