public static void main()

in transform-cli/src/main/java/com/uber/okbuck/transform/CliTransform.java [27:91]


  public static void main(String[] args) {
    if (args.length != 0) {
      StringBuilder sb =
          new StringBuilder()
              .append(
                  "No argument is expected. All parameters should be passed through java system properties.\n")
              .append(PROPERTY_IN_JARS_DIR + " : jars input directory\n")
              .append(PROPERTY_OUT_JARS_DIR + " : jars output directory\n")
              .append(PROPERTY_CONFIG_FILE + " : configuration file\n")
              .append(PROPERTY_ANDROID_BOOTCLASSPATH + " : android classpath\n")
              .append(
                  PROPERTY_TRANSFORM_DEPENDENCIES_FILE + " : transform dependencies [optional]\n")
              .append(PROPERTY_TRANSFORM_CLASS + " : full qualified name for transform class\n");
      throw new IllegalArgumentException(sb.toString());
    }

    // Loading transform dependencies in this class loader to ensure this application to work
    // properly
    final String[] postProcessDependencies =
        readDependenciesFileFromSystemPropertyVar(PROPERTY_TRANSFORM_DEPENDENCIES_FILE);
    if (postProcessDependencies.length > 0) {
      new SystemClassLoader().loadJarFiles(postProcessDependencies);
    }

    // Passing the dependencies to the transform runner.
    main(
        new TransformRunnerProvider() {
          @Override
          public TransformRunner provide() {

            // Reading config file.
            String configFilePath = System.getProperty(PROPERTY_CONFIG_FILE);

            // Reading input jar dir
            String inJarsDir = System.getProperty(PROPERTY_IN_JARS_DIR);

            // Reading output jar dir
            String outJarsDir = System.getProperty(PROPERTY_OUT_JARS_DIR);

            // Reading android classpaths
            String[] androidClasspaths =
                readDependenciesFromSystemPropertyVar(PROPERTY_ANDROID_BOOTCLASSPATH);

            // Creating TransformRunner class
            try {

              Class<Transform> transformClass;
              String transformClassName = System.getProperty(PROPERTY_TRANSFORM_CLASS);
              if (transformClassName != null) {
                transformClass = (Class<Transform>) Class.forName(transformClassName);
              } else {
                throw new IllegalArgumentException("No transform class defined.");
              }

              TransformRunner runner =
                  new TransformRunner(
                      configFilePath, inJarsDir, outJarsDir, androidClasspaths, transformClass);

              return runner;
            } catch (Exception e) {
              throw new IllegalStateException(e);
            }
          }
        });
  }