2022-10-18 02:52:24 +13:00
|
|
|
defmodule Mix.Tasks.Ash.GenerateLivebook do
|
|
|
|
@moduledoc """
|
|
|
|
Generates a Livebook for each Ash API.
|
|
|
|
|
|
|
|
## Command line options
|
|
|
|
|
2023-10-22 15:32:05 +13:00
|
|
|
* `--filename` - Specify the name of the generated Livebook file. Default: `livebook.livemd`
|
2022-10-18 02:52:24 +13:00
|
|
|
|
|
|
|
"""
|
|
|
|
use Mix.Task
|
|
|
|
|
|
|
|
@shortdoc "Generates a Livebook for each Ash API"
|
2023-10-22 15:32:05 +13:00
|
|
|
def run(argv) do
|
2022-10-18 02:52:24 +13:00
|
|
|
Mix.Task.run("compile")
|
|
|
|
|
2023-10-22 15:32:05 +13:00
|
|
|
{opts, _} =
|
|
|
|
OptionParser.parse!(argv,
|
|
|
|
strict: [filename: :string],
|
|
|
|
aliases: [f: :filename]
|
|
|
|
)
|
|
|
|
|
|
|
|
filename = Keyword.get(opts, :filename, "livebook.livemd")
|
|
|
|
|
|
|
|
File.write!(filename, Ash.Api.Info.Livebook.overview(apis()))
|
2022-10-18 02:52:24 +13:00
|
|
|
|
|
|
|
Mix.shell().info("Generated Livebook")
|
|
|
|
end
|
|
|
|
|
|
|
|
def apis do
|
|
|
|
Mix.Project.config()[:app]
|
|
|
|
|> Application.get_env(:ash_apis, [])
|
|
|
|
end
|
|
|
|
end
|