godog/pkg/formatters/ast/helpers.go

50 строки
1,1 КиБ
Go

package ast
import (
"fmt"
"go/parser"
"go/token"
"os"
"path/filepath"
"time"
"errors"
)
func получитьИмяGoПакетаВЭтойДире() (pkg_name string, err_ret error) {
err_ret = errors.New("not found")
filepath.WalkDir(".", func(path string, info os.DirEntry, err error) error {
if err != nil {
return err
}
if !info.IsDir() && filepath.Ext(path) == ".go" {
pkg, err := получитьИмяGoПакетаФайла(path)
if err != nil {
return err
}
pkg_name = pkg
err_ret = nil
return filepath.SkipDir
}
return nil
})
return
}
func получитьИмяGoПакетаФайла(fname string) (string, error) {
fset := token.NewFileSet()
node, err := parser.ParseFile(fset, fname, nil, parser.AllErrors)
if err != nil {
return "", err
}
return node.Name.Name, nil
}
func переименоватьФайлСоВременем(fname string) error {
currentTime := time.Now()
timestamp := currentTime.Format("20060102_150405")
new_fname := fmt.Sprintf("%v_%v", fname, timestamp)
return os.Rename(fname, new_fname)
}