@@ -14,6 +14,7 @@ import (
1414 "time"
1515
1616 "github.com/meshery/meshkit/encoding"
17+ "github.com/meshery/meshkit/errors"
1718 "github.com/meshery/meshkit/files"
1819 "github.com/meshery/meshkit/generators"
1920 "github.com/meshery/meshkit/generators/models"
@@ -975,6 +976,12 @@ func InvokeGenerationFromSheetWithOptions(wg *sync.WaitGroup, path string, model
975976 }
976977 if alreadyExist {
977978 totalAvailableModels --
979+ // If LatestVersionOnly is enabled and model already exists, skip it
980+ if opts .LatestVersionOnly {
981+ log .Info ("Model already exists, skipping due to LatestVersionOnly option: " , model .Model )
982+ done <- ErrModelSkipped (model .Model , "model already exists and LatestVersionOnly is enabled" )
983+ return
984+ }
978985 }
979986
980987 for _ , comp := range comps {
@@ -1036,9 +1043,15 @@ func InvokeGenerationFromSheetWithOptions(wg *sync.WaitGroup, path string, model
10361043 case genErr := <- done :
10371044 elapsed := time .Since (modelStartTime )
10381045 if genErr != nil {
1039- progressTracker .IncrementFailure ()
1040- LogError .Error (fmt .Errorf ("model %s generation failed after %v: %w" , model .Model , elapsed .Round (time .Millisecond ), genErr ))
1041- Log .Debug (fmt .Sprintf ("Model %s: FAILED after %v - %v" , model .Model , elapsed .Round (time .Millisecond ), genErr ))
1046+ // Check if this is a skip error
1047+ if meshkitErr , ok := genErr .(* errors.Error ); ok && meshkitErr .Code == ErrModelSkippedCode {
1048+ progressTracker .IncrementSkipped ()
1049+ Log .Debug (fmt .Sprintf ("Model %s: SKIPPED in %v - %v" , model .Model , elapsed .Round (time .Millisecond ), genErr ))
1050+ } else {
1051+ progressTracker .IncrementFailure ()
1052+ LogError .Error (fmt .Errorf ("model %s generation failed after %v: %w" , model .Model , elapsed .Round (time .Millisecond ), genErr ))
1053+ Log .Debug (fmt .Sprintf ("Model %s: FAILED after %v - %v" , model .Model , elapsed .Round (time .Millisecond ), genErr ))
1054+ }
10421055 } else {
10431056 progressTracker .IncrementSuccess ()
10441057 Log .Debug (fmt .Sprintf ("Model %s: SUCCESS in %v" , model .Model , elapsed .Round (time .Millisecond )))
0 commit comments