@@ -18,6 +18,7 @@ type InitialProjectSettings struct {
1818 EnvKey string
1919 Context * ldcontext.Context `json:"context,omitempty"`
2020 Overrides map [string ]FlagValue `json:"overrides,omitempty"`
21+ SyncOnce bool
2122}
2223
2324func CreateOrSyncProject (ctx context.Context , settings InitialProjectSettings ) error {
@@ -29,17 +30,23 @@ func CreateOrSyncProject(ctx context.Context, settings InitialProjectSettings) e
2930 var project Project
3031 project , createError := CreateProject (ctx , settings .ProjectKey , settings .EnvKey , settings .Context )
3132 if createError != nil {
32- if errors .Is (createError , ErrAlreadyExists ) {
33- log .Printf ("Project [%s] exists, refreshing data" , settings .ProjectKey )
34- var updateErr error
35- project , updateErr = UpdateProject (ctx , settings .ProjectKey , settings .Context , & settings .EnvKey )
36- if updateErr != nil {
37- return updateErr
38- }
39-
40- } else {
33+ if ! errors .Is (createError , ErrAlreadyExists ) {
4134 return createError
4235 }
36+
37+ // If set, don't resync and don't apply overrides because whatever you have locally
38+ // is already set up with what you want.
39+ if settings .SyncOnce {
40+ log .Printf ("Project [%s] exists, but --sync-once flag is set, skipping refresh" , settings .ProjectKey )
41+ return nil
42+ }
43+
44+ log .Printf ("Project [%s] exists, refreshing data" , settings .ProjectKey )
45+ var updateErr error
46+ project , updateErr = UpdateProject (ctx , settings .ProjectKey , settings .Context , & settings .EnvKey )
47+ if updateErr != nil {
48+ return updateErr
49+ }
4350 }
4451 for flagKey , val := range settings .Overrides {
4552 _ , err := UpsertOverride (ctx , settings .ProjectKey , flagKey , val )
0 commit comments