code: public static void main(final String[] args) throws Exception {
          if (args.length < 4) {
              throw new IllegalArgumentException();
          } // end of if
  
          // ---
  
          if (new File(args[1]).exists()) { // driver path
              final Properties conf = new Properties();
  
              conf.put("jdbc.url", args[0]);
              conf.put("jdbc.driverPath", args[1]);
              conf.put("db.user", args[2]);
              conf.put("db.charset", args[3]);
  
              execWith(sysAppender, conf, args, 4);
  
              return;
          } // end of if
  
          // ---
  
          final File config = Studio.preferencesFile();
  
          if (!config.exists()) {
              throw new IllegalArgumentException("Cannot find configuration");
          } // end of if
  
          // ---
  
          FileInputStream in = null;
  
          try {
              in = new FileInputStream(config);
  
              final Properties conf = new Properties();
  
              conf.load(in);
  
              execWith(sysAppender, conf, args, 0);
          } catch (Exception e) {
              throw new RuntimeException("Fails to load configuration: " +
                                         config.getAbsolutePath(), e);
                  
          } finally { 
              if (in != null) {
                  try {
                      in.close();
                  } catch (Exception e) {
                      e.printStackTrace();
                  } // end of catch
              } // end of if
          } // end of finally
      }
docs: CLI runner.
  
  @param args Execution arguments : args[0] - JDBC URL,
  args[1] - Path to JAR or JDBC driver,
  args[2] - DB user,
  args[3] - Encoding,
  args[4] - User password,
  args[5] - Output format (either "java" or "scala"),
  args[6] - SQL statement,
  args[7] to args[n] - type(s) of column from 1 to m.
  
  @see ColumnType