/
npm.go
36 lines (32 loc) · 1.02 KB
/
npm.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package internal
import (
"encoding/json"
"io/ioutil"
"path"
)
type PackageMetadata struct {
Name string `json:"name,omitempty"`
Description string `json:"description,omitempty"`
Version string `json:"version,omitempty"`
Private bool `json:"private"`
Main string `json:"main,omitempty"`
Bin map[string]string `json:"bin,omitempty"`
Dependencies map[string]string `json:"dependencies,omitempty"`
Scripts map[string]string `json:"scripts,omitempty"`
}
func WritePackageJSON(metadata PackageMetadata, dir string) error {
metadataPath := path.Join(dir, "package.json")
return WriteJSON(metadataPath, metadata)
}
func ReadPackageJSON(dir string) (*PackageMetadata, error) {
metadataPath := path.Join(dir, "package.json")
bs, err := ioutil.ReadFile(metadataPath)
if err != nil {
return nil, err
}
var metadata PackageMetadata
if err := json.Unmarshal(bs, &metadata); err != nil {
return nil, err
}
return &metadata, nil
}