Exemplo n.º 1
0
        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);
                }
            }
        }
Exemplo n.º 2
0
        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);
        }