fetchLatestCLIVersion static method

Future<Version?> fetchLatestCLIVersion({
  1. required CommandLogger logger,
  2. required String localStoragePath,
  3. PubApiClient? pubClientOverride,
})

Check current Serverpod CLI version and prompt user to update if needed Returns true if the CLI should be updated, false otherwise

Implementation

static Future<Version?> fetchLatestCLIVersion({
  required final CommandLogger logger,
  required final String localStoragePath,
  final PubApiClient? pubClientOverride,
}) async {
  return PackageVersion.fetchLatestPackageVersion(
    storePackageVersionData: (final PackageVersionData versionArtefact) =>
        ResourceManager.storeLatestCliVersion(
      cliVersionData: versionArtefact,
      logger: logger,
    ),
    loadPackageVersionData: () => ResourceManager.tryFetchLatestCliVersion(
      localStoragePath: localStoragePath,
      logger: logger,
    ),
    fetchLatestPackageVersion: () async {
      final pubClient = pubClientOverride ?? PubApiClient();
      Version? version;
      try {
        version = await pubClient
            .tryFetchLatestStableVersion('serverpod_cloud_cli')
            .timeout(
              const Duration(seconds: 2),
            );
      } on VersionFetchException catch (e) {
        logger.error(e.message);
      } on VersionParseException catch (e) {
        logger.error(e.message);
      } finally {
        pubClient.close();
      }

      return version;
    },
  );
}