lib/open_api.ex

defmodule OpenAPI do
  @moduledoc """
  Code generator for OpenAPI REST API descriptions

  This module provides a single function, `run/2`, that accepts the name of an OpenAPI description
  file and configuration. It does the work of reading the description, processing schemas and
  operations, and writing out generated files.

  For a list of valid options to pass as configuration, see `OpenAPI.Config`.
  """
  alias OpenAPI.Generator
  alias OpenAPI.Reader
  alias OpenAPI.Spec
  alias OpenAPI.State

  @doc "Read the OpenAPI description at `filename` and generate code according to `config`."
  @spec run(String.t(), keyword) :: term
  def run(filename, config) do
    State.new(filename, config)
    |> Reader.read("")
    |> Spec.decode()
    |> Generator.run()
  end
end