defmodule Mix.Tasks.Saaskit.Gen.Context do @shortdoc "Generates a context with functions around an Ecto schema" use Mix.Task import SaasKit.MixUtils @name "saaskit.gen.context" @doc false def run(args) do refute_umbrella(@name) Application.ensure_all_started(:hackney) args |> account_scoped_question() |> build_resource_from_args(__MODULE__) |> load_templates(@name) |> follow_instructions() end def raise_with_help(msg) do Mix.raise """ #{msg} mix saaskit.gen.html, saaskit.gen.json, saaskit.gen.live, and saaskit.gen.context expect a context module name, followed by singular and plural names of the generated resource, ending with any number of attributes. For example: mix saaskit.gen.html Accounts User users name:string mix saaskit.gen.json Accounts User users name:string mix saaskit.gen.live Accounts User users name:string mix saaskit.gen.context Accounts User users name:string The context serves as the API boundary for the given resource. Multiple resources may belong to a context and a resource may be split over distinct contexts (such as Accounts.User and Payments.User). """ end end