github.com/jbendotnet/noms@v0.0.0-20190904222105-c43e4293ea92/cmd/noms/noms_diff.go (about) 1 // Copyright 2016 Attic Labs, Inc. All rights reserved. 2 // Licensed under the Apache License, version 2.0: 3 // http://www.apache.org/licenses/LICENSE-2.0 4 5 package main 6 7 import ( 8 "fmt" 9 10 "github.com/attic-labs/kingpin" 11 "github.com/attic-labs/noms/cmd/util" 12 "github.com/attic-labs/noms/go/config" 13 "github.com/attic-labs/noms/go/d" 14 "github.com/attic-labs/noms/go/diff" 15 "github.com/attic-labs/noms/go/util/outputpager" 16 ) 17 18 func nomsDiff(noms *kingpin.Application) (*kingpin.CmdClause, util.KingpinHandler) { 19 cmd := noms.Command("diff", "Shows the difference between two values.") 20 stat := cmd.Flag("stat", "writes a summary of the changes instead").Bool() 21 o1 := cmd.Arg("val1", "first value - see Spelling Values at https://github.com/attic-labs/noms/blob/master/doc/spelling.md").Required().String() 22 o2 := cmd.Arg("val2", "second value - see Spelling Values at https://github.com/attic-labs/noms/blob/master/doc/spelling.md").Required().String() 23 outputpager.RegisterOutputpagerFlags(cmd) 24 25 return cmd, func(input string) int { 26 cfg := config.NewResolver() 27 db1, value1, err := cfg.GetPath(*o1) 28 d.CheckErrorNoUsage(err) 29 if value1 == nil { 30 d.CheckErrorNoUsage(fmt.Errorf("Value not found: %s", *o1)) 31 } 32 defer db1.Close() 33 34 db2, value2, err := cfg.GetPath(*o2) 35 d.CheckErrorNoUsage(err) 36 if value2 == nil { 37 d.CheckErrorNoUsage(fmt.Errorf("Value not found: %s", *o2)) 38 } 39 defer db2.Close() 40 41 if *stat { 42 diff.Summary(value1, value2) 43 return 0 44 } 45 46 pgr := outputpager.Start() 47 defer pgr.Stop() 48 49 diff.PrintDiff(pgr.Writer, value1, value2, false) 50 return 0 51 } 52 }