| // Copyright 2016 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| package dep |
| |
| import ( |
| "os" |
| "path/filepath" |
| |
| "github.com/golang/dep/gps" |
| "github.com/golang/dep/internal/fs" |
| ) |
| |
| // Analyzer implements gps.ProjectAnalyzer. |
| type Analyzer struct{} |
| |
| // HasDepMetadata determines if a dep manifest exists at the specified path. |
| func (a Analyzer) HasDepMetadata(path string) bool { |
| mf := filepath.Join(path, ManifestName) |
| fileOK, err := fs.IsRegular(mf) |
| return err == nil && fileOK |
| } |
| |
| // DeriveManifestAndLock reads and returns the manifest at path/ManifestName or nil if one is not found. |
| // The Lock is always nil for now. |
| func (a Analyzer) DeriveManifestAndLock(path string, n gps.ProjectRoot) (gps.Manifest, gps.Lock, error) { |
| if !a.HasDepMetadata(path) { |
| return nil, nil, nil |
| } |
| |
| f, err := os.Open(filepath.Join(path, ManifestName)) |
| if err != nil { |
| return nil, nil, err |
| } |
| defer f.Close() |
| |
| // Ignore warnings irrelevant to user. |
| m, _, err := readManifest(f) |
| if err != nil { |
| return nil, nil, err |
| } |
| |
| return m, nil, nil |
| } |
| |
| // Info returns Analyzer's name and version info. |
| func (a Analyzer) Info() gps.ProjectAnalyzerInfo { |
| return gps.ProjectAnalyzerInfo{ |
| Name: "dep", |
| Version: 1, |
| } |
| } |