static Optional makeInvoker()

in invoker/core/src/main/java/com/google/cloud/functions/invoker/runner/Invoker.java [139:177]


  static Optional<Invoker> makeInvoker(Map<String, String> environment, String... args) {
    Options options = new Options();
    JCommander jCommander = JCommander.newBuilder().addObject(options).build();
    try {
      jCommander.parse(args);
    } catch (ParameterException e) {
      usage(jCommander);
      throw e;
    }

    if (options.help) {
      usage(jCommander);
      return Optional.empty();
    }

    int port;
    try {
      port = Integer.parseInt(options.port);
    } catch (NumberFormatException e) {
      System.err.println("--port value should be an integer: " + options.port);
      usage(jCommander);
      throw e;
    }
    String functionTarget = options.target;
    Path standardFunctionJarPath = Paths.get("function/function.jar");
    Optional<String> functionClasspath =
        Arrays.asList(
                options.classPath,
                environment.get("FUNCTION_CLASSPATH"),
                Files.exists(standardFunctionJarPath) ? standardFunctionJarPath.toString() : null)
            .stream()
            .filter(Objects::nonNull)
            .findFirst();
    ClassLoader functionClassLoader = makeClassLoader(functionClasspath);
    Invoker invoker =
        new Invoker(
            port, functionTarget, environment.get("FUNCTION_SIGNATURE_TYPE"), functionClassLoader);
    return Optional.of(invoker);
  }