Skip to content

Commit 755668a

Browse files
authored
markdown: conditionally copy assets to target dir (#2195)
1 parent 017a90a commit 755668a

File tree

2 files changed

+35
-1
lines changed

2 files changed

+35
-1
lines changed

lib/ex_doc/formatter/markdown.ex

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,15 @@ defmodule ExDoc.Formatter.MARKDOWN do
66
def run(config, project_nodes, extras) when is_map(config) do
77
File.mkdir_p!(config.output)
88

9+
static_files =
10+
if Enum.all?(config.assets, fn {_k, target_dir} ->
11+
config.output |> Path.join(target_dir) |> File.exists?()
12+
end) do
13+
[]
14+
else
15+
ExDoc.Formatter.copy_assets(config.assets, config.output)
16+
end
17+
918
{modules, tasks} =
1019
project_nodes
1120
|> Enum.filter(&(&1.source_format == "text/markdown"))
@@ -16,7 +25,8 @@ defmodule ExDoc.Formatter.MARKDOWN do
1625
generate_api_reference(config, modules, tasks) ++
1726
generate_extras(config, extras) ++
1827
generate_list(config, modules) ++
19-
generate_list(config, tasks)
28+
generate_list(config, tasks) ++
29+
static_files
2030

2131
entrypoint = config.output |> Path.join("llms.txt") |> Path.relative_to_cwd()
2232
%{entrypoint: entrypoint, build: List.flatten(all_files)}

test/ex_doc/formatter/markdown_test.exs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -288,4 +288,28 @@ defmodule ExDoc.Formatter.MarkdownTest do
288288
"*Consult [api-reference.md](api-reference.md) for complete listing*"
289289
end
290290
end
291+
292+
describe "assets" do
293+
test "copies assets from source", %{tmp_dir: tmp_dir} = context do
294+
dir_name = Path.join(tmp_dir, "hello")
295+
File.mkdir!(dir_name)
296+
dir_name |> Path.join("world") |> File.touch!()
297+
298+
config = config(context, assets: %{dir_name => "assets"})
299+
300+
generate(config)
301+
302+
assert File.regular?(tmp_dir <> "/assets/world")
303+
end
304+
305+
test "does not override previous work from other formatters", %{tmp_dir: tmp_dir} = context do
306+
dir_name = Path.join(tmp_dir, "assets")
307+
File.mkdir!(dir_name)
308+
info = File.stat!(dir_name)
309+
config = config(context, assets: %{"test/tmp/markdown_assets/hello" => "assets"})
310+
generate(config)
311+
312+
assert File.stat!(dir_name) == info
313+
end
314+
end
291315
end

0 commit comments

Comments
 (0)