Current section
Files
Jump to
Current section
Files
lib/mix/tasks/readmegen.ex
defmodule Mix.Tasks.ReadmeGen do
use ArgumentParser.Builder.Mix
@shortdoc """
Generate a README.md for your elixir project
"""
@moduledoc @shortdoc <> """
Usage:
mix readme_gen MyModule [MyModule.Other ...] [options]
options:
* `-f --filename NAME` -> Name of file to write. Default: `README.md`
* `-a --append` -> Append to file instead of overwriting.
* `-h --help` -> Print detailed help message.
"""
@arg [:modules, metavar: "MODULE", action: {:store, :*, &ReadmeMdDoc.to_mod/1}]
@flag [:filename, alias: :f, default: "README.md"]
@flag [:append, action: :store_true, help:
"Append to existing file instead of overwriting"]
@doc :false
def main(cm_args) do
cf_args = Application.get_all_env(:readme_md_doc)
args = Dict.merge(cf_args, cm_args)
if args[:module] == [] do
IO.puts("one or more module names required")
exit(1)
end
mode = if args[:append], do: :append, else: :write
fob = File.open!(args[:filename], [:utf8, mode])
try do: generate(args[:modules], args, fob), after: File.close(fob)
end
defp generate(mods, args, fob) do
doc = ReadmeMdDoc.generate(mods, args)
IO.write(fob, doc)
end
end