mirror of
https://github.com/TECHNOFAB11/jsonnet-bundler.git
synced 2026-02-02 09:25:08 +01:00
only write jsonnnet files if we made changes (#56)
Adding a dep, or updating a dependency version makes writes to the jsonnet files. We evaluate the changes on each of the files. An empty jsonnetfile.json does not create a corresponding lockfile, as a missing lockfile is not different from its previous (non existent).
This commit is contained in:
parent
7fc7c31856
commit
f4417ac665
3 changed files with 124 additions and 12 deletions
|
|
@ -34,14 +34,20 @@ func installCommand(dir, jsonnetHome string, uris []string) int {
|
|||
dir = "."
|
||||
}
|
||||
|
||||
jsonnetFile, err := jsonnetfile.Load(filepath.Join(dir, jsonnetfile.File))
|
||||
jbfilebytes, err := ioutil.ReadFile(filepath.Join(dir, jsonnetfile.File))
|
||||
kingpin.FatalIfError(err, "failed to load jsonnetfile")
|
||||
|
||||
lockFile, err := jsonnetfile.Load(filepath.Join(dir, jsonnetfile.LockFile))
|
||||
jsonnetFile, err := jsonnetfile.Unmarshal(jbfilebytes)
|
||||
kingpin.FatalIfError(err, "")
|
||||
|
||||
jblockfilebytes, err := ioutil.ReadFile(filepath.Join(dir, jsonnetfile.LockFile))
|
||||
if !os.IsNotExist(err) {
|
||||
kingpin.FatalIfError(err, "failed to load lockfile")
|
||||
}
|
||||
|
||||
lockFile, err := jsonnetfile.Unmarshal(jblockfilebytes)
|
||||
kingpin.FatalIfError(err, "")
|
||||
|
||||
kingpin.FatalIfError(
|
||||
os.MkdirAll(filepath.Join(dir, jsonnetHome, ".tmp"), os.ModePerm),
|
||||
"creating vendor folder")
|
||||
|
|
@ -65,10 +71,11 @@ func installCommand(dir, jsonnetHome string, uris []string) int {
|
|||
kingpin.FatalIfError(err, "failed to install packages")
|
||||
|
||||
kingpin.FatalIfError(
|
||||
writeJSONFile(filepath.Join(dir, jsonnetfile.File), jsonnetFile),
|
||||
writeChangedJsonnetFile(jbfilebytes, &jsonnetFile, filepath.Join(dir, jsonnetfile.File)),
|
||||
"updating jsonnetfile.json")
|
||||
|
||||
kingpin.FatalIfError(
|
||||
writeJSONFile(filepath.Join(dir, jsonnetfile.LockFile), spec.JsonnetFile{Dependencies: locked}),
|
||||
writeChangedJsonnetFile(jblockfilebytes, &spec.JsonnetFile{Dependencies: locked}, filepath.Join(dir, jsonnetfile.LockFile)),
|
||||
"updating jsonnetfile.lock.json")
|
||||
|
||||
return 0
|
||||
|
|
@ -91,3 +98,16 @@ func writeJSONFile(name string, d interface{}) error {
|
|||
|
||||
return ioutil.WriteFile(name, b, 0644)
|
||||
}
|
||||
|
||||
func writeChangedJsonnetFile(originalBytes []byte, modified *spec.JsonnetFile, path string) error {
|
||||
origJsonnetFile, err := jsonnetfile.Unmarshal(originalBytes)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if reflect.DeepEqual(origJsonnetFile, *modified) {
|
||||
return nil
|
||||
}
|
||||
|
||||
return writeJSONFile(path, *modified)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue