docs: @TaskAction
    public void downloadCloudSdkAction()
        throws ManagedSdkVerificationException, ManagedSdkVersionMismatchException,
            InterruptedException, CommandExecutionException, SdkInstallerException,
            CommandExitException, IOException {
      // managedCloudSdk is set by AppEngineCorePluginConfiguration if the cloud SDK home is empty
      if (managedCloudSdk == null) {
        throw new GradleException("Cloud SDK home path must not be configured to run this task.");
      }
  
      ProgressListener progressListener = new NoOpProgressListener();
      ConsoleListener consoleListener = new DownloadCloudSdkTaskConsoleListener(getProject());
  
      // Install sdk if not installed
      if (!managedCloudSdk.isInstalled()) {
        SdkInstaller installer = managedCloudSdk.newInstaller();
        installer.install(progressListener, consoleListener);
      }
  
      // optionally Install app engine component
      if (requiresAppEngineJava) {
        if (!managedCloudSdk.hasComponent(SdkComponent.APP_ENGINE_JAVA)) {
          SdkComponentInstaller componentInstaller = managedCloudSdk.newComponentInstaller();
          componentInstaller.installComponent(
              SdkComponent.APP_ENGINE_JAVA, progressListener, consoleListener);
        }
      }
  
      // If version is set to LATEST, update Cloud SDK
      if (!managedCloudSdk.isUpToDate()) {
        SdkUpdater updater = managedCloudSdk.newUpdater();
        updater.update(progressListener, consoleListener);
      }
    }