1 Star 0 Fork 0

liwen_test_sync_group/bintly

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
session.go 1.66 KB
一键复制 编辑 原始数据 按行查看 历史
ppoudyal 提交于 2021-03-30 06:01 +08:00 . documentation added
package codegen
import (
"github.com/viant/toolbox"
"os"
"path"
"path/filepath"
"strings"
)
//session stores generated codes, imports, pkg
type session struct {
*Options
*toolbox.FileSetInfo
pkg string
structCodingCode []string
generatedTypes map[string]bool
imports map[string]bool
isBlockTemplateDone bool
}
//shallGenerateCode stores generated codes for all types
func (s *session) shallGenerateCode(typeName string) bool {
if _, ok := s.generatedTypes[typeName]; ok {
return false
}
s.generatedTypes[typeName] = true
return true
}
//readPackageCode creates pkg code
func (s *session) readPackageCode() error {
p, err := filepath.Abs(s.Source)
if err != nil {
return err
}
var f os.FileInfo
if f, err = os.Stat(p); err != nil {
// path/to/whatever does not exist
return err
}
if !f.IsDir() {
dir, _ := filepath.Split(p)
_, pkg := path.Split(filepath.Base(dir))
s.Pkg = pkg
s.FileSetInfo, err = toolbox.NewFileSetInfo(dir)
} else {
_, pkg := path.Split(filepath.Base(p))
s.Pkg = pkg
s.FileSetInfo, err = toolbox.NewFileSetInfo(p)
}
// if Pkg flag is set use it
if s.Pkg != "" {
s.pkg = s.Pkg
}
return err
}
//addImports adds imports
func (s *session) addImport(pkg string) {
s.imports[`"`+pkg+`"`] = true
}
//getImports returns imports
func (s *session) getImports() string {
return "\t" + strings.Join(toolbox.MapKeysToStringSlice(s.imports), "\n\t")
}
//newSession creates a new session
func newSession(option *Options) *session {
return &session{Options: option,
structCodingCode: make([]string, 0),
generatedTypes: make(map[string]bool),
imports: make(map[string]bool),
}
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/liwen_test_sync_group/bintly.git
git@gitee.com:liwen_test_sync_group/bintly.git
liwen_test_sync_group
bintly
bintly
v0.2.0

搜索帮助