| 427 | } |
| 428 | |
| 429 | func (p *Port) InstallFromPkgCache(options InstallOptions) (bool, error) { |
| 430 | // Check if pkgCacheConfig has been configured. |
| 431 | pkgCacheConfig := p.ctx.PkgCacheConfig() |
| 432 | if pkgCacheConfig == nil || pkgCacheConfig.GetDir(context.PkgCacheDirRoot) == "" { |
| 433 | return false, nil |
| 434 | } |
| 435 | |
| 436 | installed, err := p.doInstallFromPkgCache(options) |
| 437 | if err != nil { |
| 438 | // Repo not exist is not error. |
| 439 | if errors.Is(err, errors.ErrRepoNotExit) { |
| 440 | return false, nil |
| 441 | } |
| 442 | return false, err |
| 443 | } |
| 444 | |
| 445 | if installed { |
| 446 | // Install dependencies also. |
| 447 | if err := p.installDependencies(options); err != nil { |
| 448 | return false, err |
| 449 | } |
| 450 | |
| 451 | if err := p.doInstallFromPackage(p.InstalledDir); err != nil { |
| 452 | return false, err |
| 453 | } |
| 454 | |
| 455 | fromDir := pkgCacheConfig.GetDir(context.PkgCacheDirRoot) |
| 456 | return true, p.writeTraceFile(fmt.Sprintf("pkg-cache: %q", fromDir)) |
| 457 | } |
| 458 | |
| 459 | return false, nil |
| 460 | } |
| 461 | |
| 462 | func (p *Port) InstallFromDevCache(options InstallOptions) (bool, error) { |
| 463 | // Install from local dev cache only work for hostDev or devDep. |