View Source BeamMeta.Release.Elixir (BeamMeta v0.2.1)
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 a map with only final releases since Elixir v1.0.0.
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 filtered map from releases_data/0 that matches the elixir_version_requirement and options.
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<"~> 1.13"> or "~> 1.13".
Link to this section Functions
Specs
final_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
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"
},
...
}
Specs
release_data( version_requirement(), keyword() ) :: release_data()
Returns a filtered map from releases_data/0 that matches the elixir_version_requirement and options.
options are options supported by Version.match?/3. Currently the only supported key
is :allow_pre which accepts true or false values. Defaults to true.
See releases_data/0 for more information.
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
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>, ...]