コード例 #1
0
        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();
        }
コード例 #2
0
        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);
        }