docs: public static void main(String[] args) {
  
          System.out.println();
          System.out.println(HR);
          System.out.println("OpenCms setup started at: " + new Date(System.currentTimeMillis()));
          System.out.println(HR);
          System.out.println();
  
          String path = null;
  
          boolean setupDBOnly = false;
          if ((args.length > 0) && (args[0] != null)) {
              for (int i = 0; i < args.length; i++) {
                  if (args[i] != null) {
                      if (PARAM_CONFIG_PATH.equals(args[i]) && (args.length > (i + 1))) {
                          path = args[i + 1];
                      } else if (args[i].startsWith(PARAM_CONFIG_PATH)) {
                          path = args[i].substring(PARAM_CONFIG_PATH.length()).trim();
                      } else if (PARAM_DB_ONLY.equals(args[i])) {
                          setupDBOnly = true;
                      }
                  }
              }
          }
          if ((null != path) && (new File(path).exists())) {
              System.out.println("Using config file: " + path + "\n");
              try {
                  CmsAutoSetupProperties props = new CmsAutoSetupProperties(path);
                  System.out.println("Webapp path     : " + props.getSetupWebappPath());
                  System.out.println("Ethernet address: " + props.getEthernetAddress());
                  System.out.println("Server URL      : " + props.getServerUrl());
                  System.out.println("Server name     : " + props.getServerName());
                  System.out.println("Show progress   : " + props.isShowProgress());
                  System.out.println();
                  for (Map.Entry<String, String[]> entry : props.toParameterMap().entrySet()) {
                      System.out.println(entry.getKey() + " = " + entry.getValue()[0]);
                  }
                  System.out.println();
                  CmsAutoSetup setup = new CmsAutoSetup(props);
                  if (setupDBOnly) {
                      System.out.println("Creating DB and tables only.");
                      System.out.println(
                          "The opencms.properties file will not be written and no modules will be installed.\n\n");
                      setup.initSetupBean();
                      setup.setupDB();
                  } else {
                      setup.run();
                  }
              } catch (Exception e) {
                  System.out.println("An error occurred during the setup process with the following error message:");
                  System.out.println(e.getMessage());
                  System.out.println("Please have a look into the opencms log file for detailed information.");
                  LOG.error(e.getMessage(), e);
                  System.exit(1);
              }
          } else {
              System.out.println("");
              System.err.println(
                  "Config file not found, please specify a path where to find the setup properties to use.");
              System.out.println("Usage example (Unix): setup.sh  -path /path/to/setup.properties");
              System.out.println("Usage example (Win):  setup.bat -path C:\\setup.properties");
              System.out.println("");
              System.out.println("Have a look at the package: org/opencms/setup/setup.properties.example");
              System.out.println("in order to find a sample configuration file.");
          }
          System.exit(0);
      }