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.PackageClauseOnly) 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) }