private void Compile() { if (Directory.Exists(InstallDir)) { Directory.Delete(InstallDir, true); } Directory.CreateDirectory(InstallDir); /* TODO * pct_space_used = pct_disk_used(@compile_base) * if pct_space_used >= @max_disk_usage_pct * raise Bosh::Agent::MessageHandlerError, * "Compile Package Failure. Greater than #{@max_disk_usage_pct}% " + * "is used (#{pct_space_used}%." * end */ using (DirectoryScope.Create(CompileDir)) { if (File.Exists(PackagingScriptName)) { log.Info(Resources.CompilePackage_CompilingPackage_Fmt, packageName, packageVersion); // NB: has to have .ps1 extension File.Copy(PackagingScriptName, PackagingScriptNamePS1); string stdout, stderr; int exitcode; using (var exe = new PowershellExecutor(PackagingScriptNamePS1)) { exe.AddEnvironmentVariable("BoshCompileTarget", CompileDir); exe.AddEnvironmentVariable("BoshInstallTarget", InstallDir); exe.StartAndWait(); stdout = exe.STDOUT; stderr = exe.STDERR; exitcode = exe.ExitCode; } if (exitcode != 0) { throw new MessageHandlerException( String.Format(Resources.CompilePackage_CompilePackageFailure_Fmt, exitcode), String.Join(" / ", stdout, stderr)); } log.Info(stdout); } } }
public void Test_Running_Powershell_Script_Two() { string scriptContents = @"Write-Host 'ONE' Write-Host 'TWO' Write-Host 'THREE' Write-Host ""Install Target: $env:BoshInstallTarget"""; string script = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString() + ".ps1"); File.WriteAllText(script, scriptContents); var p = new PowershellExecutor(script); p.AddEnvironmentVariable("BoshInstallTarget", Path.GetTempPath()); p.StartAndWait(); Console.WriteLine("STDOUT:"); Console.Write(p.STDOUT); Console.WriteLine("STDERR:"); Console.Write(p.STDERR); }