@@ -3,32 +3,29 @@ package rpc
3
3
// 几乎所有代码由欧阳完成,我只是搬运过来。
4
4
5
5
import (
6
- "bufio"
7
6
"fmt"
8
7
"go/ast"
9
8
"go/parser"
10
9
"go/token"
11
- "io/ioutil"
12
10
"os"
13
11
"os/exec"
14
12
"path/filepath"
15
- "strings"
16
13
17
14
"github.com/dave/dst"
18
15
"github.com/dave/dst/decorator"
19
16
"github.com/spf13/cobra"
17
+ "golang.org/x/mod/modfile"
20
18
)
21
19
22
20
var (
23
- // 服务相关变量
24
21
rootDir , rootPkg , server , service , version string
25
22
26
23
twirpFile , serverFile , rpcPkg string
27
24
)
28
25
29
26
func init () {
30
27
wd , _ := os .Getwd ()
31
- module := getModuleName (wd )
28
+ module := getModuleName ()
32
29
33
30
Cmd .Flags ().StringVar (& rootDir , "root" , wd , "项目根目录" )
34
31
Cmd .Flags ().StringVar (& rootPkg , "package" , module , "项目总包名" )
@@ -39,25 +36,18 @@ func init() {
39
36
Cmd .MarkFlagRequired ("server" )
40
37
}
41
38
42
- func getModuleName (wd string ) ( module string ) {
43
- f , err := os .Open ( wd + "/ go.mod" )
39
+ func getModuleName () string {
40
+ b , err := os .ReadFile ( " go.mod" )
44
41
if err != nil {
45
- return
42
+ panic ( err )
46
43
}
47
- defer f .Close ()
48
44
49
- l , err := bufio . NewReader ( f ). ReadString ( '\n' )
45
+ f , err := modfile . Parse ( "" , b , nil )
50
46
if err != nil {
51
47
panic (err )
52
48
}
53
- fields := strings .Fields (l )
54
-
55
- module = "sniper"
56
- if len (fields ) == 2 {
57
- module = fields [1 ]
58
- }
59
49
60
- return module
50
+ return f . Module . Mod . Path
61
51
}
62
52
63
53
// Cmd 接口生成工具
@@ -162,7 +152,7 @@ func createDirAndFile(path string) (*os.File, error) {
162
152
}
163
153
164
154
func parseAST (file string ) (* ast.File , * token.FileSet ) {
165
- b , err := ioutil .ReadFile (file )
155
+ b , err := os .ReadFile (file )
166
156
if err != nil {
167
157
panic (err )
168
158
}
0 commit comments