Include latest and searchNodes metadata into hosted docs

This commit is contained in:
José Valim
2025-01-17 14:26:34 +01:00
parent 618d03baa8
commit 1637dc7184
+28 -5
View File
@@ -4,7 +4,7 @@
{text_tags, 0} = System.cmd("git", ["tag"])
skipped = Version.parse!("1.0.3")
list_contents =
versions =
for(
"v" <> rest <- String.split(text_tags),
not String.ends_with?(rest, "-latest"),
@@ -13,10 +13,33 @@ list_contents =
do: version
)
|> Enum.sort({:desc, Version})
|> Enum.map_intersperse(", ", fn version ->
latest =
versions
|> Stream.filter(&(&1.pre == []))
|> Enum.fetch!(0)
|> Version.to_string()
version_nodes =
for version <- versions do
version_string = Version.to_string(version)
~s[{"version":"v#{version_string}", "url":"https://hexdocs.pm/#{app}/#{version_string}"}]
end)
map = %{version: "v#{version_string}", url: "https://hexdocs.pm/#{app}/#{version_string}"}
if version_string == latest do
Map.put(map, :latest, true)
else
map
end
end
search_nodes =
for app <- ~w(eex elixir ex_unit iex logger mix)s do
%{name: app, version: latest}
end
File.mkdir_p!("doc/#{app}")
File.write!("doc/#{app}/docs_config.js", ["var versionNodes = [", list_contents, "];\n"])
File.write!("doc/#{app}/docs_config.js", """
var versionNodes = #{JSON.encode_to_iodata!(version_nodes)};
var searchNodes = #{JSON.encode_to_iodata!(search_nodes)};
""")