Skip to content

Commit 485ec44

Browse files
committed
rename PackagePackages to InstallablePackages
1 parent 2079687 commit 485ec44

File tree

7 files changed

+59
-32
lines changed

7 files changed

+59
-32
lines changed

internal/devconfig/packages.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,9 @@ func (pkgs *Packages) VersionedNames() []string {
4545
return result
4646
}
4747

48-
func (pkgs *Packages) VersionedNamesForPlatform() []string {
48+
func (pkgs *Packages) VersionedNamesForPlatform() ([]string, error) {
4949
// TODO savil. Next PR will update this implementation
50-
return pkgs.VersionedNames()
50+
return pkgs.VersionedNames(), nil
5151
}
5252

5353
// Add adds a package to the list of packages

internal/impl/devbox.go

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -483,10 +483,12 @@ func (d *Devbox) saveCfg() error {
483483
}
484484

485485
func (d *Devbox) Services() (services.Services, error) {
486-
pluginSvcs, err := d.pluginManager.GetServices(
487-
d.PlatformPackages(),
488-
d.cfg.Include,
489-
)
486+
packages, err := d.InstallablePackages()
487+
if err != nil {
488+
return nil, err
489+
}
490+
491+
pluginSvcs, err := d.pluginManager.GetServices(packages, d.cfg.Include)
490492
if err != nil {
491493
return nil, err
492494
}
@@ -824,7 +826,11 @@ func (d *Devbox) computeNixEnv(ctx context.Context, usePrintDevEnvCache bool) (m
824826
// We still need to be able to add env variables to non-service binaries
825827
// (e.g. ruby). This would involve understanding what binaries are associated
826828
// to a given plugin.
827-
pluginEnv, err := d.pluginManager.Env(d.PlatformPackages(), d.cfg.Include, env)
829+
installablePackages, err := d.InstallablePackages()
830+
if err != nil {
831+
return nil, err
832+
}
833+
pluginEnv, err := d.pluginManager.Env(installablePackages, d.cfg.Include, env)
828834
if err != nil {
829835
return nil, err
830836
}
@@ -926,20 +932,13 @@ func (d *Devbox) nixFlakesFilePath() string {
926932
return filepath.Join(d.projectDir, ".devbox/gen/flake/flake.nix")
927933
}
928934

929-
// Refactoring steps:
930-
// 1. Change all users of Packages() to ConfigPackageNames() or PlatformPackageNames()
931-
// 2. ConfigPackages() consumes d.cfg.Packages
932-
// 3. Change d.cfg.Packages.VersionedNames() callers to Packages() variants
933-
// 3. Change ConfigPackages() consumers to ConfigPackages() or PlatformPackages()
934-
935935
// ConfigPackageNames returns the package names as defined in devbox.json
936936
func (d *Devbox) ConfigPackageNames() []string {
937937
return d.cfg.Packages.VersionedNames()
938938
}
939939

940-
// PlatformPackageNames returns the names of packages that are to be installed
941-
// on the user's current platform.
942-
func (d *Devbox) PlatformPackageNames() []string {
940+
// InstallablePackageNames returns the names of packages that are to be installed
941+
func (d *Devbox) InstallablePackageNames() ([]string, error) {
943942
// TODO: next PR replaces this implementation
944943
return d.cfg.Packages.VersionedNamesForPlatform()
945944
}
@@ -950,9 +949,13 @@ func (d *Devbox) ConfigPackages() []*devpkg.Package {
950949
return devpkg.PackageFromStrings(d.ConfigPackageNames(), d.lockfile)
951950
}
952951

953-
// PlatformPackages returns the packages that are to be installed
954-
func (d *Devbox) PlatformPackages() []*devpkg.Package {
955-
return devpkg.PackageFromStrings(d.PlatformPackageNames(), d.lockfile)
952+
// InstallablePackages returns the packages that are to be installed
953+
func (d *Devbox) InstallablePackages() ([]*devpkg.Package, error) {
954+
names, err := d.InstallablePackageNames()
955+
if err != nil {
956+
return nil, err
957+
}
958+
return devpkg.PackageFromStrings(names, d.lockfile), nil
956959
}
957960

958961
func (d *Devbox) Includes() []plugin.Includable {

internal/impl/packages.go

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -258,7 +258,11 @@ func (d *Devbox) addPackagesToProfile(ctx context.Context, mode installMode) err
258258
// If packages are in profile but nixpkgs has been purged, the experience
259259
// will be poor when we try to run print-dev-env. So we ensure nixpkgs is
260260
// prefetched for all relevant packages (those not in binary cache).
261-
for _, input := range d.PlatformPackages() {
261+
installablePkgs, err := d.InstallablePackages()
262+
if err != nil {
263+
return err
264+
}
265+
for _, input := range installablePkgs {
262266
if err := input.EnsureNixpkgsPrefetched(d.writer); err != nil {
263267
return err
264268
}
@@ -381,7 +385,11 @@ func (d *Devbox) pendingPackagesForInstallation(ctx context.Context) ([]string,
381385
if err != nil {
382386
return nil, err
383387
}
384-
for _, input := range d.PlatformPackages() {
388+
installablePkgs, err := d.InstallablePackages()
389+
if err != nil {
390+
return nil, err
391+
}
392+
for _, input := range installablePkgs {
385393
_, err := nixprofile.ProfileListIndex(&nixprofile.ProfileListIndexArgs{
386394
List: list,
387395
Lockfile: d.lockfile,
@@ -416,7 +424,10 @@ func (d *Devbox) extraPackagesInProfile(ctx context.Context) ([]*nixprofile.NixP
416424
if err != nil {
417425
return nil, err
418426
}
419-
devboxInputs := d.PlatformPackages()
427+
devboxInputs, err := d.InstallablePackages()
428+
if err != nil {
429+
return nil, err
430+
}
420431

421432
if len(devboxInputs) == len(profileItems) {
422433
// Optimization: skip comparison if number of packages are the same. This only works

internal/plugin/manager.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ type Manager struct {
1515
}
1616

1717
type devboxProject interface {
18-
PlatformPackageNames() []string
18+
InstallablePackageNames() ([]string, error)
1919
ProjectDir() string
2020
}
2121

internal/plugin/plugin.go

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -157,17 +157,21 @@ func (m *Manager) createFile(
157157
urlForInput = pkg.URLForFlakeInput()
158158
}
159159

160+
packages, err := m.InstallablePackageNames()
161+
if err != nil {
162+
return err
163+
}
164+
160165
var buf bytes.Buffer
161166
if err = tmpl.Execute(&buf, map[string]any{
162167
"DevboxDir": filepath.Join(m.ProjectDir(), devboxDirName, name),
163168
"DevboxDirRoot": filepath.Join(m.ProjectDir(), devboxDirName),
164169
"DevboxProfileDefault": filepath.Join(m.ProjectDir(), nix.ProfilePath),
165170
"PackageAttributePath": attributePath,
166-
// TODO savil: not sure about this one.
167-
"Packages": m.PlatformPackageNames(),
168-
"System": system,
169-
"URLForInput": urlForInput,
170-
"Virtenv": filepath.Join(virtenvPath, name),
171+
"Packages": packages,
172+
"System": system,
173+
"URLForInput": urlForInput,
174+
"Virtenv": filepath.Join(virtenvPath, name),
171175
}); err != nil {
172176
return errors.WithStack(err)
173177
}

internal/shellgen/flake_plan.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,13 @@ func newFlakePlan(ctx context.Context, devbox devboxer) (*flakePlan, error) {
2222
ctx, task := trace.NewTask(ctx, "devboxFlakePlan")
2323
defer task.End()
2424

25+
userPackages, err := devbox.InstallablePackages()
26+
if err != nil {
27+
return nil, err
28+
}
29+
2530
// Create plugin directories first because inputs might depend on them
26-
for _, pkg := range devbox.PlatformPackages() {
31+
for _, pkg := range userPackages {
2732
if err := devbox.PluginManager().Create(pkg); err != nil {
2833
return nil, err
2934
}
@@ -41,7 +46,6 @@ func newFlakePlan(ctx context.Context, devbox devboxer) (*flakePlan, error) {
4146
}
4247
}
4348

44-
userPackages := devbox.PlatformPackages()
4549
pluginPackages, err := devbox.PluginManager().PluginInputs(userPackages)
4650
if err != nil {
4751
return nil, err

internal/shellgen/scripts.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ const HooksFilename = ".hooks"
2323
type devboxer interface {
2424
Config() *devconfig.Config
2525
Lockfile() *lock.File
26-
PlatformPackages() []*devpkg.Package
26+
InstallablePackages() ([]*devpkg.Package, error)
2727
PluginManager() *plugin.Manager
2828
ProjectDir() string
2929
}
@@ -42,9 +42,14 @@ func WriteScriptsToFiles(devbox devboxer) error {
4242
return errors.WithStack(err)
4343
}
4444

45+
packages, err := devbox.InstallablePackages()
46+
if err != nil {
47+
return err
48+
}
49+
4550
// Write all hooks to a file.
4651
written := map[string]struct{}{} // set semantics; value is irrelevant
47-
pluginHooks, err := plugin.InitHooks(devbox.PlatformPackages(), devbox.ProjectDir())
52+
pluginHooks, err := plugin.InitHooks(packages, devbox.ProjectDir())
4853
if err != nil {
4954
return errors.WithStack(err)
5055
}

0 commit comments

Comments
 (0)