public Path downloadIfNecessary()

in app-maven-plugin/src/main/java/com/google/cloud/tools/maven/cloudsdk/CloudSdkDownloader.java [51:90]


  public Path downloadIfNecessary(
      String version, Log log, List<SdkComponent> components, boolean offline) {
    ManagedCloudSdk managedCloudSdk = managedCloudSdkFactory.apply(version);
    if (offline) { // in offline mode, don't download anything
      return managedCloudSdk.getSdkHome();
    }
    try {
      ProgressListener progressListener = new NoOpProgressListener();
      ConsoleListener consoleListener = new CloudSdkDownloaderConsoleListener(log);

      if (!managedCloudSdk.isInstalled()) {
        managedCloudSdk.newInstaller().install(progressListener, consoleListener);
      }

      // install requested components
      if (components != null) {
        for (SdkComponent component : components) {
          if (!managedCloudSdk.hasComponent(component)) {
            managedCloudSdk
                .newComponentInstaller()
                .installComponent(component, progressListener, consoleListener);
          }
        }
      }

      if (!managedCloudSdk.isUpToDate()) {
        managedCloudSdk.newUpdater().update(progressListener, consoleListener);
      }

      return managedCloudSdk.getSdkHome();
    } catch (IOException
        | SdkInstallerException
        | ManagedSdkVersionMismatchException
        | InterruptedException
        | CommandExecutionException
        | CommandExitException
        | ManagedSdkVerificationException ex) {
      throw new RuntimeException(ex);
    }
  }