forked from hasura/graphql-engine
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdiff.go
More file actions
39 lines (33 loc) · 1.08 KB
/
diff.go
File metadata and controls
39 lines (33 loc) · 1.08 KB
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
37
38
39
package projectmetadata
import (
"io"
"github.com/hasura/graphql-engine/cli/v2"
"github.com/hasura/graphql-engine/cli/v2/internal/metadataobject"
)
type PrintContextRichDiffBetweenProjectDirectoriesOpts struct {
EC *cli.ExecutionContext
MetadataHandler *Handler
FromDirectory, ToDirectory string
Writer io.Writer
DisableColor bool
}
func PrintContextRichDiffBetweenProjectDirectories(opts PrintContextRichDiffBetweenProjectDirectoriesOpts) error {
fromObjects := GetMetadataObjectsWithDir(opts.EC, opts.FromDirectory)
toObjects := GetMetadataObjectsWithDir(opts.EC, opts.ToDirectory)
toObjectsMap := map[string]metadataobject.Object{}
for _, object := range toObjects {
toObjectsMap[object.Key()] = object
}
for _, fromObject := range fromObjects {
diffOpts := metadataobject.WriteDiffOpts{
To: toObjectsMap[fromObject.Key()],
W: opts.Writer,
DisableColor: opts.DisableColor,
}
err := fromObject.WriteDiff(diffOpts)
if err != nil {
opts.EC.Logger.Error(err)
}
}
return nil
}