public bool Process(IEngineEnvironmentSettings settings, IPostAction actionConfig, ICreationResult templateCreationResult, string outputBasePath) { if (templateCreationResult.PrimaryOutputs.Count == 0) { settings.Host.LogMessage(LocalizableStrings.NoPrimaryOutputsToRestore); return(true); } bool allSucceeded = true; foreach (ICreationPath output in templateCreationResult.PrimaryOutputs) { string pathToRestore = !string.IsNullOrEmpty(outputBasePath) ? Path.Combine(outputBasePath, output.Path) : output.Path; Dotnet restoreCommand = Dotnet.Restore(pathToRestore); restoreCommand.CaptureStdOut(); restoreCommand.CaptureStdErr(); settings.Host.LogMessage(string.Format(LocalizableStrings.RunningDotnetRestoreOn, pathToRestore)); Dotnet.Result commandResult = restoreCommand.Execute(); if (commandResult.ExitCode != 0) { settings.Host.LogMessage(LocalizableStrings.RestoreFailed); settings.Host.LogMessage(string.Format(LocalizableStrings.CommandOutput, commandResult.StdOut + Environment.NewLine + Environment.NewLine + commandResult.StdErr)); settings.Host.LogMessage(string.Empty); allSucceeded = false; } else { settings.Host.LogMessage(LocalizableStrings.RestoreSucceeded); } } return(allSucceeded); }
public bool Process(IEngineEnvironmentSettings environment, IPostAction actionConfig, ICreationResult templateCreationResult, string outputBasePath) { if (templateCreationResult.PrimaryOutputs.Count == 0) { environment.Host.LogMessage(LocalizableStrings.NoPrimaryOutputsToRestore); return(true); } bool allSucceeded = true; foreach (ICreationPath output in templateCreationResult.PrimaryOutputs) { string pathToRestore = !string.IsNullOrEmpty(outputBasePath) ? Path.Combine(outputBasePath, output.Path) : output.Path; if (string.IsNullOrEmpty(pathToRestore) || (!Directory.Exists(pathToRestore) && !Path.GetExtension(pathToRestore).EndsWith("proj", StringComparison.OrdinalIgnoreCase) && !Path.GetExtension(pathToRestore).Equals(".sln", StringComparison.OrdinalIgnoreCase) )) { continue; } environment.Host.LogMessage(string.Format(LocalizableStrings.RunningDotnetRestoreOn, pathToRestore)); // Prefer to restore the project in-proc vs. creating a new process. bool succeeded = false; if (Callbacks.RestoreProject != null) { succeeded = Callbacks.RestoreProject(pathToRestore); } else { Dotnet restoreCommand = Dotnet.Restore(pathToRestore).ForwardStdErr().ForwardStdOut(); Dotnet.Result commandResult = restoreCommand.Execute(); succeeded = commandResult.ExitCode == 0; } if (!succeeded) { environment.Host.LogMessage(LocalizableStrings.RestoreFailed); allSucceeded = false; } else { environment.Host.LogMessage(LocalizableStrings.RestoreSucceeded); } } return(allSucceeded); }
public bool Process(IEngineEnvironmentSettings environment, IPostAction actionConfig, ICreationResult templateCreationResult, string outputBasePath) { if (string.IsNullOrEmpty(outputBasePath)) { environment.Host.LogMessage(string.Format(LocalizableStrings.AddProjToSlnPostActionUnresolvedSlnFile)); return(false); } IReadOnlyList <string> nearestSlnFilesFould = FindSolutionFilesAtOrAbovePath(environment.Host.FileSystem, outputBasePath); if (nearestSlnFilesFould.Count != 1) { environment.Host.LogMessage(LocalizableStrings.AddProjToSlnPostActionUnresolvedSlnFile); return(false); } if (!TryGetProjectFilesToAdd(environment, actionConfig, templateCreationResult, outputBasePath, out IReadOnlyList <string> projectFiles)) { environment.Host.LogMessage(LocalizableStrings.AddProjToSlnPostActionNoProjFiles); return(false); } string solutionFolder = GetSolutionFolder(actionConfig); Dotnet addProjToSlnCommand = Dotnet.AddProjectsToSolution(nearestSlnFilesFould[0], projectFiles, GetSolutionFolder(actionConfig)); addProjToSlnCommand.CaptureStdOut(); addProjToSlnCommand.CaptureStdErr(); environment.Host.LogMessage(string.Format(LocalizableStrings.AddProjToSlnPostActionRunning, addProjToSlnCommand.Command)); Dotnet.Result commandResult = addProjToSlnCommand.Execute(); if (commandResult.ExitCode != 0) { environment.Host.LogMessage(string.Format(LocalizableStrings.AddProjToSlnPostActionFailed, string.Join(" ", projectFiles), nearestSlnFilesFould[0], solutionFolder)); environment.Host.LogMessage(string.Format(LocalizableStrings.CommandOutput, commandResult.StdOut + Environment.NewLine + Environment.NewLine + commandResult.StdErr)); environment.Host.LogMessage(string.Empty); return(false); } else { environment.Host.LogMessage(string.Format(LocalizableStrings.AddProjToSlnPostActionSucceeded, string.Join(" ", projectFiles), nearestSlnFilesFould[0], solutionFolder)); return(true); } }
public bool Process(IEngineEnvironmentSettings environment, IPostAction actionConfig, ICreationResult templateCreationResult, string outputBasePath) { if (templateCreationResult.PrimaryOutputs.Count == 0) { environment.Host.LogMessage(LocalizableStrings.NoPrimaryOutputsToRestore); return(true); } bool allSucceeded = true; foreach (ICreationPath output in templateCreationResult.PrimaryOutputs) { string pathToRestore = !string.IsNullOrEmpty(outputBasePath) ? Path.Combine(outputBasePath, output.Path) : output.Path; if (string.IsNullOrEmpty(pathToRestore) || (!Directory.Exists(pathToRestore) && !Path.GetExtension(pathToRestore).EndsWith("proj", StringComparison.OrdinalIgnoreCase))) { continue; } Dotnet restoreCommand = Dotnet.Restore(pathToRestore); restoreCommand.CaptureStdOut(); restoreCommand.CaptureStdErr(); environment.Host.LogMessage(string.Format(LocalizableStrings.RunningDotnetRestoreOn, pathToRestore)); Dotnet.Result commandResult = restoreCommand.Execute(); if (commandResult.ExitCode != 0) { environment.Host.LogMessage(LocalizableStrings.RestoreFailed); environment.Host.LogMessage(string.Format(LocalizableStrings.CommandOutput, commandResult.StdOut + Environment.NewLine + Environment.NewLine + commandResult.StdErr)); environment.Host.LogMessage(string.Empty); allSucceeded = false; } else { environment.Host.LogMessage(LocalizableStrings.RestoreSucceeded); } } return(allSucceeded); }
public bool Process(IEngineEnvironmentSettings environment, IPostAction action, ICreationEffects2 creationEffects, ICreationResult templateCreationResult, string outputBasePath) { if (string.IsNullOrEmpty(outputBasePath)) { environment.Host.LogMessage(string.Format(LocalizableStrings.AddProjToSlnPostActionUnresolvedSlnFile)); return(false); } IReadOnlyList <string> nearestSlnFilesFould = FindSolutionFilesAtOrAbovePath(environment.Host.FileSystem, outputBasePath); if (nearestSlnFilesFould.Count != 1) { environment.Host.LogMessage(LocalizableStrings.AddProjToSlnPostActionUnresolvedSlnFile); return(false); } IReadOnlyList <string> projectFiles; if (action.Args.TryGetValue("projectFiles", out string configProjectFiles)) { JToken config = JToken.Parse(configProjectFiles); List <string> allProjects = new List <string>(); if (config is JArray arr) { foreach (JToken globText in arr) { if (globText.Type != JTokenType.String) { continue; } foreach (string path in GetTargetForSource(creationEffects, globText.ToString())) { if (Path.GetExtension(path).EndsWith("proj", StringComparison.OrdinalIgnoreCase)) { allProjects.Add(path); } } } } else if (config.Type == JTokenType.String) { foreach (string path in GetTargetForSource(creationEffects, config.ToString())) { if (Path.GetExtension(path).EndsWith("proj", StringComparison.OrdinalIgnoreCase)) { allProjects.Add(path); } } } if (allProjects.Count == 0) { environment.Host.LogMessage(LocalizableStrings.AddProjToSlnPostActionNoProjFiles); return(false); } projectFiles = allProjects; } else { //If the author didn't opt in to the new behavior by specifying "projectFiles", use the old behavior return(Process(environment, action, templateCreationResult, outputBasePath)); } string solutionFolder = GetSolutionFolder(action); Dotnet addProjToSlnCommand = Dotnet.AddProjectsToSolution(nearestSlnFilesFould[0], projectFiles, solutionFolder); addProjToSlnCommand.CaptureStdOut(); addProjToSlnCommand.CaptureStdErr(); environment.Host.LogMessage(string.Format(LocalizableStrings.AddProjToSlnPostActionRunning, addProjToSlnCommand.Command)); Dotnet.Result commandResult = addProjToSlnCommand.Execute(); if (commandResult.ExitCode != 0) { environment.Host.LogMessage(string.Format(LocalizableStrings.AddProjToSlnPostActionFailed, string.Join(" ", projectFiles), nearestSlnFilesFould[0], solutionFolder)); environment.Host.LogMessage(string.Format(LocalizableStrings.CommandOutput, commandResult.StdOut + Environment.NewLine + Environment.NewLine + commandResult.StdErr)); environment.Host.LogMessage(string.Empty); return(false); } else { environment.Host.LogMessage(string.Format(LocalizableStrings.AddProjToSlnPostActionSucceeded, string.Join(" ", projectFiles), nearestSlnFilesFould[0], solutionFolder)); return(true); } }
public bool Process(IEngineEnvironmentSettings environment, IPostAction actionConfig, ICreationEffects2 creationEffects, ICreationResult templateCreationResult, string outputBasePath) { bool allSucceeded = true; IEnumerable <string> targetFiles = null; if (actionConfig.Args.TryGetValue("files", out string specificFilesString)) { JToken config = JToken.Parse(specificFilesString); if (config.Type == JTokenType.String) { targetFiles = specificFilesString.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries).SelectMany(x => GetTargetForSource(creationEffects, x)); } else if (config is JArray arr) { List <string> allFiles = new List <string>(); foreach (JToken child in arr) { if (child.Type != JTokenType.String) { continue; } allFiles.AddRange(GetTargetForSource(creationEffects, child.ToString())); } if (allFiles.Count > 0) { targetFiles = allFiles; } } } else { //If the author didn't opt in to the new behavior by using "files", do things the old way return(Process(environment, actionConfig, templateCreationResult, outputBasePath)); } if (targetFiles is null) { environment.Host.LogMessage(string.Format(LocalizableStrings.CouldntDetermineFilesToRestore)); return(false); } foreach (string targetRelativePath in targetFiles) { string pathToRestore = !string.IsNullOrEmpty(outputBasePath) ? Path.Combine(outputBasePath, targetRelativePath) : targetRelativePath; if (string.IsNullOrEmpty(pathToRestore) || (!Directory.Exists(pathToRestore) && !Path.GetExtension(pathToRestore).EndsWith("proj", StringComparison.OrdinalIgnoreCase) && !Path.GetExtension(pathToRestore).Equals(".sln", StringComparison.OrdinalIgnoreCase) )) { continue; } environment.Host.LogMessage(string.Format(LocalizableStrings.RunningDotnetRestoreOn, pathToRestore)); Dotnet restoreCommand = Dotnet.Restore(pathToRestore).ForwardStdErr().ForwardStdOut(); Dotnet.Result commandResult = restoreCommand.Execute(); if (commandResult.ExitCode != 0) { environment.Host.LogMessage(LocalizableStrings.RestoreFailed); allSucceeded = false; } else { environment.Host.LogMessage(LocalizableStrings.RestoreSucceeded); } } return(allSucceeded); }