()
| 446 | } |
| 447 | |
| 448 | func (c *Celer) clonePorts() error { |
| 449 | var cloneRequired bool |
| 450 | |
| 451 | portsDir := filepath.Join(dirs.WorkspaceDir, "ports") |
| 452 | if !fileio.PathExists(portsDir) { |
| 453 | cloneRequired = true |
| 454 | } else { |
| 455 | entities, err := os.ReadDir(portsDir) |
| 456 | if err != nil { |
| 457 | return err |
| 458 | } |
| 459 | |
| 460 | if len(entities) == 0 { |
| 461 | cloneRequired = true |
| 462 | } |
| 463 | } |
| 464 | |
| 465 | if cloneRequired { |
| 466 | // Remove ports dir before clone it. |
| 467 | if err := os.RemoveAll(portsDir); err != nil { |
| 468 | return err |
| 469 | } |
| 470 | |
| 471 | // Clone ports repo. |
| 472 | if c.Main.Offline { |
| 473 | return fmt.Errorf("offline is on, cloning ports is aborted") |
| 474 | } |
| 475 | |
| 476 | portsRepoUrl := c.portsRepoUrl() |
| 477 | if err := fileio.CheckAccessible(portsRepoUrl); err != nil { |
| 478 | return fmt.Errorf("%s is not accessible, cloning ports is aborted", portsRepoUrl) |
| 479 | } |
| 480 | |
| 481 | // Make sure git available. |
| 482 | if err := buildtools.CheckTools(c, "git"); err != nil { |
| 483 | return err |
| 484 | } |
| 485 | |
| 486 | if err := git.CloneRepo("[clone ports]", "ports repo", portsRepoUrl, defaultPortRepoBranch, 0, portsDir); err != nil { |
| 487 | return err |
| 488 | } |
| 489 | } |
| 490 | |
| 491 | return nil |
| 492 | } |
| 493 | |
| 494 | // loadProjectVars loads project-level variables into global ExprVars. |
| 495 | func (c *Celer) loadProjectVars() { |
no test coverage detected