@@ -110,9 +110,14 @@ func Open(opts *devopt.Opts) (*Devbox, error) {
110
110
)
111
111
box .lockfile = lock
112
112
113
+ hasDeprecated , err := box .HasDeprecatedPackages ()
114
+ if err != nil {
115
+ return nil , err
116
+ }
117
+
113
118
if ! opts .IgnoreWarnings &&
114
119
! legacyPackagesWarningHasBeenShown &&
115
- box . HasDeprecatedPackages () {
120
+ hasDeprecated {
116
121
legacyPackagesWarningHasBeenShown = true
117
122
globalPath , err := GlobalDataPath ()
118
123
if err != nil {
@@ -138,7 +143,11 @@ func (d *Devbox) Config() *devconfig.Config {
138
143
}
139
144
140
145
func (d * Devbox ) ConfigHash () (string , error ) {
141
- pkgHashes := lo .Map (d .ConfigPackages (), func (i * devpkg.Package , _ int ) string { return i .Hash () })
146
+ pkgs , err := d .ConfigPackages ()
147
+ if err != nil {
148
+ return "" , err
149
+ }
150
+ pkgHashes := lo .Map (pkgs , func (i * devpkg.Package , _ int ) string { return i .Hash () })
142
151
includeHashes := lo .Map (d .Includes (), func (i plugin.Includable , _ int ) string { return i .Hash () })
143
152
h , err := d .cfg .Hash ()
144
153
if err != nil {
@@ -934,28 +943,35 @@ func (d *Devbox) nixFlakesFilePath() string {
934
943
935
944
// ConfigPackageNames returns the package names as defined in devbox.json
936
945
func (d * Devbox ) ConfigPackageNames () []string {
946
+ // TODO savil: centralize implementation by calling d.ConfigPackages and getting pkg.Raw
937
947
return d .cfg .Packages .VersionedNames ()
938
948
}
939
949
940
950
// InstallablePackageNames returns the names of packages that are to be installed
941
951
func (d * Devbox ) InstallablePackageNames () ([]string , error ) {
942
- // TODO: next PR replaces this implementation
952
+ // TODO savil. centralize implementation by calling d.InstallablePackages and getting pkg.Raw
943
953
return d .cfg .Packages .VersionedNamesForPlatform ()
944
954
}
945
955
946
956
// ConfigPackages returns the packages that are defined in devbox.json
947
957
// NOTE: the return type is different from devconfig.Packages
948
- func (d * Devbox ) ConfigPackages () []* devpkg.Package {
949
- return devpkg .PackageFromStrings (d .ConfigPackageNames (), d .lockfile )
958
+ func (d * Devbox ) ConfigPackages () ([]* devpkg.Package , error ) {
959
+ pkgs , err := devpkg .PackagesFromConfig (d .cfg , d .lockfile )
960
+ if err != nil {
961
+ return nil , err
962
+ }
963
+ return pkgs , nil
950
964
}
951
965
952
966
// InstallablePackages returns the packages that are to be installed
953
967
func (d * Devbox ) InstallablePackages () ([]* devpkg.Package , error ) {
954
- names , err := d .InstallablePackageNames ()
968
+ pkgs , err := d .ConfigPackages ()
955
969
if err != nil {
956
970
return nil , err
957
971
}
958
- return devpkg .PackageFromStrings (names , d .lockfile ), nil
972
+ return lo .Filter (pkgs , func (pkg * devpkg.Package , _ int ) bool {
973
+ return pkg .IsInstallable ()
974
+ }), nil
959
975
}
960
976
961
977
func (d * Devbox ) Includes () []plugin.Includable {
@@ -968,21 +984,28 @@ func (d *Devbox) Includes() []plugin.Includable {
968
984
return includes
969
985
}
970
986
971
- func (d * Devbox ) HasDeprecatedPackages () bool {
972
- for _ , pkg := range d .ConfigPackages () {
987
+ func (d * Devbox ) HasDeprecatedPackages () (bool , error ) {
988
+ pkgs , err := d .ConfigPackages ()
989
+ if err != nil {
990
+ return false , err
991
+ }
992
+ for _ , pkg := range pkgs {
973
993
if pkg .IsLegacy () {
974
- return true
994
+ return true , nil
975
995
}
976
996
}
977
- return false
997
+ return false , nil
978
998
}
979
999
980
1000
func (d * Devbox ) findPackageByName (name string ) (string , error ) {
1001
+ pkgs , err := d .ConfigPackages ()
1002
+ if err != nil {
1003
+ return "" , err
1004
+ }
981
1005
results := map [string ]bool {}
982
- for _ , pkg := range d .ConfigPackageNames () {
983
- i := devpkg .PackageFromString (pkg , d .lockfile )
984
- if i .String () == name || i .CanonicalName () == name {
985
- results [i .String ()] = true
1006
+ for _ , pkg := range pkgs {
1007
+ if pkg .String () == name || pkg .CanonicalName () == name {
1008
+ results [pkg .String ()] = true
986
1009
}
987
1010
}
988
1011
if len (results ) > 1 {
0 commit comments