Current section
Files
Jump to
Current section
Files
lib/magma/artefacts/project/readme.ex
defmodule Magma.Artefacts.Readme do
use Magma.Artefact, matter: Magma.Matter.Project
alias Magma.Matter.Project
alias Magma.{Concept, Vault}
@name "README"
@impl true
def default_name(_), do: @name
@impl true
def version_title(%Artefact.Version{artefact: %__MODULE__{}}), do: nil
@impl true
def create_version(%Artefact.Version{artefact: %__MODULE__{}} = version, opts) do
{readme_path, opts} = Keyword.pop(opts, :readme_path, real_readme_path())
version.path
|> Path.dirname()
|> Magma.MixHelper.create_directory()
cond do
Magma.MixHelper.create_file(readme_path, version.content, opts) ->
with :ok <- File.ln_s(readme_path, version.path) do
Vault.index(version)
{:ok, version.path}
end
Keyword.get(opts, :ok_skipped, false) ->
{:ok, version.path}
true ->
{:skipped, version}
end
end
defp real_readme_path do
Path.join(File.cwd!(), "README.md")
end
@impl true
def trim_prompt_result_header?, do: false
@impl true
def relative_base_path(%__MODULE__{name: name, concept: %Concept{subject: %Project{}}}) do
Path.join(Project.relative_generated_artefacts_path(), name)
end
@impl true
def relative_version_path(
%__MODULE__{name: name, concept: %Concept{subject: %Project{}}} = artefact
) do
artefact
|> relative_base_path()
|> Path.join("#{name}.md")
end
end