diff options
author | Lluis Sanchez <lluis@novell.com> | 2008-07-15 18:27:05 +0400 |
---|---|---|
committer | Lluis Sanchez <lluis@novell.com> | 2008-07-15 18:27:05 +0400 |
commit | feca460d996379b6817c6ffc569f302758205310 (patch) | |
tree | 331557a6ce07914416436d2403ee6e8d2c681ae0 /Mono.Addins/Mono.Addins.Description | |
parent | eef18bbf8df320ee6fb60f615fb0859dddcd9521 (diff) |
* Mono.Addins.Description/AddinDescription.cs,
Mono.Addins.Description/ModuleDescription.cs,
Mono.Addins.Database/AddinScanFolderInfo.cs,
Mono.Addins.Database/AddinScanResult.cs,
Mono.Addins.Database/AddinDatabase.cs,
Mono.Addins.Database/AddinScanner.cs: Add support for specifying
paths to exclude in .addins files and in add-in manifests.
* Mono.Addins.Database/Util.cs: Make sure window paths are converted to
unix paths when running on unix, and vice-versa.
svn path=/trunk/mono-addins/; revision=107963
Diffstat (limited to 'Mono.Addins/Mono.Addins.Description')
-rw-r--r-- | Mono.Addins/Mono.Addins.Description/AddinDescription.cs | 14 | ||||
-rw-r--r-- | Mono.Addins/Mono.Addins.Description/ModuleDescription.cs | 61 |
2 files changed, 58 insertions, 17 deletions
diff --git a/Mono.Addins/Mono.Addins.Description/AddinDescription.cs b/Mono.Addins/Mono.Addins.Description/AddinDescription.cs index f0450a9..6f302e7 100644 --- a/Mono.Addins/Mono.Addins.Description/AddinDescription.cs +++ b/Mono.Addins/Mono.Addins.Description/AddinDescription.cs @@ -222,6 +222,20 @@ namespace Mono.Addins.Description } } + public StringCollection AllIgnorePaths { + get { + StringCollection col = new StringCollection (); + foreach (string s in MainModule.IgnorePaths) + col.Add (s); + + foreach (ModuleDescription mod in OptionalModules) { + foreach (string s in mod.IgnorePaths) + col.Add (s); + } + return col; + } + } + public ModuleDescription MainModule { get { if (mainModule == null) { diff --git a/Mono.Addins/Mono.Addins.Description/ModuleDescription.cs b/Mono.Addins/Mono.Addins.Description/ModuleDescription.cs index fc8cd7c..4aada88 100644 --- a/Mono.Addins/Mono.Addins.Description/ModuleDescription.cs +++ b/Mono.Addins/Mono.Addins.Description/ModuleDescription.cs @@ -40,6 +40,7 @@ namespace Mono.Addins.Description { StringCollection assemblies; StringCollection dataFiles; + StringCollection ignorePaths; DependencyCollection dependencies; ExtensionCollection extensions; @@ -67,6 +68,14 @@ namespace Mono.Addins.Description return false; } + public StringCollection IgnorePaths { + get { + if (ignorePaths == null) + ignorePaths = new StringCollection (); + return ignorePaths; + } + } + public StringCollection AllFiles { get { StringCollection col = new StringCollection (); @@ -164,21 +173,32 @@ namespace Mono.Addins.Description { CreateElement (parent, "Module"); - if (assemblies != null || dataFiles != null) { + if (assemblies != null || dataFiles != null || ignorePaths != null) { XmlElement runtime = GetRuntimeElement (); while (runtime.FirstChild != null) runtime.RemoveChild (runtime.FirstChild); - foreach (string s in assemblies) { - XmlElement asm = Element.OwnerDocument.CreateElement ("Import"); - asm.SetAttribute ("assembly", s); - runtime.AppendChild (asm); + if (assemblies != null) { + foreach (string s in assemblies) { + XmlElement asm = Element.OwnerDocument.CreateElement ("Import"); + asm.SetAttribute ("assembly", s); + runtime.AppendChild (asm); + } + } + if (dataFiles != null) { + foreach (string s in dataFiles) { + XmlElement asm = Element.OwnerDocument.CreateElement ("Import"); + asm.SetAttribute ("file", s); + runtime.AppendChild (asm); + } } - foreach (string s in dataFiles) { - XmlElement asm = Element.OwnerDocument.CreateElement ("Import"); - asm.SetAttribute ("file", s); - runtime.AppendChild (asm); + if (ignorePaths != null) { + foreach (string s in ignorePaths) { + XmlElement asm = Element.OwnerDocument.CreateElement ("ScanExclude"); + asm.SetAttribute ("path", s); + runtime.AppendChild (asm); + } } runtime.AppendChild (Element.OwnerDocument.CreateTextNode ("\n")); } @@ -234,16 +254,21 @@ namespace Mono.Addins.Description dataFiles = new StringCollection (); assemblies = new StringCollection (); - XmlNodeList elems = Element.SelectNodes ("Runtime/Import"); + XmlNodeList elems = Element.SelectNodes ("Runtime/*"); foreach (XmlElement elem in elems) { - string asm = elem.GetAttribute ("assembly"); - if (asm != "") { - assemblies.Add (asm); - } else { - string file = elem.GetAttribute ("file"); - if (file != "") { - dataFiles.Add (file); + if (elem.LocalName == "Import") { + string asm = elem.GetAttribute ("assembly"); + if (asm.Length > 0) { + assemblies.Add (asm); + } else { + string file = elem.GetAttribute ("file"); + if (file.Length > 0) + dataFiles.Add (file); } + } else if (elem.LocalName == "ScanExclude") { + string path = elem.GetAttribute ("path"); + if (path.Length > 0) + IgnorePaths.Add (path); } } } @@ -260,6 +285,7 @@ namespace Mono.Addins.Description writer.WriteValue ("DataFiles", DataFiles); writer.WriteValue ("Dependencies", Dependencies); writer.WriteValue ("Extensions", Extensions); + writer.WriteValue ("IgnorePaths", ignorePaths); } internal override void Read (BinaryXmlReader reader) @@ -268,6 +294,7 @@ namespace Mono.Addins.Description dataFiles = (StringCollection) reader.ReadValue ("DataFiles", new StringCollection ()); dependencies = (DependencyCollection) reader.ReadValue ("Dependencies", new DependencyCollection (this)); extensions = (ExtensionCollection) reader.ReadValue ("Extensions", new ExtensionCollection (this)); + ignorePaths = (StringCollection) reader.ReadValue ("IgnorePaths", new StringCollection ()); } } } |