Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono-addins.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLluis Sanchez <lluis@novell.com>2008-07-15 18:27:05 +0400
committerLluis Sanchez <lluis@novell.com>2008-07-15 18:27:05 +0400
commitfeca460d996379b6817c6ffc569f302758205310 (patch)
tree331557a6ce07914416436d2403ee6e8d2c681ae0 /Mono.Addins/Mono.Addins.Description
parenteef18bbf8df320ee6fb60f615fb0859dddcd9521 (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.cs14
-rw-r--r--Mono.Addins/Mono.Addins.Description/ModuleDescription.cs61
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 ());
}
}
}