private void btnOK_Click(object sender, EventArgs e) { if (!CheckGoEnvironment()) { if (MsgBox.ShowQuestionMessage("检测到未安装GO环境!是否查看帮助?") == DialogResult.Yes) { Help.ShowHelp(this, "https://jingyan.baidu.com/article/d2b1d102cbac775c7f37d477.html"); } return; } if (!CheckBeeEnvironment()) { if (MsgBox.ShowQuestionMessage("检测到未安装Bee工具!是否查看帮助?") == DialogResult.Yes) { CmdHelper.CreateBat(Config.TEMP_BAT_FILENAME, "go get -u github.com/astaxie/beego \r\ngo get -u github.com/beego/bee"); //CmdHelper.RunApp(Config.TEMP_BAT_FILENAME, ProcessWindowStyle.Normal, GOPATH); Config.MainForm.RunApp(Config.TEMP_BAT_FILENAME, GOPATH); Help.ShowHelp(this, "https://beego.me/quickstart"); } ; return; } if (string.IsNullOrEmpty(cmbDatabase.Text)) { MsgBox.Show("请选择数据库!"); return; } if (string.IsNullOrEmpty(txtProjectName.Text.Trim())) { MsgBox.Show("请输入项目名称!"); return; } if (string.IsNullOrEmpty(GOROOT)) { MsgBox.Show("请先在选项中设置GOROOT环境变量!"); return; } if (string.IsNullOrEmpty(GOPATH)) { MsgBox.Show("请先在选项中设置GOPATH环境变量!"); return; } if (currentDatabase.Parent.DbProvider.DatabaseType != DatabaseType.MySql) { MsgBox.Show("该数据库不是MySql,不支持该操作!"); this.Close(); return; } if (rbWebProject.Checked) { if (listBox2.Items.Count == 0) { MsgBox.Show("请选择要生成的表!"); return; } } codePath = GOPATH + (GOPATH.EndsWith(@"\") ? "src" : @"\src") + @"\" + txtProjectName.Text.Trim(); if (Directory.Exists(codePath)) { OpenDirectory(string.Format("文件夹“{0}”已经存在,是否立即打开?", codePath)); this.Close(); return; } SetBtnDisable(); backgroundWorkerGenerate.RunWorkerAsync(); }
private string DoBuild() { backgroundWorkerGenerate.ReportProgress(1, "开始生成!"); var cmdString = "bee {0} {1} -driver=\"mysql\" -conn=\"{2}:{3}@tcp({4}:{5})/{6}\""; if (currentDatabase.Parent.DbProvider.DatabaseType == DatabaseType.SQLite) { cmdString = "bee {0} {1} -driver=\"sqlite\" -conn=\"{2}\""; } string server = "127.0.0.1", port = "3306", user = "******", password = "", db = currentDatabase.Name; var connectionString = currentDatabase.Parent.DbProvider.ConnectionString; var conn = connectionString.Split(';'); #region 获取服务器信息 foreach (var item in conn) { if (currentDatabase.Parent.DbProvider.DatabaseType == DatabaseType.MySql) { var val = item.Split('='); if (val[0].ToLower().Trim() == "server") { server = val[1].Trim(); } if (val[0].ToLower().Trim() == "port") { port = val[1].Trim(); } if (val[0].ToLower().Trim() == "id") { user = val[1].Trim(); } if (val[0].ToLower().Trim() == "password") { password = val[1].Trim(); } //if (val[0].ToLower().Trim() == "database") //{ // db = val[1].Trim(); //} } else if (currentDatabase.Parent.DbProvider.DatabaseType == DatabaseType.SQLite) { var val = item.Split('='); if (val[0].ToLower().Trim() == "data source") { server = val[1].Trim(); break; } } } #endregion var result = string.Empty; var path = GOPATH + (GOPATH.EndsWith(@"\") ? "src" : @"\src"); if (rbWebProject.Checked) { List <string> temp = new List <string>(); foreach (var item in this.listBox2.Items) { temp.Add(item.ToString()); } var cmd = string.Format(cmdString + " -level=3 -tables=\"{7}\"", " generate appcode ", string.Empty, user, password, server, port, db, string.Join(",", temp)); var newCmd = "bee new " + txtProjectName.Text.Trim(); result = CmdHelper.Execute(newCmd, path); if (result.Contains("success")) { var msg = "正在生成剩余项"; Config.Console(msg + ",详细信息如下:\n" + result); backgroundWorkerGenerate.ReportProgress(50, msg); cmd = string.Format("cd /d \"{0}\" \r\n{1}", codePath, cmd); CmdHelper.CreateBat(Config.TEMP_BAT_FILENAME, cmd); //CmdHelper.RunApp(Config.TEMP_BAT_FILENAME, ProcessWindowStyle.Normal, codePath); Config.MainForm.RunApp(Config.TEMP_BAT_FILENAME, codePath); msg = "代码生成成功,是否打开目录?"; Config.Console(msg + "详细信息如下:\n" + result); result = msg; } backgroundWorkerGenerate.ReportProgress(100, result); } else if (rbApiProject.Checked) { var cmd = string.Format(cmdString, "api", txtProjectName.Text.Trim(), user, password, server, port, db); if (currentDatabase.Parent.DbProvider.DatabaseType == DatabaseType.SQLite) { cmd = string.Format(cmdString, "api", txtProjectName.Text.Trim(), server); } result = CmdHelper.Execute(cmd, path); var msg = "创建项目成功"; if (result.Contains("success") && cbGenerateSwagger.Checked) { msg = "正在生成Swagger"; Config.Console(msg + ",详细信息如下:\n" + result); backgroundWorkerGenerate.ReportProgress(50, msg); cmd = string.Format("cd /d \"{0}\" \r\n", codePath); cmd += "bee run -gendoc=true -downdoc=true"; CmdHelper.CreateBat(Config.TEMP_BAT_FILENAME, cmd); //CmdHelper.RunApp(Config.TEMP_BAT_FILENAME, ProcessWindowStyle.Normal, codePath); Config.MainForm.RunApp(Config.TEMP_BAT_FILENAME, codePath); msg = "代码生成成功,是否打开目录?"; Config.Console(msg + "详细信息如下:\n" + result); result = msg; } else { msg = "代码生成失败,是否打开目录?"; Config.Console(msg + "详细信息如下:\n" + result); result = msg; } backgroundWorkerGenerate.ReportProgress(100, result); } return(result); }