(ctx context.Context, mode installMode)
| 463 | } |
| 464 | |
| 465 | func (d *Devbox) installPackages(ctx context.Context, mode installMode) error { |
| 466 | defer debug.FunctionTimer().End() |
| 467 | // Create plugin directories first because packages might need them |
| 468 | for _, pluginConfig := range d.Config().IncludedPluginConfigs() { |
| 469 | if err := d.PluginManager().CreateFilesForConfig(pluginConfig); err != nil { |
| 470 | return err |
| 471 | } |
| 472 | } |
| 473 | |
| 474 | if err := d.installNixPackagesToStore(ctx, mode); err != nil { |
| 475 | if caches, _ := nixcache.CachedReadCaches(ctx); len(caches) > 0 { |
| 476 | err = d.handleInstallFailure(ctx, mode) |
| 477 | } |
| 478 | return err |
| 479 | } |
| 480 | |
| 481 | return d.InstallRunXPackages(ctx) |
| 482 | } |
| 483 | |
| 484 | func (d *Devbox) handleInstallFailure(ctx context.Context, mode installMode) error { |
| 485 | ux.Fwarningf(d.stderr, "Failed to build from cache, building from source.\n") |
no test coverage detected