defmodule GenDSL do @moduledoc """ Documentation for `GenDSL`. """ import GenDSL.Parser @doc """ Hello world. ## Examples iex> GenDSL.hello() :world """ def hello do :world end def generate_from_filepath(filename, get_deps \\ true, return_dir \\ nil) do # TODO: rework the parameters into a keywork list and handle it like they do in Elixir mix tasks, with switches filename |> read_blueprint() |> case do {:ok, blueprint} -> blueprint |> generate_from_blueprint(get_deps, return_dir) {:error, reason} -> IO.puts("Error generating from filepath") IO.puts(reason) {:error, reason} end end def generate_from_blueprint(blueprint, get_deps \\ true, return_dir \\ nil) do # TODO: implement an add_postrequisites function. At least add a task to log: "Please check INSTRUCTIONS.md to complete installation." blueprint |> sanitize_blueprint() |> add_prerequisites() |> add_postrequisites(return_dir) |> process_blueprint() |> IO.inspect(label: "Processed blueprint") |> execute_blueprint(get_deps) end end