diff options
author | Matt Ward <matt.ward@xamarin.com> | 2017-05-09 18:46:13 +0300 |
---|---|---|
committer | Matt Ward <matt.ward@xamarin.com> | 2017-05-09 18:46:13 +0300 |
commit | 30f668669be517a2903785d36e70ed3aa45c8a34 (patch) | |
tree | 8ca8d2b9eae1e3d42f88e58115270b6348d220b2 /main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates | |
parent | 46d9c40486f45ac1d42da59a529928af3f05a41b (diff) |
[Ide] Support default parameters with the new templating engine
The project templates can now specify a comma or semi-colon set of
parameter values that will be used by default when creating project
templates with the templating engine that is used for .NET Core.
These parameter values can be set in a defaultParameters attribute.
<Template
id="MyTemplate"
path="Templates/ProjectTemplates.1.0.nupkg"
defaultParameters="framework=netcoreapp1.1"
category="netcore/library/general" />
Diffstat (limited to 'main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates')
2 files changed, 24 insertions, 3 deletions
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 0449b098c8..6459b3de30 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/MicrosoftTemplateEngineProjectTemplatingProvider.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/MicrosoftTemplateEngineProjectTemplatingProvider.cs @@ -135,14 +135,16 @@ namespace MonoDevelop.Ide.Templates public async Task<ProcessedTemplateResult> ProcessTemplate (SolutionTemplate template, NewProjectConfiguration config, SolutionFolder parentFolder) { - var templateInfo = ((MicrosoftTemplateEngineSolutionTemplate)template).templateInfo; + var solutionTemplate = (MicrosoftTemplateEngineSolutionTemplate)template; + var parameters = GetParameters (solutionTemplate); + var templateInfo = solutionTemplate.templateInfo; var workspaceItems = new List<IWorkspaceFileObject> (); var result = await templateCreator.InstantiateAsync ( templateInfo, config.ProjectName, config.GetValidProjectName (), config.ProjectLocation, - new Dictionary<string, string> (), + parameters, true, false, null); @@ -208,6 +210,25 @@ namespace MonoDevelop.Ide.Templates return processResult; } + Dictionary<string, string> GetParameters (MicrosoftTemplateEngineSolutionTemplate template) + { + var parameters = new Dictionary<string, string> (); + if (string.IsNullOrEmpty (template.DefaultParameters)) + return parameters; + + foreach (TemplateParameter parameter in GetValidParameters (template.DefaultParameters)) { + parameters [parameter.Name] = parameter.Value; + } + + return parameters; + } + + static IEnumerable<TemplateParameter> GetValidParameters (string parameters) + { + return TemplateParameter.CreateParameters (parameters) + .Where (parameter => parameter.IsValid); + } + async Task FormatFile (Project p, FilePath file) { string mime = DesktopService.GetMimeTypeForUri (file); diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/MicrosoftTemplateEngineSolutionTemplate.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/MicrosoftTemplateEngineSolutionTemplate.cs index 6942225ed2..f8d34ed475 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/MicrosoftTemplateEngineSolutionTemplate.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/MicrosoftTemplateEngineSolutionTemplate.cs @@ -53,7 +53,7 @@ namespace MonoDevelop.Ide.Templates //ProjectFileExtension = template.FileExtension; //Wizard = template.WizardPath; //SupportedParameters = template.SupportedParameters; - //DefaultParameters = template.DefaultParameters; + DefaultParameters = template.DefaultParameters; ImageId = template.ImageId; //ImageFile = template.ImageFile; //Visibility = GetVisibility (template.Visibility); |