MCPcopy
hub / github.com/sqlc-dev/sqlc / Diff

Function Diff

internal/cmd/diff.go:15–59  ·  view source on GitHub ↗
(ctx context.Context, dir, name string, opts *Options)

Source from the content-addressed store, hash-verified

13)
14
15func Diff(ctx context.Context, dir, name string, opts *Options) error {
16 stderr := opts.Stderr
17 output, err := Generate(ctx, dir, name, opts)
18 if err != nil {
19 return err
20 }
21 defer trace.StartRegion(ctx, "checkfiles").End()
22 var errored bool
23
24 keys := make([]string, 0, len(output))
25 for k, _ := range output {
26 kk := k
27 keys = append(keys, kk)
28 }
29 sort.Strings(keys)
30
31 for _, filename := range keys {
32 source := output[filename]
33 if _, err := os.Stat(filename); errors.Is(err, os.ErrNotExist) {
34 errored = true
35 // stdout message
36 continue
37 }
38 existing, err := os.ReadFile(filename)
39 if err != nil {
40 errored = true
41 fmt.Fprintf(stderr, "%s: %s\n", filename, err)
42 continue
43 }
44 diff := gonp.New(getLines(existing), getLines([]byte(source)))
45 diff.Compose()
46 uniHunks := filterHunks(diff.UnifiedHunks())
47
48 if len(uniHunks) > 0 {
49 errored = true
50 fmt.Fprintf(stderr, "--- a%s\n", strings.TrimPrefix(filename, dir))
51 fmt.Fprintf(stderr, "+++ b%s\n", strings.TrimPrefix(filename, dir))
52 diff.FprintUniHunks(stderr, uniHunks)
53 }
54 }
55 if errored {
56 return errors.New("diff found")
57 }
58 return nil
59}

Callers 2

TestReplayFunction · 0.92
cmd.goFile · 0.85

Calls 3

getLinesFunction · 0.85
filterHunksFunction · 0.85
GenerateFunction · 0.70

Tested by 1

TestReplayFunction · 0.74