Packages

A simple changelog manager

Current section

Files

Jump to
ex_tack lib log writer.ex
Raw

lib/log/writer.ex

defmodule Log.Writer do
alias Helpers.{Release, VersionFormatter}
@moduledoc """
This module is used to write release files. This module's functions typically return single atom: `:ok` or a two element tuple `{:error, :bad_version}`
"""
@doc """
Appends one or more lines to a release.
"""
def append_to(version, line_content) do
{:ok, content, filename} = Log.Reader.read(version)
release =
Release.append_lines(
[line_content],
Release.from_markdown(content)
)
|> Release.to_markdown()
File.write!(file_path(filename), release)
end
@doc """
Creates a new release with an incremented release number
"""
def create(version) when is_binary(version) do
create_release_file(VersionFormatter.format_version(version))
end
defp build_filename(version) do
"#{version}_release.md"
end
defp create_release_file(version) do
initial_content = "## Release #{version}"
("#{release_path()}/" <> build_filename(version))
|> File.write!(initial_content)
end
defp file_path(filename) do
Path.join(release_path(), filename)
end
defp release_path do
"lib/releases/#{Mix.env()}"
end
end