private string RunDb2Look(string database, string user, string password, string arguments) { // Get DB2Look path var db2Home = ConfigurationManager.AppSettings["DB2Home"]; if (string.IsNullOrEmpty(db2Home)) { throw new Exception("DB2Home setting not set in the configuration. Please set the value for it in " + Application.ProductName + ".exe.config file"); } else if (!Directory.Exists(db2Home)) { throw new Exception("DB2Home directory '" + db2Home + "' does not exist. Please set the value for it in " + Application.ProductName + ".exe.config file"); } var db2Look = Path.Combine(db2Home, "db2look.exe"); if (!File.Exists(db2Look)) { throw new Exception("db2look executable '" + db2Look + "' does not exist. Please make sure you have a DB2 client properly installed"); } var db2LookArguments = string.Format( "-d {0} -i {1} -w {2} -a -e -x ", database, user, password) + arguments; // Build script var scriptFile = Path.GetTempFileName(); try { scriptFile = Path.Combine(Path.GetDirectoryName(scriptFile) ?? string.Empty, Path.GetFileNameWithoutExtension(scriptFile) + ".bat"); var scriptContents = "@echo off" + Environment.NewLine; scriptContents += @"@set PATH=%~d0%~p0..\db2tss\bin;%PATH%" + Environment.NewLine; scriptContents += @"@cd " + db2Home + @"\..\bnd" + Environment.NewLine; scriptContents += @"@db2clpsetcp" + Environment.NewLine; scriptContents += "\"" + db2Look + "\" " + db2LookArguments; File.WriteAllText(scriptFile, scriptContents); var executor = new BackgroundProcessExecutor(); var commandOutput = executor.RunBackgroundProcess(scriptFile, null); if (commandOutput.ExitCode != 0) { throw new Exception("db2look.exe returned unsuccessful return code of " + commandOutput.ExitCode + ". " + commandOutput.StandardError + Environment.NewLine + commandOutput.StandardError); } // Clean up standard output var output = commandOutput.StandardOutput; output = CleanText(output, _trailingSpaceRegex); return(output); } finally { try { File.Delete(scriptFile); } catch (Exception ex) { _log.ErrorFormat("Error deleting file {0}. {1}", scriptFile, ex.Message); _log.Error(ex.Message, ex); } } }
public void UpdateProjectList(Server server) { this.server = server; #if SYNCRHONOUS List <Project> dataSource = new List <Project>(); if (server != null) { IList <Project> projects = jenkinsService.LoadProjects(server); foreach (Project project in projects) { dataSource.Add(project); } } SetProjectsDataSource(dataSource); #else // clear the view projectsGridControl.DataSource = null; if (server == null) { return; } // disable the window, change the cursor, update the status Cursor.Current = Cursors.WaitCursor; Enabled = false; string status = string.Format(JenkinsTrayResources.LoadingProjects_FormatString, server.Url); Controller.SetStatus(status, true); // run the process in background Process process = new Process("Loading project " + server.Url); IList <Project> projects = null; process.DoWork += delegate { projects = JenkinsService.LoadProjects(server); }; process.RunWorkerCompleted += delegate(object sender, RunWorkerCompletedEventArgs e) { string endStatus = ""; if (e.Error == null) { var dataSource = new List <Project>(); foreach (Project project in projects) { dataSource.Add(project); } SetProjectsDataSource(dataSource); } else { endStatus = string.Format(JenkinsTrayResources.FailedLoadingProjects_FormatString, server.Url); } // enable the window, change the cursor, update the status Enabled = true; Cursor.Current = Cursors.Default; Controller.SetStatus(endStatus, false); }; BackgroundProcessExecutor.Execute(process); #endif }
private string RunPgDump([NotNull] string host, [NotNull] string database, [NotNull] string user, [NotNull] string password, int port) { if (host.IsNullEmptyOrWhitespace()) { throw new ArgumentNullException("host"); } if (database.IsNullEmptyOrWhitespace()) { throw new ArgumentNullException("database"); } if (user.IsNullEmptyOrWhitespace()) { throw new ArgumentNullException("user"); } if (password.IsNullEmptyOrWhitespace()) { throw new ArgumentNullException("password"); } // Get pg_dump path var postgreSqlHome = ConfigurationManager.AppSettings["PostgreSQLHome"]; if (string.IsNullOrEmpty(postgreSqlHome)) { throw new Exception("PostgreSQLHome setting not set in the configuration. Please set the value for it in " + Application.ProductName + ".exe.config file"); } else if (!Directory.Exists(postgreSqlHome)) { throw new Exception("PostgreSQLHome directory '" + postgreSqlHome + "' does not exist. Please set the value for it in " + Application.ProductName + ".exe.config file"); } var pgDump = Path.Combine(postgreSqlHome, "pg_dump.exe"); if (!File.Exists(pgDump)) { throw new Exception("pg_dump.exe executable '" + pgDump + "' does not exist. Please make sure you have it properly installed"); } // pg_dump.exe --username=mmedic --schema-only --host=localhost Test var pgDumpArguments = string.Format( "--host={0} --port={1} --username={2} --schema-only --no-password {3} ", host, port, user, database); // Build script var tempFile = Path.GetTempFileName(); var scriptFile = Path.Combine(Path.GetDirectoryName(tempFile) ?? string.Empty, Path.GetFileNameWithoutExtension(tempFile) + ".bat"); try { File.Move(tempFile, scriptFile); var scriptContents = "@echo off" + Environment.NewLine; scriptContents += @"@set PGPASSWORD="******"\"" + pgDump + "\" " + pgDumpArguments; File.WriteAllText(scriptFile, scriptContents); var executor = new BackgroundProcessExecutor(); var commandOutput = executor.RunBackgroundProcess(scriptFile, null); if (commandOutput.ExitCode != 0) { throw new Exception("pg_dump.exe returned unsuccessful return code of " + commandOutput.ExitCode + ". " + commandOutput.StandardError + Environment.NewLine + commandOutput.StandardError); } // Clean up standard output var output = commandOutput.StandardOutput; output = CleanText(output, _trailingSpaceRegex); return(output); } finally { try { File.Delete(scriptFile); } catch (Exception ex) { _log.ErrorFormat("Error deleting file {0}. {1}", scriptFile, ex.Message); _log.Error(ex.Message, ex); } } }