@@ -333,9 +333,12 @@ var cmdCreate = &cli.Command{
333
333
334
334
logger .Infow ("object" , "name" , name )
335
335
336
- info , err := minioClient .PutObject (ctx , flagBucket , fmt .Sprintf ("%s%s.car" , flagNamePrefix , name ), tr , - 1 , minio.PutObjectOptions {})
336
+ info , err := minioClient .PutObject (ctx , flagBucket , fmt .Sprintf ("%s%s.car" , flagNamePrefix , name ), tr , - 1 , minio.PutObjectOptions {
337
+ ContentDisposition : fmt .Sprintf ("attachment; filename=\" %s.car\" " , name ),
338
+ ContentType : "application/octet-stream" ,
339
+ })
337
340
if err != nil {
338
- return err
341
+ return fmt . Errorf ( "failed to upload" , "object" , fmt . Sprintf ( "%s%s.car" , flagNamePrefix , name ), " err" , err )
339
342
}
340
343
341
344
logger .Infow ("upload" ,
@@ -349,12 +352,40 @@ var cmdCreate = &cli.Command{
349
352
"expiration_rule_id" , info .ExpirationRuleID ,
350
353
)
351
354
352
- sha256sum := fmt .Sprintf ("%x *%s.car" , h .Sum (nil ), name )
355
+ latestLocation , err := url .QueryUnescape (info .Location )
356
+ if err != nil {
357
+ logger .Errorw ("failed to decode location url" , "location" , info .Location , "err" , err )
358
+ latestLocation = info .Location
359
+ }
360
+
361
+ sha256sum := fmt .Sprintf ("%x *%s.car\n " , h .Sum (nil ), name )
353
362
354
- info , err = minioClient .PutObject (ctx , flagBucket , fmt .Sprintf ("%s%s.sha256sum" , flagNamePrefix , name ), strings .NewReader (sha256sum ), - 1 , minio.PutObjectOptions {})
363
+ info , err = minioClient .PutObject (ctx , flagBucket , fmt .Sprintf ("%s%s.sha256sum" , flagNamePrefix , name ), strings .NewReader (sha256sum ), - 1 , minio.PutObjectOptions {
364
+ ContentDisposition : fmt .Sprintf ("attachment; filename=\" %s.sha256sum\" " , name ),
365
+ ContentType : "text/plain" ,
366
+ })
355
367
if err != nil {
356
- logger .Errorw ("failed to write sha256sum" , "object" , info . Key , "err" , err )
368
+ logger .Errorw ("failed to write sha256sum" , "object" , fmt . Sprintf ( "%s%s.sha256sum" , flagNamePrefix , name ) , "err" , err )
357
369
}
370
+
371
+ info , err = minioClient .PutObject (ctx , flagBucket , fmt .Sprintf ("%slatest" , flagNamePrefix ), strings .NewReader (latestLocation ), - 1 , minio.PutObjectOptions {
372
+ WebsiteRedirectLocation : latestLocation ,
373
+ ContentType : "text/plain" ,
374
+ })
375
+ if err != nil {
376
+ return fmt .Errorf ("failed to write latest" , "object" , fmt .Sprintf ("%slatest" , flagNamePrefix ), "err" , err )
377
+ }
378
+
379
+ logger .Infow ("upload" ,
380
+ "bucket" , info .Bucket ,
381
+ "key" , info .Key ,
382
+ "etag" , info .ETag ,
383
+ "size" , info .Size ,
384
+ "location" , info .Location ,
385
+ "version_id" , info .VersionID ,
386
+ "expiration" , info .Expiration ,
387
+ "expiration_rule_id" , info .ExpirationRuleID ,
388
+ )
358
389
}
359
390
360
391
if err := <- errCh ; err != nil {
0 commit comments