public static CreationResultStatus ManipulateAliasIfValid(AliasRegistry aliasRegistry, string aliasName, List <string> inputTokens, HashSet <string> reservedAliasNames) { if (reservedAliasNames.Contains(aliasName)) { Reporter.Output.WriteLine(string.Format(LocalizableStrings.AliasCannotBeShortName, aliasName)); return(CreationResultStatus.CreateFailed); } else if (InvalidAliasRegex.IsMatch(aliasName)) { Reporter.Output.WriteLine(LocalizableStrings.AliasNameContainsInvalidCharacters); // TODO - change this string return(CreationResultStatus.InvalidParamValues); } inputTokens.RemoveAt(0); // remove the command name IReadOnlyList <string> aliasTokens = FilterForAliasTokens(inputTokens); // remove '-a' or '--alias', and the alias name // The first token refers to a template name, or another alias. if (aliasTokens.Count > 0 && !ValidFirstTokenRegex.IsMatch(aliasTokens[0])) { Reporter.Output.WriteLine(LocalizableStrings.AliasValueFirstArgError); return(CreationResultStatus.InvalidParamValues); } // create, update, or delete an alias. return(ManipulateAliasValue(aliasName, aliasTokens, aliasRegistry)); }
public static async Task <int> Instantiate(ITemplateEngineHost host, string templateName, string name, string fallbackName, bool createDir, string aliasName, IReadOnlyDictionary <string, string> inputParameters, bool skipUpdateCheck) { ITemplateInfo templateInfo; using (Timing.Over("Get single")) { if (!TryGetTemplate(templateName, out templateInfo)) { return(-1); } } ITemplate template = SettingsLoader.LoadTemplate(templateInfo); if (!skipUpdateCheck) { host.LogMessage("Checking for updates..."); //UpdateCheck(); // this'll need params } string realName = name ?? template.DefaultName ?? fallbackName; IParameterSet templateParams = SetupDefaultParamValuesFromTemplateAndHost(host, template, realName); if (aliasName != null) { //TODO: Add parameters to aliases (from _parameters_ collection) AliasRegistry.SetTemplateAlias(aliasName, template); host.LogMessage("Alias created."); return(0); } ResolveUserParameters(template, templateParams, inputParameters); bool missingParams = CheckForMissingRequiredParameters(host, templateParams); if (missingParams) { return(missingParams ? -1 : 0); } try { Stopwatch sw = Stopwatch.StartNew(); // todo: pass an implementation of ITemplateEngineHost IComponentManager componentManager = Settings.SettingsLoader.Components; await template.Generator.Create(host, template, templateParams, componentManager); sw.Stop(); host.OnTimingCompleted("Content generation time", sw.Elapsed); } finally { } return(0); }
public void SetUp() { fileSystem = MockRepository.GenerateMock <IFileSystem>(); theRegistry = new AliasRegistry(); fileSystem.Stub(x => x.LoadFromFile <AliasRegistry>(AliasRegistry.ALIAS_FILE)) .Return(theRegistry); theCommand = new AliasCommand(); }
public New3Command(string commandName, ITemplateEngineHost host, Action <IEngineEnvironmentSettings, IInstaller> onFirstRun, ExtendedCommandParser app, CommandArgument templateName) { host = new ExtendedTemplateEngineHost(host, this); EnvironmentSettings = new EngineEnvironmentSettings(host, x => new SettingsLoader(x)); Installer = new Installer(EnvironmentSettings); _templateCreator = new TemplateCreator(EnvironmentSettings); _templateCache = new TemplateCache(EnvironmentSettings); _aliasRegistry = new AliasRegistry(EnvironmentSettings); CommandName = commandName; _paths = new Paths(EnvironmentSettings); _app = app; _templateNameArgument = templateName; _onFirstRun = onFirstRun; }
private void writeAliases(AliasRegistry registry) { if (!registry.Aliases.Any()) { ConsoleWriter.Write(" No aliases are registered"); return; } var maximumLength = registry.Aliases.Select(x => x.Name.Length).Max(); var format = " {0," + maximumLength + "} -> {1}"; ConsoleWriter.Line(); ConsoleWriter.PrintHorizontalLine(); ConsoleWriter.Write(" Aliases:"); ConsoleWriter.PrintHorizontalLine(); registry.Aliases.OrderBy(x => x.Name).Each(x => { ConsoleWriter.Write(format, x.Name, x.Folder); }); ConsoleWriter.PrintHorizontalLine(); }
public New3Command(string commandName, ITemplateEngineHost host, ITelemetryLogger telemetryLogger, Action <IEngineEnvironmentSettings, IInstaller> onFirstRun, INewCommandInput commandInput, string hivePath) { _telemetryLogger = telemetryLogger; host = new ExtendedTemplateEngineHost(host, this); EnvironmentSettings = new EngineEnvironmentSettings(host, x => new SettingsLoader(x), hivePath); _settingsLoader = (SettingsLoader)EnvironmentSettings.SettingsLoader; Installer = new Installer(EnvironmentSettings); _templateCreator = new TemplateCreator(EnvironmentSettings); _aliasRegistry = new AliasRegistry(EnvironmentSettings); CommandName = commandName; _paths = new Paths(EnvironmentSettings); _onFirstRun = onFirstRun; _hostDataLoader = new HostSpecificDataLoader(EnvironmentSettings.SettingsLoader); _commandInput = commandInput; if (!EnvironmentSettings.Host.TryGetHostParamDefault("prefs:language", out _defaultLanguage)) { _defaultLanguage = null; } }
internal New3Command(string commandName, ITemplateEngineHost host, ITelemetryLogger telemetryLogger, New3Callbacks callbacks, INewCommandInput commandInput, string?hivePath, bool virtualize = false) { _telemetryLogger = telemetryLogger; host = new ExtendedTemplateEngineHost(host, this); EnvironmentSettings = new EngineEnvironmentSettings(host, settingsLocation: hivePath, onFirstRun: FirstRun, virtualizeSettings: virtualize); _settingsLoader = EnvironmentSettings.SettingsLoader; _templateCreator = new TemplateCreator(EnvironmentSettings); _aliasRegistry = new AliasRegistry(EnvironmentSettings); CommandName = commandName; _hostDataLoader = new HostSpecificDataLoader(EnvironmentSettings.SettingsLoader); _commandInput = commandInput; _callbacks = callbacks; if (callbacks == null) { callbacks = new New3Callbacks(); } if (!EnvironmentSettings.Host.TryGetHostParamDefault("prefs:language", out _defaultLanguage)) { _defaultLanguage = null; } }
// returns the templates whose: // name or shortName contains the searchString // matches by a registered alias public static IReadOnlyCollection <ITemplateInfo> List(string searchString) { HashSet <ITemplateInfo> matchingTemplates = new HashSet <ITemplateInfo>(TemplateEqualityComparer.Default); HashSet <ITemplateInfo> allTemplates = new HashSet <ITemplateInfo>(TemplateEqualityComparer.Default); using (Timing.Over("load")) SettingsLoader.GetTemplates(allTemplates); using (Timing.Over("Search in loaded")) foreach (ITemplateInfo template in allTemplates) { if (string.IsNullOrEmpty(searchString) || template.Name.IndexOf(searchString, StringComparison.OrdinalIgnoreCase) > -1 || template.ShortName.IndexOf(searchString, StringComparison.OrdinalIgnoreCase) > -1) { matchingTemplates.Add(template); } } using (Timing.Over("Alias search")) { #if !NET451 IReadOnlyCollection <ITemplateInfo> allTemplatesCollection = allTemplates; #else IReadOnlyCollection <ITemplateInfo> allTemplatesCollection = allTemplates.ToList(); #endif matchingTemplates.UnionWith(AliasRegistry.GetTemplatesForAlias(searchString, allTemplatesCollection)); } #if !NET451 IReadOnlyCollection <ITemplateInfo> matchingTemplatesCollection = matchingTemplates; #else IReadOnlyCollection <ITemplateInfo> matchingTemplatesCollection = matchingTemplates.ToList(); #endif return(matchingTemplatesCollection); }
public TemplateManager() { var host = new ExtendedTemplateEngineHost(CreateHost(false), this); EnvironmentSettings = new EngineEnvironmentSettings(host, x => new SettingsLoader(x), null); _settingsLoader = (SettingsLoader)EnvironmentSettings.SettingsLoader; Installer = new Installer(EnvironmentSettings); _templateCreator = new TemplateCreator(EnvironmentSettings); _aliasRegistry = new AliasRegistry(EnvironmentSettings); CommandName = CommandNameString; _paths = new Paths(EnvironmentSettings); _onFirstRun = FirstRun; _hostDataLoader = new HostSpecificDataLoader(EnvironmentSettings.SettingsLoader); _commandInput = new NewCommandInputCli(CommandNameString); if (!EnvironmentSettings.Host.TryGetHostParamDefault("prefs:language", out _defaultLanguage)) { _defaultLanguage = null; } _commandInput.ResetArgs(); Initialise(); }
private static CreationResultStatus ManipulateAliasValue(string aliasName, IReadOnlyList <string> aliasTokens, AliasRegistry aliasRegistry) { AliasManipulationResult result = aliasRegistry.TryCreateOrRemoveAlias(aliasName, aliasTokens); CreationResultStatus returnStatus = CreationResultStatus.OperationNotSpecified; switch (result.Status) { case AliasManipulationStatus.Created: Reporter.Output.WriteLine(string.Format(LocalizableStrings.AliasCreated, result.AliasName, result.AliasValue)); returnStatus = CreationResultStatus.Success; break; case AliasManipulationStatus.Removed: Reporter.Output.WriteLine(string.Format(LocalizableStrings.AliasRemoved, result.AliasName, result.AliasValue)); returnStatus = CreationResultStatus.Success; break; case AliasManipulationStatus.RemoveNonExistentFailed: Reporter.Output.WriteLine(string.Format(LocalizableStrings.AliasRemoveNonExistentFailed, result.AliasName)); break; case AliasManipulationStatus.Updated: Reporter.Output.WriteLine(string.Format(LocalizableStrings.AliasUpdated, result.AliasName, result.AliasValue)); returnStatus = CreationResultStatus.Success; break; case AliasManipulationStatus.WouldCreateCycle: Reporter.Output.WriteLine(LocalizableStrings.AliasCycleError); returnStatus = CreationResultStatus.CreateFailed; break; case AliasManipulationStatus.InvalidInput: Reporter.Output.WriteLine(LocalizableStrings.AliasNotCreatedInvalidInput); returnStatus = CreationResultStatus.InvalidParamValues; break; } return(returnStatus); }
public static CreationResultStatus DisplayAliasValues(IEngineEnvironmentSettings environment, INewCommandInput commandInput, AliasRegistry aliasRegistry, string commandName) { IReadOnlyDictionary <string, string> aliasesToShow; if (!string.IsNullOrEmpty(commandInput.ShowAliasesAliasName)) { if (aliasRegistry.AllAliases.TryGetValue(commandInput.ShowAliasesAliasName, out string aliasValue)) { aliasesToShow = new Dictionary <string, string>() { { commandInput.ShowAliasesAliasName, aliasValue } }; } else { Reporter.Output.WriteLine(string.Format(LocalizableStrings.AliasShowErrorUnknownAlias, commandInput.ShowAliasesAliasName, commandName)); return(CreationResultStatus.InvalidParamValues); } } else { aliasesToShow = aliasRegistry.AllAliases; Reporter.Output.WriteLine(LocalizableStrings.AliasShowAllAliasesHeader); } HelpFormatter <KeyValuePair <string, string> > formatter = new HelpFormatter <KeyValuePair <string, string> >(environment, aliasesToShow, 2, '-', false) .DefineColumn(t => t.Key, LocalizableStrings.AliasName) .DefineColumn(t => t.Value, LocalizableStrings.AliasValue); Reporter.Output.WriteLine(formatter.Layout()); return(CreationResultStatus.Success); }
public static AliasExpansionStatus TryExpandAliases(INewCommandInput commandInput, AliasRegistry aliasRegistry) { List <string> inputTokens = commandInput.Tokens.ToList(); inputTokens.RemoveAt(0); // remove the command name if (aliasRegistry.TryExpandCommandAliases(inputTokens, out IReadOnlyList <string> expandedTokens)) { if (!expandedTokens.SequenceEqual(inputTokens)) { commandInput.ResetArgs(expandedTokens.ToArray()); return(AliasExpansionStatus.Expanded); } return(AliasExpansionStatus.NoChange); } return(AliasExpansionStatus.ExpansionError); }
public TemplateCreator(IEngineEnvironmentSettings environmentSettings) { _environmentSettings = environmentSettings; _aliasRegistry = new AliasRegistry(environmentSettings); _paths = new Paths(environmentSettings); }
public static async Task <int> Instantiate(string templateName, string name, string fallbackName, bool createDir, string aliasName, IReadOnlyDictionary <string, string> inputParameters, bool skipUpdateCheck) { ITemplateInfo templateInfo; using (Timing.Over("Get single")) { if (!TryGetTemplateInfoFromCache(templateName, out templateInfo)) { return(-1); } } // SettingsLoader.LoadTemplate is where the loc info should be read!!! // templateInfo knows enough to get at the loc, if any ITemplate template = SettingsLoader.LoadTemplate(templateInfo); if (!skipUpdateCheck) { EngineEnvironmentSettings.Host.LogMessage("Checking for updates..."); //UpdateCheck(); // this'll need params } string realName = name ?? template.DefaultName ?? fallbackName; IParameterSet templateParams = SetupDefaultParamValuesFromTemplateAndHost(template, realName); if (aliasName != null) { //TODO: Add parameters to aliases (from _parameters_ collection) AliasRegistry.SetTemplateAlias(aliasName, template); EngineEnvironmentSettings.Host.LogMessage("Alias created."); return(0); } ResolveUserParameters(template, templateParams, inputParameters); bool missingParams = CheckForMissingRequiredParameters(templateParams); if (missingParams) { return(missingParams ? -1 : 0); } ICreationResult creationResult; try { Stopwatch sw = Stopwatch.StartNew(); IComponentManager componentManager = Settings.SettingsLoader.Components; await template.Generator.Create(template, templateParams, componentManager, out creationResult); sw.Stop(); EngineEnvironmentSettings.Host.OnTimingCompleted("Content generation time", sw.Elapsed); } finally { } // TODO: pass back the creationResult (probably as an out param) // (and get rid of this debugging) creationResult.TEMP_CONSOLE_DEBUG_CreationResult(); return(0); }
public void SetUp() { fileSystem = MockRepository.GenerateMock<IFileSystem>(); theRegistry = new AliasRegistry(); fileSystem.Stub(x => x.LoadFromFile<AliasRegistry>(AliasRegistry.ALIAS_FILE)) .Return(theRegistry); theCommand = new AliasCommand(); }
private void persist(IFileSystem system, AliasRegistry registry) { system.WriteObjectToFile(AliasRegistry.ALIAS_FILE, registry); }
public static CreationResultStatus CoordinateAliasExpansion(INewCommandInput commandInput, AliasRegistry aliasRegistry, ITelemetryLogger telemetryLogger) { AliasExpansionStatus aliasExpansionStatus = AliasSupport.TryExpandAliases(commandInput, aliasRegistry); if (aliasExpansionStatus == AliasExpansionStatus.ExpansionError) { Reporter.Output.WriteLine(LocalizableStrings.AliasExpansionError); return(CreationResultStatus.InvalidParamValues); } else if (aliasExpansionStatus == AliasExpansionStatus.Expanded) { Reporter.Output.WriteLine(string.Format(LocalizableStrings.AliasCommandAfterExpansion, string.Join(" ", commandInput.Tokens))); if (commandInput.HasParseError) { Reporter.Output.WriteLine(LocalizableStrings.AliasExpandedCommandParseError); return(HelpForTemplateResolution.HandleParseError(commandInput, telemetryLogger)); } } // this is both for success and for no action. return(CreationResultStatus.Success); }
public static AliasExpansionStatus TryExpandAliases(INewCommandInput commandInput, AliasRegistry aliasRegistry) { List <string> inputTokens = commandInput.Tokens.ToList(); inputTokens.RemoveAt(0); // remove the command name if (aliasRegistry.TryExpandCommandAliases(inputTokens, out IReadOnlyList <string> expandedTokens)) { // TryExpandCommandAliases() return value indicates error (cycle) or not error. It doesn't indicate whether or not expansions actually occurred. if (!expandedTokens.SequenceEqual(inputTokens)) { commandInput.ResetArgs(expandedTokens.ToArray()); return(AliasExpansionStatus.Expanded); } return(AliasExpansionStatus.NoChange); } return(AliasExpansionStatus.ExpansionError); }
internal static CreationResultStatus DisplayAliasValues(IEngineEnvironmentSettings environment, INewCommandInput commandInput, AliasRegistry aliasRegistry, string commandName) { IReadOnlyDictionary <string, IReadOnlyList <string> > aliasesToShow; if (!string.IsNullOrEmpty(commandInput.ShowAliasesAliasName)) { if (aliasRegistry.AllAliases.TryGetValue(commandInput.ShowAliasesAliasName, out IReadOnlyList <string> aliasValue)) { aliasesToShow = new Dictionary <string, IReadOnlyList <string> >() { { commandInput.ShowAliasesAliasName, aliasValue } }; } else { Reporter.Output.WriteLine(string.Format(LocalizableStrings.AliasShowErrorUnknownAlias, commandInput.ShowAliasesAliasName, commandName)); return(CreationResultStatus.InvalidParamValues); } } else { aliasesToShow = aliasRegistry.AllAliases; Reporter.Output.WriteLine(LocalizableStrings.AliasShowAllAliasesHeader); } HelpFormatter <KeyValuePair <string, IReadOnlyList <string> > > formatter = new HelpFormatter <KeyValuePair <string, IReadOnlyList <string> > >( environment, commandInput, aliasesToShow, columnPadding: 2, headerSeparator: '-', blankLineBetweenRows: false) .DefineColumn(t => t.Key, LocalizableStrings.AliasName, showAlways: true) .DefineColumn(t => string.Join(" ", t.Value), LocalizableStrings.AliasValue, showAlways: true); Reporter.Output.WriteLine(formatter.Layout()); return(CreationResultStatus.Success); }