@@ -47,8 +47,12 @@ var restoreXcodeDerivedDataFilesCmd = &cobra.Command{
47
47
projectRoot , _ := cmd .Flags ().GetString ("project-root" )
48
48
cacheKey , _ := cmd .Flags ().GetString ("key" )
49
49
forceOverwrite , _ := cmd .Flags ().GetBool ("force-overwrite-files" )
50
+ skipExisting , _ := cmd .Flags ().GetBool ("skip-existing-files" )
50
51
maxLoggedErrors , _ := cmd .Flags ().GetInt ("max-logged-errors" )
51
52
53
+ logger .Infof ("(i) Skip existing files: %t" , skipExisting )
54
+ logger .Infof ("(i) Force overwrite existing files: %t" , forceOverwrite )
55
+
52
56
tracker := xcode .NewDefaultStepTracker ("restore-xcode-build-cache" , os .Getenv , logger )
53
57
defer tracker .Wait ()
54
58
startT := time .Now ()
@@ -60,7 +64,7 @@ var restoreXcodeDerivedDataFilesCmd = &cobra.Command{
60
64
}
61
65
62
66
op , cmdError := restoreXcodeDerivedDataFilesCmdFn (cmd .Context (), authConfig , CacheMetadataPath , projectRoot ,
63
- cacheKey , logger , tracker , startT , os .Getenv , isDebugLogMode , forceOverwrite , maxLoggedErrors )
67
+ cacheKey , logger , tracker , startT , os .Getenv , isDebugLogMode , skipExisting , forceOverwrite , maxLoggedErrors )
64
68
if op != nil {
65
69
if cmdError != nil {
66
70
errStr := cmdError .Error ()
@@ -92,11 +96,12 @@ func init() {
92
96
panic (err )
93
97
}
94
98
restoreXcodeDerivedDataFilesCmd .Flags ().Bool ("force-overwrite-files" , false , "If set, the command will try to overwrite existing files during restoring the cache even if the permissions do not allow it" )
99
+ restoreXcodeDerivedDataFilesCmd .Flags ().Bool ("skip-existing-files" , false , "If set, existing files will be skipped and not be overwritten during restoring the cache" )
95
100
restoreXcodeDerivedDataFilesCmd .Flags ().Int ("max-logged-errors" , 150 , "The maximum number of errors logged to the console during restoring the cache." )
96
101
}
97
102
98
103
func restoreXcodeDerivedDataFilesCmdFn (ctx context.Context , authConfig common.CacheAuthConfig , cacheMetadataPath , projectRoot , providedCacheKey string , logger log.Logger ,
99
- tracker xcode.StepAnalyticsTracker , startT time.Time , envProvider func (string ) string , isDebugLogMode , forceOverwrite bool , maxLoggedDownloadErrors int ) (* xa.CacheOperation , error ) {
104
+ tracker xcode.StepAnalyticsTracker , startT time.Time , envProvider func (string ) string , isDebugLogMode , skipExisting , forceOverwrite bool , maxLoggedDownloadErrors int ) (* xa.CacheOperation , error ) {
100
105
op := newCacheOperation (startT , xa .OperationTypeDownload , envProvider )
101
106
kvClient , err := createKVClient (ctx , op .OperationID , authConfig , envProvider , logger )
102
107
if err != nil {
@@ -137,7 +142,7 @@ func restoreXcodeDerivedDataFilesCmdFn(ctx context.Context, authConfig common.Ca
137
142
tracker .LogMetadataLoaded (metadataRestoredT .Sub (startT ), string (cacheKeyType ), len (metadata .ProjectFiles .Files )+ len (metadata .ProjectFiles .Directories ), filesUpdated , metadataSize )
138
143
139
144
logger .TInfof ("Downloading DerivedData files" )
140
- stats , err := xcode .DownloadCacheFilesFromBuildCache (ctx , metadata .DerivedData , kvClient , logger , isDebugLogMode , forceOverwrite , maxLoggedDownloadErrors )
145
+ stats , err := xcode .DownloadCacheFilesFromBuildCache (ctx , metadata .DerivedData , kvClient , logger , isDebugLogMode , skipExisting , forceOverwrite , maxLoggedDownloadErrors )
141
146
ddDownloadedT := time .Now ()
142
147
tracker .LogDerivedDataDownloaded (ddDownloadedT .Sub (metadataRestoredT ), stats )
143
148
fillCacheOperationWithDownloadStats (op , stats )
@@ -170,7 +175,7 @@ func restoreXcodeDerivedDataFilesCmdFn(ctx context.Context, authConfig common.Ca
170
175
171
176
if len (metadata .XcodeCacheDir .Files ) > 0 {
172
177
logger .TInfof ("Downloading Xcode cache files" )
173
- if _ , err := xcode .DownloadCacheFilesFromBuildCache (ctx , metadata .XcodeCacheDir , kvClient , logger , isDebugLogMode , forceOverwrite , maxLoggedDownloadErrors ); err != nil {
178
+ if _ , err := xcode .DownloadCacheFilesFromBuildCache (ctx , metadata .XcodeCacheDir , kvClient , logger , isDebugLogMode , skipExisting , forceOverwrite , maxLoggedDownloadErrors ); err != nil {
174
179
return op , fmt .Errorf ("download Xcode cache files: %w" , err )
175
180
}
176
181
0 commit comments