mirror of https://github.com/k3s-io/k3s
75 lines
1.4 KiB
Go
75 lines
1.4 KiB
Go
package main
|
|
|
|
import (
|
|
"bytes"
|
|
"fmt"
|
|
"log"
|
|
|
|
"github.com/pmezard/go-difflib/difflib"
|
|
)
|
|
|
|
var cmdDiff = &Command{
|
|
Name: "diff",
|
|
Short: "shows the diff between current and previously saved set of dependencies",
|
|
Long: `
|
|
Shows the difference, in a unified diff format, between the
|
|
current set of dependencies and those generated on a
|
|
previous 'go save' execution.
|
|
`,
|
|
Run: runDiff,
|
|
OnlyInGOPATH: true,
|
|
}
|
|
|
|
func runDiff(cmd *Command, args []string) {
|
|
gold, err := loadDefaultGodepsFile()
|
|
if err != nil {
|
|
log.Fatalln(err)
|
|
}
|
|
|
|
pkgs := []string{"."}
|
|
dot, err := LoadPackages(pkgs...)
|
|
if err != nil {
|
|
log.Fatalln(err)
|
|
}
|
|
|
|
gnew := &Godeps{
|
|
ImportPath: dot[0].ImportPath,
|
|
GoVersion: gold.GoVersion,
|
|
}
|
|
|
|
err = gnew.fill(dot, dot[0].ImportPath)
|
|
if err != nil {
|
|
log.Fatalln(err)
|
|
}
|
|
|
|
diff, err := diffStr(&gold, gnew)
|
|
if err != nil {
|
|
log.Fatalln(err)
|
|
}
|
|
fmt.Println(diff)
|
|
}
|
|
|
|
// diffStr returns a unified diff string of two Godeps.
|
|
func diffStr(a, b *Godeps) (string, error) {
|
|
var ab, bb bytes.Buffer
|
|
|
|
_, err := a.writeTo(&ab)
|
|
if err != nil {
|
|
log.Fatalln(err)
|
|
}
|
|
|
|
_, err = b.writeTo(&bb)
|
|
if err != nil {
|
|
log.Fatalln(err)
|
|
}
|
|
|
|
diff := difflib.UnifiedDiff{
|
|
A: difflib.SplitLines(ab.String()),
|
|
B: difflib.SplitLines(bb.String()),
|
|
FromFile: b.file(),
|
|
ToFile: "$GOPATH",
|
|
Context: 10,
|
|
}
|
|
return difflib.GetUnifiedDiffString(diff)
|
|
}
|