File: docs_config.exs

package info (click to toggle)
elixir-lang 1.19.5.dfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 15,524 kB
  • sloc: erlang: 12,234; sh: 321; makefile: 288
file content (48 lines) | stat: -rw-r--r-- 1,189 bytes parent folder | download
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)};
""")