opt: improve logx performance (#3371)
This commit is contained in:
@@ -77,34 +77,44 @@ func getRealModule(workDir string, execRun execx.RunFunc) (*Module, error) {
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
modules, err := decodePackages(strings.NewReader(data))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
for _, m := range modules {
|
||||
mRealDir, err := pathx.ReadLink(m.Dir)
|
||||
realDir, err := pathx.ReadLink(m.Dir)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("mod dir [%s] error: %w", m.Dir, err)
|
||||
return nil, fmt.Errorf("failed to read go.mod, dir: %s, error: %w", m.Dir, err)
|
||||
}
|
||||
|
||||
if strings.HasPrefix(workDir, mRealDir) {
|
||||
if strings.HasPrefix(workDir, realDir) {
|
||||
return &m, nil
|
||||
}
|
||||
}
|
||||
|
||||
return nil, errors.New("no matched module")
|
||||
}
|
||||
|
||||
func decodePackages(rc io.Reader) ([]Module, error) {
|
||||
r := bufio.NewReader(rc)
|
||||
_, _ = r.ReadSlice('{')
|
||||
_ = r.UnreadByte()
|
||||
func decodePackages(reader io.Reader) ([]Module, error) {
|
||||
br := bufio.NewReader(reader)
|
||||
if _, err := br.ReadSlice('{'); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err := br.UnreadByte(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var modules []Module
|
||||
decoder := json.NewDecoder(r)
|
||||
decoder := json.NewDecoder(br)
|
||||
for decoder.More() {
|
||||
var m Module
|
||||
if err := decoder.Decode(&m); err != nil {
|
||||
return nil, fmt.Errorf("invalid module: %v", err)
|
||||
}
|
||||
|
||||
modules = append(modules, m)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user