public Executable BuildCommandExecutable(string commandPath, string workingDirectory, TimeSpan idleTimeout, ILogger logger) { // Creates an executable pointing to cmd and the working directory being // the repository root var exe = new Executable(commandPath, workingDirectory, idleTimeout); exe.AddDeploymentSettingsAsEnvironmentVariables(_deploymentSettings); UpdateToDefaultIfNotSet(exe, WellKnownEnvironmentVariables.WebRootPath, _environment.WebRootPath, logger); UpdateToDefaultIfNotSet(exe, WellKnownEnvironmentVariables.MSBuildPath, PathUtility.ResolveMSBuildPath(), logger); UpdateToDefaultIfNotSet(exe, WellKnownEnvironmentVariables.KuduSyncCommandKey, KuduSyncCommand, logger); UpdateToDefaultIfNotSet(exe, WellKnownEnvironmentVariables.NuGetExeCommandKey, NuGetExeCommand, logger); UpdateToDefaultIfNotSet(exe, WellKnownEnvironmentVariables.NpmJsPathKey, PathUtility.ResolveNpmJsPath(), logger); UpdateToDefaultIfNotSet(exe, WellKnownEnvironmentVariables.DnvmPath, DnvmPath, logger); UpdateToDefaultIfNotSet(exe, WellKnownEnvironmentVariables.GypMsvsVersion, Constants.VCVersion, logger); UpdateToDefaultIfNotSet(exe, WellKnownEnvironmentVariables.VCTargetsPath, PathUtility.ResolveVCTargetsPath(), logger); UpdateToDefaultIfNotSet(exe, WellKnownEnvironmentVariables.VCInstallDir140, PathUtility.ResolveVCInstallDirPath(), logger); exe.SetHomePath(_environment); // Set the path so we can add more variables string path = System.Environment.GetEnvironmentVariable("PATH"); exe.EnvironmentVariables["PATH"] = path; // Add the msbuild path and git path to the %PATH% so more tools are available var toolsPaths = new List<string> { _environment.ScriptPath, Path.GetDirectoryName(PathUtility.ResolveMSBuildPath()), Path.GetDirectoryName(PathUtility.ResolveGitPath()), Path.GetDirectoryName(PathUtility.ResolveVsTestPath()), Path.GetDirectoryName(PathUtility.ResolveSQLCmdPath()), Path.GetDirectoryName(PathUtility.ResolveFSharpCPath()) }; toolsPaths.AddRange(PathUtility.ResolveNodeNpmPaths()); toolsPaths.Add(PathUtility.ResolveNpmGlobalPrefix()); toolsPaths.AddRange(new[] { PathUtility.ResolveBowerPath(), PathUtility.ResolveGruntPath(), PathUtility.ResolveGulpPath() }.Where(p => !String.IsNullOrEmpty(p)).Select(Path.GetDirectoryName)); exe.PrependToPath(toolsPaths); return exe; }
public Executable BuildExternalCommandExecutable(string workingDirectory, string deploymentTargetPath, ILogger logger) { string sourcePath = _repositoryPath; string targetPath = deploymentTargetPath; // Creates an executable pointing to cmd and the working directory being // the repository root var exe = new Executable(StarterScriptPath, workingDirectory, _deploymentSettings.GetCommandIdleTimeout()); exe.AddDeploymentSettingsAsEnvironmentVariables(_deploymentSettings); UpdateToDefaultIfNotSet(exe, WellKnownEnvironmentVariables.SourcePath, sourcePath, logger); UpdateToDefaultIfNotSet(exe, WellKnownEnvironmentVariables.TargetPath, targetPath, logger); UpdateToDefaultIfNotSet(exe, WellKnownEnvironmentVariables.WebRootPath, _environment.WebRootPath, logger); UpdateToDefaultIfNotSet(exe, WellKnownEnvironmentVariables.MSBuildPath, PathUtility.ResolveMSBuildPath(), logger); UpdateToDefaultIfNotSet(exe, WellKnownEnvironmentVariables.KuduSyncCommandKey, KuduSyncCommand, logger); UpdateToDefaultIfNotSet(exe, WellKnownEnvironmentVariables.NuGetExeCommandKey, NuGetExeCommand, logger); UpdateToDefaultIfNotSet(exe, WellKnownEnvironmentVariables.PostDeploymentActionsCommandKey, PostDeploymentActionsCommand, logger); UpdateToDefaultIfNotSet(exe, WellKnownEnvironmentVariables.PostDeploymentActionsDirectoryKey, PostDeploymentActionsDir, logger); UpdateToDefaultIfNotSet(exe, WellKnownEnvironmentVariables.SelectNodeVersionCommandKey, SelectNodeVersionCommand, logger); UpdateToDefaultIfNotSet(exe, WellKnownEnvironmentVariables.NpmJsPathKey, PathUtility.ResolveNpmJsPath(), logger); bool isInPlace = false; string project = _deploymentSettings.GetValue(SettingsKeys.Project); if (!String.IsNullOrEmpty(project)) { isInPlace = PathUtility.PathsEquals(Path.Combine(sourcePath, project), targetPath); } else { isInPlace = PathUtility.PathsEquals(sourcePath, targetPath); } if (isInPlace) { UpdateToDefaultIfNotSet(exe, WellKnownEnvironmentVariables.InPlaceDeployment, "1", logger); } // NuGet.exe 1.8 will require an environment variable to make package restore work exe.EnvironmentVariables[WellKnownEnvironmentVariables.NuGetPackageRestoreKey] = "true"; exe.SetHomePath(_environment.SiteRootPath); // Set the path so we can add more variables string path = System.Environment.GetEnvironmentVariable("PATH"); exe.EnvironmentVariables["PATH"] = path; // Add the msbuild path and git path to the %PATH% so more tools are available var toolsPaths = new List<string> { Path.GetDirectoryName(PathUtility.ResolveMSBuildPath()), Path.GetDirectoryName(PathUtility.ResolveGitPath()), Path.GetDirectoryName(PathUtility.ResolveVsTestPath()) }; string nodeExePath = PathUtility.ResolveNodePath(); if (!String.IsNullOrEmpty(nodeExePath)) { // If IIS node path is available prepend it to the path list so that it's discovered before any other node versions in the path. toolsPaths.Add(Path.GetDirectoryName(nodeExePath)); } exe.PrependToPath(toolsPaths); return exe; }
public Executable BuildCommandExecutable(string commandPath, string workingDirectory, TimeSpan idleTimeout, ILogger logger) { // Creates an executable pointing to cmd and the working directory being // the repository root var exe = new Executable(commandPath, workingDirectory, idleTimeout); exe.AddDeploymentSettingsAsEnvironmentVariables(_deploymentSettings); UpdateToDefaultIfNotSet(exe, WellKnownEnvironmentVariables.WebRootPath, _environment.WebRootPath, logger); UpdateToDefaultIfNotSet(exe, WellKnownEnvironmentVariables.MSBuildPath, PathUtility.ResolveMSBuildPath(), logger); UpdateToDefaultIfNotSet(exe, WellKnownEnvironmentVariables.KuduSyncCommandKey, KuduSyncCommand, logger); UpdateToDefaultIfNotSet(exe, WellKnownEnvironmentVariables.NuGetExeCommandKey, NuGetExeCommand, logger); UpdateToDefaultIfNotSet(exe, WellKnownEnvironmentVariables.NpmJsPathKey, PathUtility.ResolveNpmJsPath(), logger); exe.SetHomePath(_environment); // Set the path so we can add more variables string path = System.Environment.GetEnvironmentVariable("PATH"); exe.EnvironmentVariables["PATH"] = path; // Add the msbuild path and git path to the %PATH% so more tools are available var toolsPaths = new List<string> { Path.GetDirectoryName(PathUtility.ResolveMSBuildPath()), Path.GetDirectoryName(PathUtility.ResolveGitPath()), Path.GetDirectoryName(PathUtility.ResolveVsTestPath()), Path.GetDirectoryName(PathUtility.ResolveSQLCmdPath()), _environment.ScriptPath }; string nodeExePath = PathUtility.ResolveNodePath(); if (!String.IsNullOrEmpty(nodeExePath)) { // If IIS node path is available prepend it to the path list so that it's discovered before any other node versions in the path. toolsPaths.Add(Path.GetDirectoryName(nodeExePath)); } string npmExePath = PathUtility.ResolveNpmCmdPath(); if (!String.IsNullOrEmpty(npmExePath)) { toolsPaths.Add(Path.GetDirectoryName(npmExePath)); } exe.PrependToPath(toolsPaths); return exe; }