32 lines
737 B
Go
32 lines
737 B
Go
package lib
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
"os"
|
|
)
|
|
|
|
type PackageJSON struct {
|
|
Name string `json:"name"`
|
|
Version string `json:"version"`
|
|
Dependencies map[string]string `json:"dependencies"`
|
|
DevDependencies map[string]string `json:"devDependencies"`
|
|
}
|
|
|
|
func ParsePackageJson(path string) (PackageJSON, error) {
|
|
f, err := os.Open(path)
|
|
if os.IsNotExist(err) {
|
|
return PackageJSON{}, os.ErrNotExist
|
|
} else if err != nil {
|
|
return PackageJSON{}, fmt.Errorf("could not read file: %v", err)
|
|
}
|
|
defer f.Close()
|
|
|
|
var p PackageJSON
|
|
if err := json.NewDecoder(f).Decode(&p); err != nil {
|
|
return PackageJSON{}, fmt.Errorf("could not parse package.json file: %v", err)
|
|
}
|
|
|
|
return p, nil
|
|
}
|