docs: private static Options constructCliOptions() {
      Options options = new Options();
  
      Option packageUri = Option.builder("u")
          .desc("Uri indicating from where to download the file")
          .longOpt(CliArgs.TOPOLOGY_PACKAGE_URI.text)
          .hasArgs()
          .argName(CliArgs.TOPOLOGY_PACKAGE_URI.text)
          .build();
  
      Option destination = Option.builder("f")
          .desc("Destination to store the downloaded file")
          .longOpt(CliArgs.EXTRACT_DESTINATION.text)
          .hasArgs()
          .argName(CliArgs.EXTRACT_DESTINATION.text)
          .build();
  
      Option heronHome = Option.builder("d")
          .desc("Directory where heron is installed")
          .longOpt(CliArgs.HERON_HOME.text)
          .hasArgs()
          .argName("heron home dir")
          .build();
  
      Option configFile = Option.builder("p")
          .desc("Path of the config files")
          .longOpt(CliArgs.CONFIG_PATH.text)
          .hasArgs()
          .argName("config path")
          .build();
  
      // candidates:
      // local: download to client local machine
      // cluster: download into the container in the cloud
      Option mode = Option.builder("m")
          .desc("download mode, cluster or local")
          .longOpt(CliArgs.MODE.text)
          .hasArg()
          .argName("download mode")
          .build();
  
      options.addOption(packageUri);
      options.addOption(destination);
      options.addOption(heronHome);
      options.addOption(configFile);
      options.addOption(mode);
  
      return options;
    }