internal async Task <NewCommandStatus> InvokeTemplateAsync(TemplateCommandArgs templateArgs, CancellationToken cancellationToken) { cancellationToken.ThrowIfCancellationRequested(); string?templateLanguage = templateArgs.Template.GetLanguage(); bool isMicrosoftAuthored = string.Equals(templateArgs.Template.Author, "Microsoft", StringComparison.OrdinalIgnoreCase); string?framework = null; string?auth = null; string?templateName = TelemetryHelper.HashWithNormalizedCasing(templateArgs.Template.Identity); if (isMicrosoftAuthored) { templateArgs.TemplateParameters.TryGetValue("Framework", out string?inputFrameworkValue); framework = TelemetryHelper.HashWithNormalizedCasing(TelemetryHelper.GetCanonicalValueForChoiceParamOrDefault(templateArgs.Template, "Framework", inputFrameworkValue)); templateArgs.TemplateParameters.TryGetValue("auth", out string?inputAuthValue); auth = TelemetryHelper.HashWithNormalizedCasing(TelemetryHelper.GetCanonicalValueForChoiceParamOrDefault(templateArgs.Template, "auth", inputAuthValue)); } bool success = true; try { return(await CreateTemplateAsync(templateArgs, cancellationToken).ConfigureAwait(false)); } catch (ContentGenerationException cx) { success = false; Reporter.Error.WriteLine(cx.Message.Bold().Red()); if (cx.InnerException != null) { Reporter.Error.WriteLine(cx.InnerException.Message.Bold().Red()); } return(NewCommandStatus.CreateFailed); } catch (Exception ex) { success = false; Reporter.Error.WriteLine(ex.Message.Bold().Red()); } finally { _telemetryLogger.TrackEvent(templateArgs.RootCommand.Name + TelemetryConstants.CreateEventSuffix, new Dictionary <string, string?> { { TelemetryConstants.Language, templateLanguage }, { TelemetryConstants.ArgError, "False" }, { TelemetryConstants.Framework, framework }, { TelemetryConstants.TemplateName, templateName }, { TelemetryConstants.IsTemplateThirdParty, (!isMicrosoftAuthored).ToString() }, { TelemetryConstants.CreationResult, success.ToString() }, { TelemetryConstants.Auth, auth } }); } return(NewCommandStatus.CreateFailed); }
public async Task <CreationResultStatus> InvokeTemplate(ITemplateMatchInfo templateToInvoke) { templateToInvoke.Info.Tags.TryGetValue("language", out ICacheTag language); bool isMicrosoftAuthored = string.Equals(templateToInvoke.Info.Author, "Microsoft", StringComparison.OrdinalIgnoreCase); string framework = null; string auth = null; string templateName = TelemetryHelper.HashWithNormalizedCasing(templateToInvoke.Info.Identity); if (isMicrosoftAuthored) { _commandInput.InputTemplateParams.TryGetValue("Framework", out string inputFrameworkValue); framework = TelemetryHelper.HashWithNormalizedCasing(TelemetryHelper.GetCanonicalValueForChoiceParamOrDefault(templateToInvoke.Info, "Framework", inputFrameworkValue)); _commandInput.InputTemplateParams.TryGetValue("auth", out string inputAuthValue); auth = TelemetryHelper.HashWithNormalizedCasing(TelemetryHelper.GetCanonicalValueForChoiceParamOrDefault(templateToInvoke.Info, "auth", inputAuthValue)); } bool argsError = CheckForArgsError(templateToInvoke, out string commandParseFailureMessage); if (argsError) { _telemetryLogger.TrackEvent(_commandName + TelemetryConstants.CreateEventSuffix, new Dictionary <string, string> { { TelemetryConstants.Language, language?.Choices.Keys.FirstOrDefault() }, { TelemetryConstants.ArgError, "True" }, { TelemetryConstants.Framework, framework }, { TelemetryConstants.TemplateName, templateName }, { TelemetryConstants.IsTemplateThirdParty, (!isMicrosoftAuthored).ToString() }, { TelemetryConstants.Auth, auth } }); if (commandParseFailureMessage != null) { Reporter.Error.WriteLine(commandParseFailureMessage.Bold().Red()); } Reporter.Error.WriteLine(string.Format(LocalizableStrings.RunHelpForInformationAboutAcceptedParameters, $"{_commandName} {_commandInput.TemplateName}").Bold().Red()); return(CreationResultStatus.InvalidParamValues); } else { bool success = true; try { return(await CreateTemplateAsync(templateToInvoke).ConfigureAwait(false)); } catch (ContentGenerationException cx) { success = false; Reporter.Error.WriteLine(cx.Message.Bold().Red()); if (cx.InnerException != null) { Reporter.Error.WriteLine(cx.InnerException.Message.Bold().Red()); } return(CreationResultStatus.CreateFailed); } catch (Exception ex) { success = false; Reporter.Error.WriteLine(ex.Message.Bold().Red()); } finally { _telemetryLogger.TrackEvent(_commandName + TelemetryConstants.CreateEventSuffix, new Dictionary <string, string> { { TelemetryConstants.Language, language?.Choices.Keys.FirstOrDefault() }, { TelemetryConstants.ArgError, "False" }, { TelemetryConstants.Framework, framework }, { TelemetryConstants.TemplateName, templateName }, { TelemetryConstants.IsTemplateThirdParty, (!isMicrosoftAuthored).ToString() }, { TelemetryConstants.CreationResult, success.ToString() }, { TelemetryConstants.Auth, auth } }); } return(CreationResultStatus.CreateFailed); } }