Skip to content

Commit 93e1315

Browse files
committed
switch to more modern ordered map library
1 parent 36bc7c5 commit 93e1315

File tree

4 files changed

+60
-55
lines changed

4 files changed

+60
-55
lines changed

go.mod

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ module go.jetpack.io/devbox
33
go 1.20
44

55
require (
6-
cuelang.org/go v0.4.3
76
github.com/AlecAivazis/survey/v2 v2.3.6
87
github.com/MakeNowJust/heredoc/v2 v2.0.1
98
github.com/MicahParks/keyfunc/v2 v2.1.0
@@ -39,13 +38,21 @@ require (
3938
github.com/spf13/cobra v1.6.1
4039
github.com/spf13/pflag v1.0.5
4140
github.com/stretchr/testify v1.8.2
41+
github.com/wk8/go-ordered-map/v2 v2.1.8
4242
github.com/zealic/go2node v0.1.0
4343
golang.org/x/exp v0.0.0-20230321023759-10a507213a29
4444
golang.org/x/mod v0.9.0
4545
gopkg.in/natefinch/lumberjack.v2 v2.2.1
4646
gopkg.in/yaml.v3 v3.0.1
4747
)
4848

49+
require (
50+
github.com/bahlo/generic-list-go v0.2.0 // indirect
51+
github.com/buger/jsonparser v1.1.1 // indirect
52+
github.com/kr/pretty v0.1.0 // indirect
53+
github.com/mailru/easyjson v0.7.7 // indirect
54+
)
55+
4956
require (
5057
github.com/InVisionApp/go-health/v2 v2.1.3 // indirect
5158
github.com/InVisionApp/go-logger v1.0.1 // indirect
@@ -64,7 +71,6 @@ require (
6471
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.10 // indirect
6572
github.com/aws/smithy-go v1.13.5 // indirect
6673
github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 // indirect
67-
github.com/cockroachdb/apd/v2 v2.0.2 // indirect
6874
github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect
6975
github.com/davecgh/go-spew v1.1.1 // indirect
7076
github.com/dsnet/compress v0.0.1 // indirect
@@ -75,10 +81,8 @@ require (
7581
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect
7682
github.com/klauspost/compress v1.16.3 // indirect
7783
github.com/klauspost/pgzip v1.2.5 // indirect
78-
github.com/lib/pq v1.10.7 // indirect
7984
github.com/mattn/go-colorable v0.1.13 // indirect
8085
github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d // indirect
81-
github.com/mpvl/unique v0.0.0-20150818121801-cbe035fff7de // indirect
8286
github.com/nwaples/rardecode/v2 v2.0.0-beta.2 // indirect
8387
github.com/pierrec/lz4/v4 v4.1.17 // indirect
8488
github.com/pmezard/go-difflib v1.0.0 // indirect
@@ -88,7 +92,6 @@ require (
8892
github.com/therootcompany/xz v1.0.1 // indirect
8993
github.com/ulikunitz/xz v0.5.11 // indirect
9094
github.com/xtgo/uuid v0.0.0-20140804021211-a0b114877d4c // indirect
91-
golang.org/x/net v0.8.0 // indirect
9295
golang.org/x/sys v0.6.0 // indirect
9396
golang.org/x/term v0.6.0 // indirect
9497
golang.org/x/text v0.8.0 // indirect

go.sum

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
cuelang.org/go v0.4.3 h1:W3oBBjDTm7+IZfCKZAmC8uDG0eYfJL4Pp/xbbCMKaVo=
2-
cuelang.org/go v0.4.3/go.mod h1:7805vR9H+VoBNdWFdI7jyDR3QLUPp4+naHfbcgp55HI=
31
github.com/AlecAivazis/survey/v2 v2.3.6 h1:NvTuVHISgTHEHeBFqt6BHOe4Ny/NwGZr7w+F8S9ziyw=
42
github.com/AlecAivazis/survey/v2 v2.3.6/go.mod h1:4AuI9b7RjAR+G7v9+C4YSlX/YL3K3cWNXgWXOhllqvI=
53
github.com/DATA-DOG/go-sqlmock v1.3.3 h1:CWUqKXe0s8A2z6qCgkP4Kru7wC11YoAnoupUKFDnH08=
@@ -59,6 +57,8 @@ github.com/aws/aws-sdk-go-v2/service/sts v1.19.0 h1:2DQLAKDteoEDI8zpCzqBMaZlJuoE
5957
github.com/aws/aws-sdk-go-v2/service/sts v1.19.0/go.mod h1:BgQOMsg8av8jset59jelyPW7NoZcZXLVpDsXunGDrk8=
6058
github.com/aws/smithy-go v1.13.5 h1:hgz0X/DX0dGqTYpGALqXJoRKRj5oQ7150i5FdTePzO8=
6159
github.com/aws/smithy-go v1.13.5/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA=
60+
github.com/bahlo/generic-list-go v0.2.0 h1:5sz/EEAK+ls5wF+NeqDpk5+iNdMDXrh3z3nPnH1Wvgk=
61+
github.com/bahlo/generic-list-go v0.2.0/go.mod h1:2KvAjgMlE5NNynlg/5iLrrCCZ2+5xWbdbCW3pNTGyYg=
6262
github.com/bmatcuk/doublestar/v4 v4.6.0 h1:HTuxyug8GyFbRkrffIpzNCSK4luc0TY3wzXvzIZhEXc=
6363
github.com/bmatcuk/doublestar/v4 v4.6.0/go.mod h1:xBQ8jztBU6kakFMg+8WGxn0c6z1fTSPVIjEY1Wr7jzc=
6464
github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 h1:DDGfHa7BWjL4YnC6+E63dPcxHo2sUxDIu8g3QgEJdRY=
@@ -67,15 +67,15 @@ github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx2
6767
github.com/bradfitz/gomemcache v0.0.0-20190913173617-a41fca850d0b/go.mod h1:H0wQNHz2YrLsuXOZozoeDmnHXkNCRmMW0gwFWDfEZDA=
6868
github.com/briandowns/spinner v1.23.0 h1:alDF2guRWqa/FOZZYWjlMIx2L6H0wyewPxo/CH4Pt2A=
6969
github.com/briandowns/spinner v1.23.0/go.mod h1:rPG4gmXeN3wQV/TsAY4w8lPdIM6RX3yqeBQJSrbXjuE=
70+
github.com/buger/jsonparser v1.1.1 h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMUs=
71+
github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0=
7072
github.com/cavaliergopher/grab/v3 v3.0.1 h1:4z7TkBfmPjmLAAmkkAZNX/6QJ1nNFdv3SdIHXju0Fr4=
7173
github.com/cavaliergopher/grab/v3 v3.0.1/go.mod h1:1U/KNnD+Ft6JJiYoYBAimKH2XrYptb8Kl3DFGmsjpq4=
7274
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
7375
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
7476
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
7577
github.com/cloudflare/ahocorasick v0.0.0-20210425175752-730270c3e184 h1:8yL+85JpbwrIc6m+7N1iYrjn/22z68jwrTIBOJHNe4k=
7678
github.com/cloudflare/ahocorasick v0.0.0-20210425175752-730270c3e184/go.mod h1:tGWUZLZp9ajsxUOnHmFFLnqnlKXsCn6GReG4jAD59H0=
77-
github.com/cockroachdb/apd/v2 v2.0.2 h1:weh8u7Cneje73dDh+2tEVLUvyBc89iwepWCD8b8034E=
78-
github.com/cockroachdb/apd/v2 v2.0.2/go.mod h1:DDxRlzC2lo3/vSlmSoS7JkqbbrARPuFOGr0B9pvN3Gw=
7979
github.com/coreos/go-systemd/v22 v22.3.3-0.20220203105225-a9a7ef127534/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
8080
github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w=
8181
github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
@@ -91,7 +91,6 @@ github.com/denisbrodbeck/machineid v1.0.1/go.mod h1:dJUwb7PTidGDeYyUBmXZ2GphQBbj
9191
github.com/dsnet/compress v0.0.1 h1:PlZu0n3Tuv04TzpfPbrnI0HW/YwodEXDS+oPKahKF0Q=
9292
github.com/dsnet/compress v0.0.1/go.mod h1:Aw8dCMJ7RioblQeTqt88akK31OvO8Dhf5JflhBbQEHo=
9393
github.com/dsnet/golib v0.0.0-20171103203638-1ea166775780/go.mod h1:Lj+Z9rebOhdfkVLjJ8T6VcRQv3SXugXy999NBtR9aFY=
94-
github.com/emicklei/proto v1.6.15 h1:XbpwxmuOPrdES97FrSfpyy67SSCV/wBIKXqgJzh6hNw=
9594
github.com/f1bonacc1/process-compose v0.43.1 h1:XAN7ohegNfMFxYnj59g2jN7y6HfnJWhDCGtD/nN/TbE=
9695
github.com/f1bonacc1/process-compose v0.43.1/go.mod h1:jvg1NakjJd8V1LjGKu21HLLOVxbwkOHEgkaDjSWRXc0=
9796
github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs=
@@ -108,7 +107,6 @@ github.com/go-redis/redis v6.15.5+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8w
108107
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
109108
github.com/golang-jwt/jwt/v5 v5.0.0 h1:1n1XNM9hk7O9mnQoNBGolZvzebBQ7p93ULHRc28XJUE=
110109
github.com/golang-jwt/jwt/v5 v5.0.0/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk=
111-
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58=
112110
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
113111
github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM=
114112
github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
@@ -133,6 +131,7 @@ github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9Y
133131
github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
134132
github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8=
135133
github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U=
134+
github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
136135
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs=
137136
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8=
138137
github.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
@@ -143,9 +142,12 @@ github.com/klauspost/pgzip v1.2.5 h1:qnWYvvKqedOF2ulHpMG72XQol4ILEJ8k2wwRl/Km8oE
143142
github.com/klauspost/pgzip v1.2.5/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs=
144143
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
145144
github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
145+
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
146+
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
146147
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
147-
github.com/lib/pq v1.10.7 h1:p7ZhMD+KsSRozJr34udlUrhboJwWAgCg34+/ZZNvZZw=
148-
github.com/lib/pq v1.10.7/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
148+
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
149+
github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
150+
github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
149151
github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
150152
github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
151153
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
@@ -160,8 +162,6 @@ github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d h1:5PJl274Y63IEHC+7izoQ
160162
github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE=
161163
github.com/mholt/archiver/v4 v4.0.0-alpha.7 h1:xzByj8G8tj0Oq7ZYYU4+ixL/CVb5ruWCm0EZQ1PjOkE=
162164
github.com/mholt/archiver/v4 v4.0.0-alpha.7/go.mod h1:Fs8qUkO74HHaidabihzYephJH8qmGD/nCP6tE5xC9BM=
163-
github.com/mpvl/unique v0.0.0-20150818121801-cbe035fff7de h1:D5x39vF5KCwKQaw+OC9ZPiLVHXz3UFw2+psEX+gYcto=
164-
github.com/mpvl/unique v0.0.0-20150818121801-cbe035fff7de/go.mod h1:kJun4WP5gFuHZgRjZUWWuH1DTxCtxbHDOIJsudS8jzY=
165165
github.com/nwaples/rardecode/v2 v2.0.0-beta.2 h1:e3mzJFJs4k83GXBEiTaQ5HgSc/kOK8q0rDaRO0MPaOk=
166166
github.com/nwaples/rardecode/v2 v2.0.0-beta.2/go.mod h1:yntwv/HfMc/Hbvtq9I19D1n58te3h6KsqCf3GxyfBGY=
167167
github.com/onsi/ginkgo v1.6.0 h1:Ix8l273rp3QzYgXSR+c8d1fTG7UPgYkOSELPhiY/YGw=
@@ -175,12 +175,10 @@ github.com/pierrec/lz4/v4 v4.1.17/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFu
175175
github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4=
176176
github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 h1:KoWmjvw+nsYOo29YJK9vDA65RGE3NrOnUtO7a+RF9HU=
177177
github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI=
178-
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
179178
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
180179
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
181180
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
182181
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
183-
github.com/protocolbuffers/txtpbfmt v0.0.0-20201118171849-f6a6b3f636fc h1:gSVONBi2HWMFXCa9jFdYvYk7IwW/mTLxWOF7rXS4LO0=
184182
github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
185183
github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog=
186184
github.com/rs/xid v1.4.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
@@ -219,6 +217,8 @@ github.com/therootcompany/xz v1.0.1/go.mod h1:3K3UH1yCKgBneZYhuQUvJ9HPD19UEXEI0B
219217
github.com/ulikunitz/xz v0.5.6/go.mod h1:2bypXElzHzzJZwzH67Y6wb67pO62Rzfn7BSiF4ABRW8=
220218
github.com/ulikunitz/xz v0.5.11 h1:kpFauv27b6ynzBNT/Xy+1k+fK4WswhN/6PN5WhFAGw8=
221219
github.com/ulikunitz/xz v0.5.11/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
220+
github.com/wk8/go-ordered-map/v2 v2.1.8 h1:5h/BUHu93oj4gIdvHHHGsScSTMijfx5PeYkE/fJgbpc=
221+
github.com/wk8/go-ordered-map/v2 v2.1.8/go.mod h1:5nJHM5DyteebpVlHnWMV0rPz6Zp7+xBAnxjb1X5vnTw=
222222
github.com/xtgo/uuid v0.0.0-20140804021211-a0b114877d4c h1:3lbZUMbMiGUW/LMkfsEABsc5zNT9+b1CvsJx47JzJ8g=
223223
github.com/xtgo/uuid v0.0.0-20140804021211-a0b114877d4c/go.mod h1:UrdRz5enIKZ63MEE3IF9l2/ebyx59GyGgPi+tICQdmM=
224224
github.com/yuin/gopher-lua v0.0.0-20190514113301-1cd887cd7036/go.mod h1:gqRgreBUhTSL0GeU64rtZ3Uq3wtjOa/TB2YfrtkCbVQ=
@@ -231,7 +231,6 @@ golang.org/x/mod v0.9.0 h1:KENHtAZL2y3NLMYZeHY9DW8HW8V+kQyJsY/V9JlKvCs=
231231
golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
232232
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
233233
golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ=
234-
golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
235234
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
236235
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
237236
golang.org/x/sys v0.0.0-20190204203706-41f3e6584952/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=

internal/devconfig/packages.go

Lines changed: 38 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ import (
44
"encoding/json"
55
"strings"
66

7-
"github.com/iancoleman/orderedmap"
87
"github.com/pkg/errors"
8+
orderedmap "github.com/wk8/go-ordered-map/v2"
99
)
1010

1111
type jsonKind int
@@ -22,6 +22,8 @@ type Packages struct {
2222

2323
// Collection contains the set of package definitions
2424
// We don't want this key to be serialized automatically, hence the "key" in json is "-"
25+
// NOTE: this is not a pointer to make debugging failure cases easier
26+
// (get dumps of the values, not memory addresses)
2527
Collection []Package `json:"-,omitempty"`
2628
}
2729

@@ -74,31 +76,19 @@ func (pkgs *Packages) UnmarshalJSON(data []byte) error {
7476
// We use orderedmap to preserve the order of the packages. While the JSON
7577
// specification specifies that maps are unordered, we do rely on the order
7678
// for certain functionality.
77-
orderedMap := orderedmap.New()
79+
orderedMap := orderedmap.New[string, Package]()
7880
err := json.Unmarshal(data, &orderedMap)
7981
if err != nil {
8082
return errors.WithStack(err)
8183
}
8284

85+
// Convert the ordered map to a list of packages, and set the name field
86+
// from the map's key
8387
packagesList := []Package{}
84-
for _, name := range orderedMap.Keys() {
85-
// The value may be a JSON object or a string
86-
packageValue, _ := orderedMap.Get(name)
87-
88-
// Test if the value is a JSON object. Since the Collection was unmarshalled
89-
// as an orderedmap, this JSON object will also be defaulted to an orderedmap.
90-
if packageMap, ok := packageValue.(orderedmap.OrderedMap); ok {
91-
p := NewPackage(name, &packageMap)
92-
packagesList = append(packagesList, p)
93-
94-
// Test if the value is a string:
95-
} else if packageString, ok := packageValue.(string); ok {
96-
p := NewVersionOnlyPackage(name, packageString)
97-
packagesList = append(packagesList, p)
98-
99-
} else {
100-
return errors.Errorf("invalid package %packageValue of type: %T", packageValue, packageValue)
101-
}
88+
for pair := orderedMap.Oldest(); pair != nil; pair = pair.Next() {
89+
pkg := pair.Value
90+
pkg.name = pair.Key
91+
packagesList = append(packagesList, pkg)
10292
}
10393
pkgs.Collection = packagesList
10494
pkgs.jsonKind = jsonMap
@@ -120,7 +110,7 @@ func (pkgs *Packages) MarshalJSON() ([]byte, error) {
120110
return json.Marshal(packagesList)
121111
}
122112

123-
orderedMap := orderedmap.New()
113+
orderedMap := orderedmap.New[string, Package]()
124114
for _, p := range pkgs.Collection {
125115
orderedMap.Set(p.name, p)
126116
}
@@ -135,8 +125,9 @@ const (
135125
)
136126

137127
type Package struct {
138-
kind packageKind
139-
name string
128+
kind packageKind
129+
name string
130+
// deliberately not adding omitempty
140131
Version string `json:"version"`
141132

142133
// TODO: add other fields like platforms
@@ -150,8 +141,8 @@ func NewVersionOnlyPackage(name, version string) Package {
150141
}
151142
}
152143

153-
func NewPackage(name string, packageMap *orderedmap.OrderedMap) Package {
154-
version, ok := packageMap.Get("version")
144+
func NewPackage(name string, values map[string]any) Package {
145+
version, ok := values["version"]
155146
if !ok {
156147
// For legacy packages, the version may not be specified. We leave it blank
157148
// here, and code that consumes the Config is expected to handle this case
@@ -166,6 +157,28 @@ func NewPackage(name string, packageMap *orderedmap.OrderedMap) Package {
166157
}
167158
}
168159

160+
func (p *Package) UnmarshalJSON(data []byte) error {
161+
// First, attempt to unmarshal as a version-only string
162+
var version string
163+
if err := json.Unmarshal(data, &version); err == nil {
164+
p.kind = versionOnly
165+
p.Version = version
166+
return nil
167+
}
168+
169+
// Second, attempt to unmarshal as a Package struct
170+
type Alias Package // Use an alias-type to avoid infinite recursion
171+
alias := &Alias{}
172+
if err := json.Unmarshal(data, alias); err != nil {
173+
return errors.WithStack(err)
174+
}
175+
176+
// more robust way to copy all fields from alias?
177+
p.kind = regular
178+
p.Version = alias.Version
179+
return nil
180+
}
181+
169182
func (p Package) MarshalJSON() ([]byte, error) {
170183
if p.kind == versionOnly {
171184
return json.Marshal(p.Version)

internal/devconfig/packages_test.go

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import (
66
"reflect"
77
"testing"
88

9-
"github.com/iancoleman/orderedmap"
109
"go.jetpack.io/devbox/internal/cuecfg"
1110
)
1211

@@ -59,7 +58,7 @@ func TestJsonifyConfigPackages(t *testing.T) {
5958
expected: Packages{
6059
jsonKind: jsonMap,
6160
Collection: []Package{
62-
NewPackage("python", orderedMapFromPairs([][]string{{"version", "latest"}})),
61+
NewPackage("python", map[string]any{"version": "latest"}),
6362
},
6463
},
6564
},
@@ -71,7 +70,7 @@ func TestJsonifyConfigPackages(t *testing.T) {
7170
Collection: []Package{
7271
NewVersionOnlyPackage("go", "1.20"),
7372
NewVersionOnlyPackage("emacs", "latest"),
74-
NewPackage("python", orderedMapFromPairs([][]string{{"version", "latest"}})),
73+
NewPackage("python", map[string]any{"version": "latest"}),
7574
},
7675
},
7776
},
@@ -115,15 +114,6 @@ func TestJsonifyConfigPackages(t *testing.T) {
115114
}
116115
}
117116

118-
// orderedMapFromPairs takes a list of key-value pairs and returns an orderedmap
119-
func orderedMapFromPairs(fields [][]string) *orderedmap.OrderedMap {
120-
m := orderedmap.New()
121-
for _, field := range fields {
122-
m.Set(field[0], field[1])
123-
}
124-
return m
125-
}
126-
127117
func TestParseVersionedName(t *testing.T) {
128118
testCases := []struct {
129119
name string

0 commit comments

Comments
 (0)