|
|
@@ -11,6 +11,7 @@ import (
|
|
|
|
"io"
|
|
|
|
"io"
|
|
|
|
"os"
|
|
|
|
"os"
|
|
|
|
"path"
|
|
|
|
"path"
|
|
|
|
|
|
|
|
"path/filepath"
|
|
|
|
"regexp"
|
|
|
|
"regexp"
|
|
|
|
"strings"
|
|
|
|
"strings"
|
|
|
|
"time"
|
|
|
|
"time"
|
|
|
@@ -24,6 +25,7 @@ type EnumDefVal struct {
|
|
|
|
|
|
|
|
|
|
|
|
type EnumDef struct {
|
|
|
|
type EnumDef struct {
|
|
|
|
File string
|
|
|
|
File string
|
|
|
|
|
|
|
|
FileRelative string
|
|
|
|
EnumTypeName string
|
|
|
|
EnumTypeName string
|
|
|
|
Type string
|
|
|
|
Type string
|
|
|
|
Values []EnumDefVal
|
|
|
|
Values []EnumDefVal
|
|
|
@@ -83,7 +85,7 @@ func GenerateEnumSpecs(sourceDir string, destFile string) error {
|
|
|
|
|
|
|
|
|
|
|
|
for _, f := range files {
|
|
|
|
for _, f := range files {
|
|
|
|
fmt.Printf("========= %s =========\n\n", f.Name())
|
|
|
|
fmt.Printf("========= %s =========\n\n", f.Name())
|
|
|
|
fileEnums, pn, err := processFile(path.Join(sourceDir, f.Name()))
|
|
|
|
fileEnums, pn, err := processFile(sourceDir, path.Join(sourceDir, f.Name()))
|
|
|
|
if err != nil {
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
}
|
|
|
@@ -123,7 +125,7 @@ func GenerateEnumSpecs(sourceDir string, destFile string) error {
|
|
|
|
return nil
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func processFile(fn string) ([]EnumDef, string, error) {
|
|
|
|
func processFile(basedir string, fn string) ([]EnumDef, string, error) {
|
|
|
|
file, err := os.Open(fn)
|
|
|
|
file, err := os.Open(fn)
|
|
|
|
if err != nil {
|
|
|
|
if err != nil {
|
|
|
|
return nil, "", err
|
|
|
|
return nil, "", err
|
|
|
@@ -153,8 +155,15 @@ func processFile(fn string) ([]EnumDef, string, error) {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if match, ok := rexEnumDef.MatchFirst(line); ok {
|
|
|
|
if match, ok := rexEnumDef.MatchFirst(line); ok {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
rfp, err := filepath.Rel(basedir, fn)
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
|
|
|
|
return nil, "", err
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
def := EnumDef{
|
|
|
|
def := EnumDef{
|
|
|
|
File: fn,
|
|
|
|
File: fn,
|
|
|
|
|
|
|
|
FileRelative: rfp,
|
|
|
|
EnumTypeName: match.GroupByName("name").Value(),
|
|
|
|
EnumTypeName: match.GroupByName("name").Value(),
|
|
|
|
Type: match.GroupByName("type").Value(),
|
|
|
|
Type: match.GroupByName("type").Value(),
|
|
|
|
Values: make([]EnumDefVal, 0),
|
|
|
|
Values: make([]EnumDefVal, 0),
|
|
|
@@ -239,7 +248,7 @@ func fmtOutput(cs string, enums []EnumDef, pkgname string) string {
|
|
|
|
|
|
|
|
|
|
|
|
str += "// ================================ " + enumdef.EnumTypeName + " ================================" + "\n"
|
|
|
|
str += "// ================================ " + enumdef.EnumTypeName + " ================================" + "\n"
|
|
|
|
str += "//" + "\n"
|
|
|
|
str += "//" + "\n"
|
|
|
|
str += "// File: " + enumdef.File + "\n"
|
|
|
|
str += "// File: " + enumdef.FileRelative + "\n"
|
|
|
|
str += "// StringEnum: " + langext.Conditional(hasStr, "true", "false") + "\n"
|
|
|
|
str += "// StringEnum: " + langext.Conditional(hasStr, "true", "false") + "\n"
|
|
|
|
str += "// DescrEnum: " + langext.Conditional(hasDescr, "true", "false") + "\n"
|
|
|
|
str += "// DescrEnum: " + langext.Conditional(hasDescr, "true", "false") + "\n"
|
|
|
|
str += "//" + "\n"
|
|
|
|
str += "//" + "\n"
|
|
|
|