graphql-engine/cli/internal/projectmetadata/diff.go

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

40 lines
1.1 KiB
Go
Raw Normal View History

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
}