Skip to content

Commit

Permalink
修复cli 传参失效的问题
Browse files Browse the repository at this point in the history
  • Loading branch information
cookieY committed Feb 25, 2021
1 parent e06bfe3 commit b336aa5
Show file tree
Hide file tree
Showing 5 changed files with 102 additions and 91 deletions.
5 changes: 5 additions & 0 deletions cmd/cli.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package cmd

const (
LOGO = " __ __ _ \n \\ \\ / /__ __ _ _ __ _ __ (_)_ __ __ _ \n \\ V / _ \\/ _` | '__| '_ \\| | '_ \\ / _` |\n | | __/ (_| | | | | | | | | | | (_| |\n |_|\\___|\\__,_|_| |_| |_|_|_| |_|\\__, |\n |___/ "
)
91 changes: 91 additions & 0 deletions cmd/cmd.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
package cmd

import (
"Yearning-go/src/lib"
"Yearning-go/src/model"
"Yearning-go/src/service"
"fmt"
"github.com/gookit/gcli/v2"
"github.com/gookit/gcli/v2/builtin"
)

var RunOpts = struct {
port string
push string
config string
repair bool
resetAdmin bool
}{}

var Migrate = &gcli.Command{
Name: "install",
UseFor: "Yearning安装及数据初始化",
Examples: `{$binName} {$cmd} --config conf.toml`,
Config: func(c *gcli.Command) {
c.StrOpt(&RunOpts.config, "config", "c", "conf.toml", "配置文件路径,默认为conf.toml.如无移动配置文件则无需配置!")
},
Func: func(c *gcli.Command, args []string) error {
model.DbInit(RunOpts.config)
service.Migrate()
return nil
},
}

var Fix = &gcli.Command{
Name: "migrate",
UseFor: "破坏性版本升级修复",
Config: func(c *gcli.Command) {
c.StrOpt(&RunOpts.config, "config", "c", "conf.toml", "配置文件路径,默认为conf.toml.如无移动配置文件则无需配置!")
},
Func: func(c *gcli.Command, args []string) error {
model.DbInit(RunOpts.config)
service.DelCol()
service.MargeRuleGroup()
return nil
},
}

var Super = &gcli.Command{
Name: "reset_super",
UseFor: "重置超级管理员密码",
Config: func(c *gcli.Command) {
c.StrOpt(&RunOpts.config, "config", "c", "conf.toml", "配置文件路径,默认为conf.toml.如无移动配置文件则无需配置!")
},
Func: func(c *gcli.Command, args []string) error {
model.DbInit(RunOpts.config)
model.DB().Model(model.CoreAccount{}).Where("username =?", "admin").Update(&model.CoreAccount{Password: lib.DjangoEncrypt("Yearning_admin", string(lib.GetRandom()))})
fmt.Println("admin密码已重新设置为:Yearning_admin")
return nil
},
}

var RunServer = &gcli.Command{
Name: "run",
UseFor: "启动Yearning",
Config: func(c *gcli.Command) {
c.StrOpt(&RunOpts.port, "port", "p", "8000", "Yearning启动端口")
c.StrOpt(&RunOpts.push, "push", "b", "127.0.0.1:8000", "钉钉/邮件推送时显示的平台地址")
c.StrOpt(&RunOpts.config, "config", "c", "conf.toml", "配置文件路径")
},
Examples: `<cyan>{$binName} {$cmd} --port 80 --push "yearning.io" -config ../config.toml</>`,
Func: func(c *gcli.Command, args []string) error {
model.DbInit(RunOpts.config)
service.UpdateData()
service.StartYearning(RunOpts.port, RunOpts.push)
return nil
},
}

