@Nullable public static ExternalPackage getExternalPackage(Environment env) throws RepositoryFunctionException { SkyKey packageKey = PackageValue.key(ExternalPackage.PACKAGE_IDENTIFIER); PackageValue packageValue; try { packageValue = (PackageValue) env.getValueOrThrow(packageKey, NoSuchPackageException.class); } catch (NoSuchPackageException e) { throw new RepositoryFunctionException( new BuildFileNotFoundException( ExternalPackage.PACKAGE_IDENTIFIER, "Could not load //external package"), Transience.PERSISTENT); } if (packageValue == null) { return null; } ExternalPackage externalPackage = (ExternalPackage) packageValue.getPackage(); if (externalPackage.containsErrors()) { throw new RepositoryFunctionException( new BuildFileContainsErrorsException( ExternalPackage.PACKAGE_IDENTIFIER, "Could not load //external package"), Transience.PERSISTENT); } return externalPackage; }