public Task Create(ITemplate template, IParameterSet parameters) { ProcessParameters(parameters); VsTemplate tmplt = (VsTemplate)template; XElement templateContent = tmplt.VsTemplateFile.Root.Descendants().First(x => x.Name.LocalName == "TemplateContent"); ParameterSet p = (ParameterSet)parameters; foreach (CustomParameter parameter in tmplt.CustomParameters) { ITemplateParameter target; if (p.TryGetParameter(parameter.Name, out target)) { if (!p.ParameterValues.ContainsKey(target)) { p.ParameterValues[target] = parameter.DefaultValue; } } } ITemplateParameter projectNameParameter; p.TryGetParameter("projectname", out projectNameParameter); Dictionary <string, string> fileMap = new Dictionary <string, string>(StringComparer.OrdinalIgnoreCase); List <string> copyOnly = new List <string>(); RecurseContent(templateContent, "", "", tmplt.DefaultName, parameters.ParameterValues[projectNameParameter], fileMap, copyOnly); VsTemplateOrchestrator o = new VsTemplateOrchestrator(); o.Run(new VsTemplateGlobalRunSpec(parameters, fileMap, copyOnly), tmplt.SourceFile.Parent, Directory.GetCurrentDirectory()); return(Task.FromResult(true)); }
private IEnumerable <ITemplate> GetTemplatesFromDir(IConfiguredTemplateSource source, ITemplateSourceFolder folder) { foreach (ITemplateSourceEntry entry in folder.Children) { if (entry.Kind == TemplateSourceEntryKind.File && entry.FullPath.EndsWith(".vstemplate")) { VsTemplate tmp = null; try { tmp = new VsTemplate((ITemplateSourceFile)entry, source, this); } catch { } if (tmp != null) { yield return(tmp); } } else if (entry.Kind == TemplateSourceEntryKind.Folder) { foreach (ITemplate template in GetTemplatesFromDir(source, (ITemplateSourceFolder)entry)) { yield return(template); } } } }
public IParameterSet GetParametersForTemplate(ITemplate template) { ParameterSet result = new ParameterSet(); VsTemplate tmplt = (VsTemplate)template; foreach (CustomParameter param in tmplt.CustomParameters) { result.AddParameter(new Parameter(param.Name, TemplateParameterPriority.Optional, "string", defaultValue: param.DefaultValue)); } return(result); }