View Source BeamMeta.Release.Elixir (BeamMeta v0.1.0)
Functions for retrieving information related to Elixir releases.
This module does not deal with releases prior to version 1.0.0
.
Link to this section Summary
Types
A map that information related to a release in GitHub.
A release version.
A release version requirement.
Functions
Returns the latest stable Elixir version.
Returns a map with all the prereleases since Elixir v1.0.0.
Returns a map which contains all the information that we find relevant from releases data.
Returns a map which contains all the information that we find relevant from releases data
that matches the elixir_version_requirement
.
Returns a map with only final releases since Elixir v1.0.0.
Returns a list with all the Elixir versions since v1.0.0.
Returns a list Elixir versions since v1.0.0, according to kind
.
Link to this section Types
Specs
release_data() :: BeamMeta.nonempty_keyword( version_key :: atom(), %{ assets: [ %{ content_type: String.t(), created_at: DateTime.t(), id: non_neg_integer(), json_url: String.t(), name: String.t(), size: non_neg_integer(), state: String.t(), url: String.t() }, ... ], created_at: DateTime.t(), id: non_neg_integer(), json_url: String.t(), prerelease?: boolean(), published_at: DateTime.t(), tarball_url: String.t(), url: String.t(), version: Version.t(), zipball_url: String.t() } )
A map that information related to a release in GitHub.
This information is originally provided by BeamLangsMetaData.elixir_releases/0
and is transformed.
Specs
A release version.
It could it be a Version.t/0
or a string representation of this one,
for example: #Version<1.0.0>
or "1.13.0"
.
Specs
version_requirement() :: Version.Requirement.t() | String.t()
A release version requirement.
It could it be a Version.Requirement.t/0
or a string representation of this one,
for example: #Version.Requirement<"~> 24.0">
or "~> 1.13"
.
Link to this section Functions
Specs
latest_version() :: Version.t()
Returns the latest stable Elixir version.
Specs
prereleases() :: release_data()
Returns a map with all the prereleases since Elixir v1.0.0.
Examples
> BeamMeta.Release.Elixir.prereleases()
%{
"1.10.0-rc.0" => %{
assets: [
%{
content_type: "application/zip",
created_at: ~U[2020-01-07 15:08:43Z],
id: 17188069,
json_url: "https://api.github.com/repos/elixir-lang/elixir/releases/assets/17188069",
name: "Docs.zip",
size: 2119178,
state: "uploaded",
url: "https://github.com/elixir-lang/elixir/releases/download/v1.10.0-rc.0/Docs.zip"
},
%{
content_type: "application/zip",
created_at: ~U[2020-01-07 15:08:47Z],
id: 17188070,
json_url: "https://api.github.com/repos/elixir-lang/elixir/releases/assets/17188070",
name: "Precompiled.zip",
size: 5666120,
state: "uploaded",
url: "https://github.com/elixir-lang/elixir/releases/download/v1.10.0-rc.0/Precompiled.zip"
}
],
created_at: ~U[2020-01-07 14:10:04Z],
id: 22650172,
json_url: "https://api.github.com/repos/elixir-lang/elixir/releases/22650172",
prerelease?: true,
published_at: ~U[2020-01-07 15:09:40Z],
tarball_url: "https://api.github.com/repos/elixir-lang/elixir/tarball/v1.10.0-rc.0",
url: "https://github.com/elixir-lang/elixir/releases/tag/v1.10.0-rc.0",
version: #Version<1.10.0-rc.0>,
zipball_url: "https://api.github.com/repos/elixir-lang/elixir/zipball/v1.10.0-rc.0"
},
...
}
Specs
release_data() :: release_data()
Returns a map which contains all the information that we find relevant from releases data.
Includes data from final releases and preseleases starting from Elixir version 1.0.0.
Examples
> BeamMeta.Release.Elixir.release_data()
%{
"1.12.1" => %{
assets: [
%{
content_type: "application/zip",
created_at: ~U[2021-05-28 15:51:16Z],
id: 37714034,
json_url: "https://api.github.com/repos/elixir-lang/elixir/releases/assets/37714034",
name: "Docs.zip",
size: 5502033,
state: "uploaded",
url: "https://github.com/elixir-lang/elixir/releases/download/v1.12.1/Docs.zip"
},
%{
content_type: "application/zip",
created_at: ~U[2021-05-28 15:51:27Z],
id: 37714052,
json_url: "https://api.github.com/repos/elixir-lang/elixir/releases/assets/37714052",
name: "Precompiled.zip",
size: 6049663,
state: "uploaded",
url: "https://github.com/elixir-lang/elixir/releases/download/v1.12.1/Precompiled.zip"
}
],
created_at: ~U[2021-05-28 15:34:14Z],
id: 43775368,
json_url: "https://api.github.com/repos/elixir-lang/elixir/releases/43775368",
prerelease?: false,
published_at: ~U[2021-05-28 15:51:54Z],
tarball_url: "https://api.github.com/repos/elixir-lang/elixir/tarball/v1.12.1",
url: "https://github.com/elixir-lang/elixir/releases/tag/v1.12.1",
version: #Version<1.12.1>,
zipball_url: "https://api.github.com/repos/elixir-lang/elixir/zipball/v1.12.1"
},
...
}
Returns a map which contains all the information that we find relevant from releases data
that matches the elixir_version_requirement
.
Includes data from final releases and preseleases starting from Elixir version 1.0.0.
options
are options supported by Version.match?/3
. Currently the only key supported
is :allow_pre
which accepts true
or false
values. Defaults to true
.
Examples
> BeamMeta.Release.Elixir.release_data("~> 1.12", allow_pre: false)
%{
"1.12.1" => %{
assets: [
%{
content_type: "application/zip",
created_at: ~U[2021-05-28 15:51:16Z],
id: 37714034,
json_url: "https://api.github.com/repos/elixir-lang/elixir/releases/assets/37714034",
name: "Docs.zip",
size: 5502033,
state: "uploaded",
url: "https://github.com/elixir-lang/elixir/releases/download/v1.12.1/Docs.zip"
},
%{
content_type: "application/zip",
created_at: ~U[2021-05-28 15:51:27Z],
id: 37714052,
json_url: "https://api.github.com/repos/elixir-lang/elixir/releases/assets/37714052",
name: "Precompiled.zip",
size: 6049663,
state: "uploaded",
url: "https://github.com/elixir-lang/elixir/releases/download/v1.12.1/Precompiled.zip"
}
],
created_at: ~U[2021-05-28 15:34:14Z],
id: 43775368,
json_url: "https://api.github.com/repos/elixir-lang/elixir/releases/43775368",
prerelease?: false,
published_at: ~U[2021-05-28 15:51:54Z],
tarball_url: "https://api.github.com/repos/elixir-lang/elixir/tarball/v1.12.1",
url: "https://github.com/elixir-lang/elixir/releases/tag/v1.12.1",
version: #Version<1.12.1>,
zipball_url: "https://api.github.com/repos/elixir-lang/elixir/zipball/v1.12.1"
},
...
}
Specs
releases() :: release_data()
Returns a map with only final releases since Elixir v1.0.0.
Examples
> BeamMeta.Release.Elixir.releases()
%{
"1.12.1" => %{
assets: [
%{
content_type: "application/zip",
created_at: ~U[2021-05-28 15:51:16Z],
id: 37714034,
json_url: "https://api.github.com/repos/elixir-lang/elixir/releases/assets/37714034",
name: "Docs.zip",
size: 5502033,
state: "uploaded",
url: "https://github.com/elixir-lang/elixir/releases/download/v1.12.1/Docs.zip"
},
%{
content_type: "application/zip",
created_at: ~U[2021-05-28 15:51:27Z],
id: 37714052,
json_url: "https://api.github.com/repos/elixir-lang/elixir/releases/assets/37714052",
name: "Precompiled.zip",
size: 6049663,
state: "uploaded",
url: "https://github.com/elixir-lang/elixir/releases/download/v1.12.1/Precompiled.zip"
}
],
created_at: ~U[2021-05-28 15:34:14Z],
id: 43775368,
json_url: "https://api.github.com/repos/elixir-lang/elixir/releases/43775368",
prerelease?: false,
published_at: ~U[2021-05-28 15:51:54Z],
tarball_url: "https://api.github.com/repos/elixir-lang/elixir/tarball/v1.12.1",
url: "https://github.com/elixir-lang/elixir/releases/tag/v1.12.1",
version: #Version<1.12.1>,
zipball_url: "https://api.github.com/repos/elixir-lang/elixir/zipball/v1.12.1"
},
...
}
Specs
versions() :: [Version.t()]
Returns a list with all the Elixir versions since v1.0.0.
The list contains the versions in the Version.t/0
format, sorted ascendenly.
Examples:
> BeamMeta.Release.Elixir.versions()
[#Version<1.0.0>, #Version<1.0.1>, #Version<1.0.2>, #Version<1.0.3>, #Version<1.0.4>,
#Version<1.0.5>, #Version<1.1.0>, #Version<1.1.1>, #Version<1.2.0>, #Version<1.2.1>,
#Version<1.2.2>, #Version<1.2.3>, #Version<1.2.4>, #Version<1.2.5>, #Version<1.2.6>, ...]
Specs
versions(BeamMeta.release_kind()) :: [Version.t()]
Returns a list Elixir versions since v1.0.0, according to kind
.
The list contains the versions in the Version.t/0
format, sorted ascendenly.
kind
can be:
:release
:prerelease
Examples
> BeamMeta.Release.Elixir.versions(:release)
[#Version<1.0.0>, #Version<1.0.1>, #Version<1.0.2>, #Version<1.0.3>, #Version<1.0.4>,
#Version<1.0.5>, #Version<1.1.0>, #Version<1.1.1>, #Version<1.2.0>, #Version<1.2.1>,
#Version<1.2.2>, #Version<1.2.3>, #Version<1.2.4>, #Version<1.2.5>, #Version<1.2.6>, ...]
> BeamMeta.Release.Elixir.versions(:prerelease)
[#Version<1.3.0-rc.0>, #Version<1.3.0-rc.1>, #Version<1.4.0-rc.0>, #Version<1.4.0-rc.1>,
#Version<1.5.0-rc.0>, #Version<1.5.0-rc.1>, #Version<1.5.0-rc.2>, #Version<1.6.0-rc.0>,
#Version<1.6.0-rc.1>, #Version<1.7.0-rc.0>, #Version<1.7.0-rc.1>, #Version<1.8.0-rc.0>, ...]