private ConfigSource readConfig(
            final Path configFilePath,
            final Map<String, Object> templateParams,
            final String templateIncludePath) throws IOException {
        final String configString = configFilePath.toString();
        if (EXT_YAML_LIQUID.matcher(configFilePath.toString()).matches()) {
            return this.embed.newConfigLoader().fromYamlString(
                    runLiquid(new String(Files.readAllBytes(configFilePath), StandardCharsets.UTF_8),
                            templateParams,
                            (templateIncludePath == null
                                    ? configFilePath.toAbsolutePath().getParent().toString()
                                    : templateIncludePath)));
        } else if (EXT_YAML.matcher(configFilePath.toString()).matches()) {
            return this.embed.newConfigLoader().fromYamlString(
                    new String(Files.readAllBytes(configFilePath), StandardCharsets.UTF_8));
        } else {
            throw new ConfigException(
                    "Unsupported file extension. Supported file extensions are .yml and .yml.liquid: "
                    + configFilePath.toString());
        }
    }
Runs the run subcommand.

It receives a ConfigSource and a String as parameters to be called from Ruby (embulk/runner.rb).
embulk-core/src/main/java/org/embulk/EmbulkRunner.java