diff options
author | Matt Ward <matt.ward@microsoft.com> | 2018-02-27 16:58:13 +0300 |
---|---|---|
committer | Matt Ward <matt.ward@microsoft.com> | 2018-03-26 13:52:58 +0300 |
commit | 43d1669906892e62c4e5f7ba8dcd5b9fc9fa0c0d (patch) | |
tree | 972ef0938e6dd620a28d96807837699f07638fbd /main/src/core | |
parent | 4a0baa842df834c752398122fdc9307223a26ac8 (diff) |
[Ide] Allow string parser placeholders in template scan path
With the new templating engine the template's scan path can now
contain string parser placeholders that will be expanded by having
the path parsed by the StringParserService's Parse method.
Diffstat (limited to 'main/src/core')
3 files changed, 19 insertions, 6 deletions
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Codons/TemplateExtensionNode.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Codons/TemplateExtensionNode.cs index a50d80c12e..86225fc1e2 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Codons/TemplateExtensionNode.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Codons/TemplateExtensionNode.cs @@ -45,6 +45,13 @@ namespace MonoDevelop.Ide.Codons public string ScanPath { get { + // If the path starts with '${' then the path contains a placeholder + // that the StringParserService will replace. The path is returned + // without calling Addin.GetFilePath to prevent the addin directory + // being prefixed to the path. + if (path != null && path.StartsWith ("${", StringComparison.Ordinal)) { + return path; + } return Addin.GetFilePath (path); } } diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/MicrosoftTemplateEngine.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/MicrosoftTemplateEngine.cs index 1933a95d70..0962724bf0 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/MicrosoftTemplateEngine.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/MicrosoftTemplateEngine.cs @@ -1,4 +1,4 @@ -// +// // MicrosoftTemplateEngine.cs // // Author: @@ -86,12 +86,18 @@ namespace MonoDevelop.Ide.Templates paths.DeleteDirectory (paths.User.BaseDir);//Delete cache var settingsLoader = (SettingsLoader)environmentSettings.SettingsLoader; - foreach (var scanPath in projectTemplateNodes.Select (t => t.ScanPath).Distinct ()) { - settingsLoader.UserTemplateCache.Scan (scanPath); + foreach (var path in projectTemplateNodes.Select (t => t.ScanPath).Distinct ()) { + string scanPath = StringParserService.Parse (path); + if (!string.IsNullOrEmpty (scanPath)) { + settingsLoader.UserTemplateCache.Scan (scanPath); + } } - foreach (var scanPath in itemTemplateNodes.Select (t => t.ScanPath).Distinct ()) { - settingsLoader.UserTemplateCache.Scan (scanPath); + foreach (var path in itemTemplateNodes.Select (t => t.ScanPath).Distinct ()) { + string scanPath = StringParserService.Parse (path); + if (!string.IsNullOrEmpty (scanPath)) { + settingsLoader.UserTemplateCache.Scan (scanPath); + } } settingsLoader.Save (); diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/MicrosoftTemplateEngineProjectTemplatingProvider.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/MicrosoftTemplateEngineProjectTemplatingProvider.cs index bd80e8d0ba..6724b41f39 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/MicrosoftTemplateEngineProjectTemplatingProvider.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/MicrosoftTemplateEngineProjectTemplatingProvider.cs @@ -1,4 +1,4 @@ -// +// // MicrosoftTemplateEngineProjectTemplatingProvider.cs // // Author: |