50 строки
1,1 КиБ
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)
|
|
}
|