1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
|
# 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)};
""")
|