|
|
|
package mongo
|
|
|
|
|
|
|
|
import (
|
|
|
|
"errors"
|
|
|
|
"path/filepath"
|
|
|
|
"strings"
|
|
|
|
|
|
|
|
"github.com/spf13/cobra"
|
|
|
|
"github.com/zeromicro/go-zero/tools/goctl/config"
|
|
|
|
"github.com/zeromicro/go-zero/tools/goctl/model/mongo/generate"
|
|
|
|
file "github.com/zeromicro/go-zero/tools/goctl/util"
|
|
|
|
"github.com/zeromicro/go-zero/tools/goctl/util/pathx"
|
|
|
|
)
|
|
|
|
|
|
|
|
var (
|
|
|
|
// VarStringSliceType describes a golang data structure name for mongo.
|
|
|
|
VarStringSliceType []string
|
|
|
|
// VarStringDir describes an output directory.
|
|
|
|
VarStringDir string
|
|
|
|
// VarBoolCache describes whether cache is enabled.
|
|
|
|
VarBoolCache bool
|
|
|
|
// VarStringStyle describes the style.
|
|
|
|
VarStringStyle string
|
|
|
|
// VarStringHome describes the goctl home.
|
|
|
|
VarStringHome string
|
|
|
|
// VarStringRemote describes the remote git repository.
|
|
|
|
VarStringRemote string
|
|
|
|
// VarStringBranch describes the git branch.
|
|
|
|
VarStringBranch string
|
|
|
|
)
|
|
|
|
|
|
|
|
// Action provides the entry for goctl mongo code generation.
|
|
|
|
func Action(_ *cobra.Command, _ []string) error {
|
|
|
|
tp := VarStringSliceType
|
|
|
|
c := VarBoolCache
|
|
|
|
o := strings.TrimSpace(VarStringDir)
|
|
|
|
s := VarStringStyle
|
|
|
|
home := VarStringHome
|
|
|
|
remote := VarStringRemote
|
|
|
|
branch := VarStringBranch
|
|
|
|
|
|
|
|
if len(remote) > 0 {
|
|
|
|
repo, _ := file.CloneIntoGitHome(remote, branch)
|
|
|
|
if len(repo) > 0 {
|
|
|
|
home = repo
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if len(home) > 0 {
|
|
|
|
pathx.RegisterGoctlHome(home)
|
|
|
|
}
|
|
|
|
|
|
|
|
if len(tp) == 0 {
|
|
|
|
return errors.New("missing type")
|
|
|
|
}
|
|
|
|
|
|
|
|
cfg, err := config.NewConfig(s)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
a, err := filepath.Abs(o)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
if err = pathx.MkdirIfNotExist(a); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
return generate.Do(&generate.Context{
|
|
|
|
Types: tp,
|
|
|
|
Cache: c,
|
|
|
|
Output: a,
|
|
|
|
Cfg: cfg,
|
|
|
|
})
|
|
|
|
}
|