github.com/zxy12/go_duplicate_112_new@v0.0.0-20200807091221-747231827200/src/cmd/go/internal/modconv/vyml.go (about) 1 // Copyright 2018 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package modconv 6 7 import ( 8 "strings" 9 10 "cmd/go/internal/modfile" 11 "cmd/go/internal/module" 12 ) 13 14 func ParseVendorYML(file string, data []byte) (*modfile.File, error) { 15 mf := new(modfile.File) 16 vendors := false 17 path := "" 18 for lineno, line := range strings.Split(string(data), "\n") { 19 lineno++ 20 if line == "" { 21 continue 22 } 23 if strings.HasPrefix(line, "vendors:") { 24 vendors = true 25 } else if line[0] != '-' && line[0] != ' ' && line[0] != '\t' { 26 vendors = false 27 } 28 if !vendors { 29 continue 30 } 31 if strings.HasPrefix(line, "- path:") { 32 path = strings.TrimSpace(line[len("- path:"):]) 33 } 34 if strings.HasPrefix(line, " rev:") { 35 rev := strings.TrimSpace(line[len(" rev:"):]) 36 if path != "" && rev != "" { 37 mf.Require = append(mf.Require, &modfile.Require{Mod: module.Version{Path: path, Version: rev}}) 38 } 39 } 40 } 41 return mf, nil 42 }