func Command() {
app := gcli.NewApp()
app.Version = "2.3.2 Interstellar"
app.Name = "Yearning"
app.Logo = gcli.Logo{Text: LOGO, Style: "info"}
app.Description = "Yearning Mysql数据审核平台"
app.Add(Migrate)
app.Add(RunServer)
app.Add(Fix)
app.Add(Super)
app.Add(builtin.GenAutoComplete())
app.Run()
}
6 changes: 3 additions & 3 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -10,19 +10,19 @@ require (
github.com/go-sql-driver/mysql v1.4.1
github.com/gobuffalo/packr/v2 v2.8.1
github.com/golang/protobuf v1.3.4
github.com/gookit/gcli/v2 v2.3.4
github.com/jinzhu/gorm v1.9.12
github.com/onsi/ginkgo v1.7.0 // indirect
github.com/onsi/gomega v1.4.3 // indirect
github.com/pingcap/parser v0.0.0-20200317021010-cd90cc2a7d87
github.com/pingcap/tidb v1.1.0-beta.0.20200325035537-a8561e4d459e
github.com/stretchr/testify v1.5.1
golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413
github.com/stretchr/testify v1.6.1
golang.org/x/crypto v0.0.0-20200709230013-948cd5f35899
golang.org/x/net v0.0.0-20200602114024-627f9648deb9
google.golang.org/grpc v1.25.1
gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect
gopkg.in/asn1-ber.v1 v1.0.0-20181015200546-f715ec2f112d // indirect
gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df
gopkg.in/ldap.v3 v3.0.3
sourcegraph.com/sourcegraph/appdash-data v0.0.0-20151005221446-73f23eafcf67
vitess.io/vitess v0.0.0-20190119075008-dbef792951a4
)
89 changes: 2 additions & 87 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,94 +14,9 @@
package main

import (
"Yearning-go/src/lib"
"Yearning-go/src/model"
"Yearning-go/src/service"
"flag"
"fmt"
"google.golang.org/grpc"
"log"
"os"
"Yearning-go/cmd"
)

var (
h bool
s bool
p string
m bool
b string
x bool
c string
k bool
f bool
)

func usage() {
_, err := fmt.Fprintf(os.Stderr, `version: Yearning/2.3.1 Interstellar author: HenryYee
Usage: Yearning [-m migrate] [-p port] [-s start] [-b web-bind] [-h help] [-c config file]
Options:
-s 启动Yearning
-m 数据初始化(第一次安装时执行)
-p 端口
-b 钉钉/邮件推送时显示的平台地址
-x 表结构修复,升级时可以操作。如出现错误可直接忽略。
-h 帮助
-c 配置文件路径
-k 用户权限变更为权限组(2.1.7以下升级至2.1.7及以上使用)
-f 初始化Admin用户密码
`)
if err != nil {
panic(err.Error())
}
}

func init() {
flag.BoolVar(&s, "s", false, "启动Yearning")
flag.BoolVar(&m, "m", false, "数据初始化(第一次安装时执行)")
flag.StringVar(&p, "p", "8000", "Yearning端口")
flag.BoolVar(&h, "h", false, "帮助")
flag.BoolVar(&f, "f", false, "初始化Admin用户密码")
flag.BoolVar(&x, "x", false, "表结构修复")
flag.StringVar(&b, "b", "127.0.0.1", "钉钉/邮件推送时显示的平台地址")
flag.StringVar(&c, "c", "conf.toml", "配置文件路径")
flag.BoolVar(&k, "k", false, "用户权限变更为权限组(2.1.7以下升级至2.1.7及以上使用)")
flag.Usage = usage
log.SetPrefix("Yearning_error: ")
log.SetFlags(log.Ldate | log.Lmicroseconds | log.Llongfile)
}

func main() {
flag.Parse()
if h {
flag.Usage()
return
}

model.DbInit(c)
if k {
service.MargeRuleGroup()
}

if s {
model.Conn, _ = grpc.Dial(model.Grpc, grpc.WithInsecure())
defer func() {
model.Conn.Close()
}()
service.UpdateData()
service.StartYearning(p, b)
}

if x {
service.DelCol()
}

if f {
model.DB().Model(model.CoreAccount{}).Where("username =?", "admin").Update(&model.CoreAccount{Password: lib.DjangoEncrypt("Yearning_admin", string(lib.GetRandom()))})
fmt.Println("admin密码已重新设置为:Yearning_admin")
}

if m {
service.Migrate()
}
cmd.Command()
}
2 changes: 1 addition & 1 deletion src/lib/toolbox.go
Original file line number Diff line number Diff line change
Expand Up @@ -228,8 +228,8 @@ func MultiUserRuleMarge(group []string) model.PermissionList {
var u model.PermissionList
for _, i := range group {
var k model.CoreRoleGroup
model.DB().Where("name =?", i).First(&k)
var m1 model.PermissionList
model.DB().Where("name =?", i).First(&k)
_ = json.Unmarshal(k.Permissions, &m1)
u.DDLSource = append(u.DDLSource, m1.DDLSource...)
u.DMLSource = append(u.DMLSource, m1.DMLSource...)
Expand Down

0 comments on commit b336aa5

Please sign in to comment.