feat:回滚自动化生产代码
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"go/ast"
|
||||
"go/parser"
|
||||
@@ -15,9 +16,18 @@ import (
|
||||
//@param: filepath string, funcName string, codeData string
|
||||
//@return: error
|
||||
|
||||
const (
|
||||
startComment = "Code generated by gin-vue-admin Begin; DO NOT EDIT."
|
||||
endComment = "Code generated by gin-vue-admin End; DO NOT EDIT."
|
||||
)
|
||||
|
||||
//@author: [LeonardWang](https://github.com/WangLeonard)
|
||||
//@function: AutoInjectionCode
|
||||
//@description: 向文件中固定注释位置写入代码
|
||||
//@param: filepath string, funcName string, codeData string
|
||||
//@return: error
|
||||
|
||||
func AutoInjectionCode(filepath string, funcName string, codeData string) error {
|
||||
startComment := "Code generated by gin-vue-admin Begin; DO NOT EDIT."
|
||||
endComment := "Code generated by gin-vue-admin End; DO NOT EDIT."
|
||||
srcData, err := ioutil.ReadFile(filepath)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -141,3 +151,30 @@ func checkExist(srcData *[]byte, startPos int, endPos int, blockStmt *ast.BlockS
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func AutoClearCode(filepath string, codeData string) error {
|
||||
srcData, err := ioutil.ReadFile(filepath)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
srcData, err = cleanCode(codeData, string(srcData))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return ioutil.WriteFile(filepath, srcData, 0600)
|
||||
}
|
||||
|
||||
func cleanCode(clearCode string, srcData string) ([]byte, error) {
|
||||
bf := make([]rune, 0, 1024)
|
||||
for i, v := range srcData {
|
||||
if v == '\n' {
|
||||
if strings.TrimSpace(string(bf)) == clearCode {
|
||||
return append([]byte(srcData[:i-len(bf)]), []byte(srcData[i+1:])...), nil
|
||||
}
|
||||
bf = (bf)[:0]
|
||||
continue
|
||||
}
|
||||
bf = append(bf, v)
|
||||
}
|
||||
return []byte(srcData), errors.New("未找到内容")
|
||||
}
|
||||
|
Reference in New Issue
Block a user