Rather than emitting:
Exception: KeyError: 'packages'
and a stack trace, let's fail immediately if lockfileVersion implies
that the npm-shrinkwrap.json file isn't compatible.
The documentation[1] doesn't make it clear which lockfileVersions are
guaranteed to contain "packages". I have lockfileVersion 1 files
without. Running npm 7.5.2 generates npm-shrinkwrap.json files with
lockfileVersion 2 and "packages", so I've set the minimum to be 2.
[1] https://docs.npmjs.com/cli/v7/configuring-npm/package-lock-json
Signed-off-by: Mike Crowe <mac@mcrowe.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
has_shrinkwrap_file = False
if has_shrinkwrap_file:
+ if int(orig_shrinkwrap.get("lockfileVersion", 0)) < 2:
+ bb.fatal("%s: lockfileVersion version 2 or later is required" % orig_shrinkwrap_file)
+
cached_shrinkwrap = copy.deepcopy(orig_shrinkwrap)
for package in orig_shrinkwrap["packages"]:
if package != "":