github.com/easysoft/zendata@v0.0.0-20240513203326-705bd5a7fd67/internal/command/init.go (about)

     1  package command
     2  
     3  import (
     4  	"errors"
     5  	"fmt"
     6  	"os"
     7  	"path/filepath"
     8  	"strings"
     9  
    10  	consts "github.com/easysoft/zendata/internal/pkg/const"
    11  	"github.com/easysoft/zendata/internal/pkg/ctrl"
    12  	fileUtils "github.com/easysoft/zendata/pkg/utils/file"
    13  	i118Utils "github.com/easysoft/zendata/pkg/utils/i118"
    14  	logUtils "github.com/easysoft/zendata/pkg/utils/log"
    15  	stringUtils "github.com/easysoft/zendata/pkg/utils/string"
    16  	"github.com/easysoft/zendata/pkg/utils/vari"
    17  	"github.com/facebookgo/inject"
    18  )
    19  
    20  func InitCtrl() (defCtrl *ctrl.MainCtrl, err error) {
    21  	defCtrl = &ctrl.MainCtrl{}
    22  
    23  	var g inject.Graph
    24  
    25  	if err := g.Provide(
    26  		&inject.Object{Value: vari.DB},
    27  		&inject.Object{Value: defCtrl},
    28  	); err != nil {
    29  		logUtils.PrintErrMsg(fmt.Sprintf("provide usecase objects to the Graph: %v", err))
    30  	}
    31  	err = g.Populate()
    32  	if err != nil {
    33  		logUtils.PrintErrMsg(fmt.Sprintf("populate the incomplete Objects: %v", err))
    34  	}
    35  
    36  	return
    37  }
    38  
    39  func SetOutFormat() (err error) {
    40  	if vari.GlobalVars.Output != "" {
    41  		fileUtils.MkDirIfNeeded(filepath.Dir(vari.GlobalVars.Output))
    42  		fileUtils.RemoveExist(vari.GlobalVars.Output)
    43  
    44  		ext := strings.ToLower(filepath.Ext(vari.GlobalVars.Output))
    45  		ext = strings.TrimLeft(ext, ".")
    46  
    47  		if stringUtils.InArray(ext, consts.Formats) {
    48  			vari.GlobalVars.OutputFormat = ext
    49  		}
    50  
    51  		// create file writer
    52  		if vari.GlobalVars.OutputFormat == consts.FormatExcel {
    53  			logUtils.OutputFilePath = vari.GlobalVars.Output
    54  		} else {
    55  			logUtils.OutputFileWriter, _ = os.OpenFile(vari.GlobalVars.Output, os.O_RDWR|os.O_CREATE, 0777)
    56  		}
    57  	}
    58  
    59  	if vari.GlobalVars.DBDsn != "" {
    60  		vari.GlobalVars.OutputFormat = consts.FormatSql
    61  	}
    62  
    63  	if vari.GlobalVars.OutputFormat == consts.FormatSql && vari.GlobalVars.Table == "" {
    64  		msg := i118Utils.I118Prt.Sprintf("miss_table_name")
    65  		logUtils.PrintErrMsg(msg)
    66  		err = errors.New(msg)
    67  	}
    68  
    69  	return
    70  }