mirror of
https://github.com/hasura/graphql-engine.git
synced 2024-12-18 21:12:09 +03:00
40 lines
1.1 KiB
Go
40 lines
1.1 KiB
Go
|
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
|
||
|
}
|