Skip to content

Commit

Permalink
refactor(diff): allow custom printer funcs
Browse files Browse the repository at this point in the history
when using deck as a lib, if we want to capture the operations logs (creations, updates, deletions), we need to reconfigure the global vars in the `cprint` package.
this is an issue if we want to do different deck operations in parallel.

this change introduce new parameters to the Syncer, to configure custom printer funcs, without depending on the `cprint` package.
Note that by default if no custom printer funcs are configured, the ones from the `cprint` package will be used - so no behaviour change.
  • Loading branch information
vbehar authored and GGabriele committed Nov 18, 2022
1 parent 7a50e73 commit d5e4563
Showing 1 changed file with 25 additions and 3 deletions.
28 changes: 25 additions & 3 deletions diff/diff.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,10 @@ type Syncer struct {
silenceWarnings bool
stageDelaySec int

createPrintln func(a ...interface{})
updatePrintln func(a ...interface{})
deletePrintln func(a ...interface{})

kongClient *kong.Client
konnectClient *konnect.Client

Expand All @@ -70,6 +74,10 @@ type SyncerOpts struct {
StageDelaySec int

NoMaskValues bool

CreatePrintln func(a ...interface{})
UpdatePrintln func(a ...interface{})
DeletePrintln func(a ...interface{})
}

// NewSyncer constructs a Syncer.
Expand All @@ -85,6 +93,20 @@ func NewSyncer(opts SyncerOpts) (*Syncer, error) {
stageDelaySec: opts.StageDelaySec,

noMaskValues: opts.NoMaskValues,

createPrintln: opts.CreatePrintln,
updatePrintln: opts.UpdatePrintln,
deletePrintln: opts.DeletePrintln,
}

if s.createPrintln == nil {
s.createPrintln = cprint.CreatePrintln
}
if s.updatePrintln == nil {
s.updatePrintln = cprint.UpdatePrintln
}
if s.deletePrintln == nil {
s.deletePrintln = cprint.DeletePrintln
}

err := s.init()
Expand Down Expand Up @@ -383,19 +405,19 @@ func (sc *Syncer) Solve(ctx context.Context, parallelism int, dry bool) (Stats,
if err != nil {
return nil, err
}
cprint.CreatePrintln("creating", e.Kind, c.Console(), diffString)
sc.createPrintln("creating", e.Kind, c.Console(), diffString)
case crud.Update:
diffString, err := generateDiffString(e, false, sc.noMaskValues)
if err != nil {
return nil, err
}
cprint.UpdatePrintln("updating", e.Kind, c.Console(), diffString)
sc.updatePrintln("updating", e.Kind, c.Console(), diffString)
case crud.Delete:
diffString, err := generateDiffString(e, true, sc.noMaskValues)
if err != nil {
return nil, err
}
cprint.DeletePrintln("deleting", e.Kind, c.Console(), diffString)
sc.deletePrintln("deleting", e.Kind, c.Console(), diffString)
default:
panic("unknown operation " + e.Op.String())
}
Expand Down

0 comments on commit d5e4563

Please sign in to comment.