Aura.Releases (Aura v0.9.3)
View SourceService module for interacting with Hex package releases
๐ Resources
- ๐ Hex
- ๐ Hex API Specifications
- ๐พ hexpm/hex_core
- ๐พ hexpm/hexpm
- ๐ฌ Contact the maintainer (he's happy to help!)
Summary
Types
The reason for retiring a release
Functions
Permanently deletes a release
Permanently deletes associated documentation for a release
Grabs a released package, given its name and version number
Returns the contents of the release's docs tar.gz
Publishes a release .tar packaged by a build tool to a Hex-compliant repository
Publishes associated release docs tar.gz to a Hex-compliant repository
Marks a release as retired, signaling to others that it should not be used
Removes retirement from a release, signaling to others that it can still be used
Types
Functions
@spec delete_release( package_name :: Aura.Common.package_name(), version :: Aura.Common.release_version(), opts :: list() ) :: :ok | {:error, any()}
Permanently deletes a release
๐ท๏ธ Params
- version ::
Aura.Common.release_version/0
- package_name ::
Aura.Common.package_name/0
- opts.repo ::
Aura.Common.repo_name/0
โคต๏ธ Returns
โ On Success
:ok
โ On Failure
{:error, (some error)}
๐ป Examples
iex> alias Aura.Releases
iex> repo_url = "http://localhost:4000/api"
iex> # find a release made by the test framework
iex> [package] = Enum.take(Packages.stream_packages(sort: :updated_at), 1)
iex> version = package.releases |> hd() |> Map.get(:version)
iex> # delete the release
iex> Releases.delete_release(package.name, version, repo_url: repo_url)
:ok
๐ฉโ๐ป API Details
Method | Path | Controller | Action |
---|---|---|---|
DELETE | /packages/:package_name/releases/:version | ReleaseController | :delete |
DELETE | /repos/opts[:repo] /packages/:package_name/releases/:version | ReleaseController | :delete |
@spec delete_release_docs( package_name :: Aura.Common.package_name(), version :: Aura.Common.release_version(), opts :: list() ) :: :ok | {:error, any()}
Permanently deletes associated documentation for a release
๐ท๏ธ Params
- version ::
Aura.Common.release_version/0
- package_name ::
Aura.Common.package_name/0
- opts.repo ::
Aura.Common.repo_name/0
โคต๏ธ Returns
โ On Success
:ok
โ On Failure
{:error, (some error)}
๐ป Examples
iex> alias Aura.Releases
iex> repo_url = "http://localhost:4000/api"
iex> # find a release made by the test framework
iex> [package] = Enum.take(Packages.stream_packages(sort: :updated_at), 1)
iex> version = package.releases |> hd() |> Map.get(:version)
iex> # delete associated doc tar.gz
iex> Releases.delete_release_docs(
...> package.name,
...> version,
...> repo_url: repo_url)
:ok
๐ฉโ๐ป API Details
Method | Path | Controller | Action |
---|---|---|---|
DELETE | /packages/:package_name/releases/:version/docs | DocsController | :delete |
DELETE | /repos/opts[:repo] /packages/:package_name/releases/:version/docs | DocsController | :delete |
@spec get_release( package_name :: Aura.Common.package_name(), version :: Aura.Common.release_version(), opts :: list() ) :: {:ok, Aura.Model.HexRelease.t()} | {:error, any()}
Grabs a released package, given its name and version number
๐ท๏ธ Params
- version ::
Aura.Common.release_version/0
- package_name ::
Aura.Common.package_name/0
- opts.repo ::
Aura.Common.repo_name/0
- opts.downloads ::
:day
,:month
,:all
โคต๏ธ Returns
โ On Success
{:ok, %HexRelease{...}}
โ On Failure
{:error, (some error)}
๐ป Examples
iex> alias Aura.Releases
iex> repo_url = "http://localhost:4000/api"
iex> {:ok, postgrex} = Releases.get_release("postgrex", "0.1.0", repo_url: repo_url)
iex> postgrex.version
"0.1.0"
๐ฉโ๐ป API Details
Method | Path | Controller | Action |
---|---|---|---|
GET | /packages/:package_name/releases/:version | ReleaseController | :show |
GET | /repos/opts[:repo] /packages/:package_name/releases/:version | ReleaseController | :show |
@spec get_release_docs( package_name :: Aura.Common.package_name(), version :: Aura.Common.release_version(), opts :: list() ) :: {:ok, list()} | {:error, any()}
Returns the contents of the release's docs tar.gz
๐ท๏ธ Params
- version ::
Aura.Common.release_version/0
- package_name ::
Aura.Common.package_name/0
- opts.repo ::
Aura.Common.repo_name/0
โคต๏ธ Returns
โ On Success
{:ok, [... tar contents ...]}
โ On Failure
{:error, (some error)}
๐ป Examples
iex> alias Aura.Releases
iex> repo_url = "http://localhost:4000/api"
iex> {:ok, contents} = Releases.get_release_docs("jason", "1.4.4", repo_url: repo_url)
iex> Enum.empty?(contents)
false
๐ฉโ๐ป API Details
Method | Path | Controller | Action |
---|---|---|---|
GET | /packages/:package_name/releases/:version/docs | DocsController | :show |
GET | /repos/opts[:repo] /packages/:package_name/releases/:version/docs | DocsController | :show |
@spec publish_release( release_code_tar :: String.t(), opts :: list() ) :: {:ok, Aura.Model.HexRelease.t()} | {:error, any()}
Publishes a release .tar packaged by a build tool to a Hex-compliant repository
๐ท๏ธ Params
- opts.repo ::
Aura.Common.repo_name/0
- release_code_tar :: path to a code .tar file made by a build tool
- opts.replace :: whether to this request is a re-write
โคต๏ธ Returns
โ On Success
{:ok, %HexRelease{...}}
โ On Failure
{:error, (some error)}
๐ฉโ๐ป API Details
Method | Path | Controller | Action |
---|---|---|---|
POST | /publish | ReleaseController | :publish |
POST | /repos/opts[:repo] /publish | ReleaseController | :publish |
@spec publish_release_docs( package_name :: Aura.Common.package_name(), release_version :: Aura.Common.release_version(), doc_tar :: String.t(), opts :: list() ) :: {:ok, URI.t()} | {:error, any()}
Publishes associated release docs tar.gz to a Hex-compliant repository
๐ท๏ธ Params
- version ::
Aura.Common.release_version/0
- package_name ::
Aura.Common.package_name/0
- opts.repo ::
Aura.Common.repo_name/0
- doc_tar :: path to a tar.gz of the compiled docs
โคต๏ธ Returns
โ On Success
{:ok, doc_location_url}
โ On Failure
{:error, (some error)}
๐ป Examples
iex> alias Aura.Releases
iex> repo_url = "http://localhost:4000/api"
iex> # find a release made by the test framework
iex> [package] = Enum.take(Packages.stream_packages(sort: :updated_at), 1)
iex> version = package.releases |> hd() |> Map.get(:version)
iex> doc_tar = "test/support/data/docs/nimble_parsec-1.4.2.tar.gz"
iex> # publish doc tar.gz
iex> {:ok, _loc} = Releases.publish_release_docs(
...> package.name,
...> version,
...> doc_tar,
...> repo_url: repo_url)
๐ฉโ๐ป API Details
Method | Path | Controller | Action |
---|---|---|---|
POST | /packages/:package_name/releases/:release_version/docs | DocsController | :create |
POST | /repos/opts[:repo] /packages/:package_name/releases/:release_version/docs | DocsController | :create |
@spec retire_release( package_name :: Aura.Common.package_name(), version :: Aura.Common.release_version(), reason :: retire_reason(), message :: String.t(), opts :: list() ) :: :ok | {:error, any()}
Marks a release as retired, signaling to others that it should not be used
๐ท๏ธ Params
- message :: Human-readable blurb about the retirement
- reason ::
retire_reason/0
- version ::
Aura.Common.release_version/0
- package_name ::
Aura.Common.package_name/0
- opts.repo ::
Aura.Common.repo_name/0
โคต๏ธ Returns
โ On Success
:ok
โ On Failure
{:error, (some error)}
๐ป Examples
iex> alias Aura.Releases
iex> repo_url = "http://localhost:4000/api"
iex> # find a release made by the test framework
iex> [package] = Enum.take(Packages.stream_packages(sort: :updated_at), 1)
iex> version = package.releases |> hd() |> Map.get(:version)
iex> reason = :deprecated
iex> msg = "Release no longer supported"
iex> # retire the release
iex> Releases.retire_release(
...> package.name,
...> version,
...> reason,
...> msg,
...> repo_url: repo_url)
:ok
๐ฉโ๐ป API Details
Method | Path | Controller | Action |
---|---|---|---|
POST | /packages/:package_name/releases/:version/retire | RetirementController | :create |
POST | /repos/opts[:repo] /packages/:package_name/releases/:version/retire | RetirementController | :create |
@spec undo_retire_release( package_name :: Aura.Common.package_name(), version :: Aura.Common.release_version(), opts :: list() ) :: :ok | {:error, any()}
Removes retirement from a release, signaling to others that it can still be used
๐ท๏ธ Params
- version ::
Aura.Common.release_version/0
- package_name ::
Aura.Common.package_name/0
- opts.repo ::
Aura.Common.repo_name/0
โคต๏ธ Returns
โ On Success
:ok
โ On Failure
{:error, (some error)}
๐ป Examples
iex> alias Aura.Releases
iex> repo_url = "http://localhost:4000/api"
iex> # find a release made by the test framework
iex> [package] = Enum.take(Packages.stream_packages(sort: :updated_at), 1)
iex> version = package.releases |> hd() |> Map.get(:version)
iex> # undo the retirement
iex> Releases.undo_retire_release(
...> package.name,
...> version,
...> repo_url: repo_url)
:ok
๐ฉโ๐ป API Details
Method | Path | Controller | Action |
---|---|---|---|
DELETE | /packages/:package_name/releases/:version/retire | RetirementController | :delete |
DELETE | /repos/opts[:repo] /packages/:package_name/releases/:version/retire | RetirementController | :delete |