49 lines
1.2 KiB
Elixir
49 lines
1.2 KiB
Elixir
# SPDX-License-Identifier: Apache-2.0
|
|
# SPDX-FileCopyrightText: 2021 The Elixir Team
|
|
|
|
# Generate docs_config.js for version chooser in ExDoc
|
|
[app] = System.argv()
|
|
|
|
{text_tags, 0} = System.cmd("git", ["tag"])
|
|
skipped = Version.parse!("1.0.3")
|
|
|
|
versions =
|
|
for(
|
|
"v" <> rest <- String.split(text_tags),
|
|
not String.ends_with?(rest, "-latest"),
|
|
version = Version.parse!(rest),
|
|
Version.compare(version, skipped) == :gt,
|
|
do: version
|
|
)
|
|
|> Enum.sort({:desc, 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)
|
|
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 = #{JSON.encode_to_iodata!(version_nodes)};
|
|
var searchNodes = #{JSON.encode_to_iodata!(search_nodes)};
|
|
""")
|