MCPcopy
hub / github.com/slimtoolkit/slim / ArchiveFiles

Function ArchiveFiles

pkg/util/fsutil/fsutil.go:1358–1420  ·  view source on GitHub ↗

* use - TBD func createDummyFile(src, dst string) error { _, err := os.Stat(dst) if err != nil && os.IsNotExist(err) { f, err := os.Create(dst) if err != nil { return err } defer f.Close() f.WriteString(" ") s, err := os.Open(src) if err != nil { return err } defer s.Clo

(afname string,
	files []string,
	removePath bool,
	addPrefix string)

Source from the content-addressed store, hash-verified

1356///////////////////////////////////////////////////////////////////////////////
1357
1358func ArchiveFiles(afname string,
1359 files []string,
1360 removePath bool,
1361 addPrefix string) error {
1362 tf, err := os.Create(afname)
1363 if err != nil {
1364 return err
1365 }
1366
1367 defer close(tf)
1368
1369 tw := tar.NewWriter(tf)
1370 defer close(tw)
1371
1372 fpRewrite := func(filePath string,
1373 removePath bool,
1374 addPrefix string) string {
1375 if removePath {
1376 filePath = filepath.Base(filePath)
1377 }
1378
1379 if addPrefix != "" {
1380 filePath = fmt.Sprintf("%s%s", addPrefix, filePath)
1381 }
1382
1383 return filePath
1384 }
1385
1386 for _, fname := range files {
1387 if Exists(fname) && IsRegularFile(fname) {
1388 info, err := os.Stat(fname)
1389 if err != nil {
1390 log.Errorf("fsutil.ArchiveFiles: bad file - %s - %v", fname, err)
1391 return err
1392 }
1393
1394 th, err := tar.FileInfoHeader(info, "")
1395 if err != nil {
1396 return err
1397 }
1398
1399 th.Name = fpRewrite(fname, true, addPrefix)
1400 if err := tw.WriteHeader(th); err != nil {
1401 return err
1402 }
1403
1404 f, err := os.Open(fname)
1405 if err != nil {
1406 return err
1407 }
1408
1409 defer close(f)
1410 if _, err := io.CopyN(tw, f, th.Size); err != nil {
1411 return fmt.Errorf("cannot write %s file: %w", fname, err)
1412 }
1413 } else {
1414 log.Errorf("fsutil.ArchiveFiles: bad file - %s", fname)
1415 return fmt.Errorf("bad file - %s", fname)

Callers 2

ArchiveMethod · 0.92
OnCommandFunction · 0.92

Calls 3

closeFunction · 0.85
ExistsFunction · 0.85
IsRegularFileFunction · 0.85

Tested by

no test coverage detected