Aura.Releases (Aura v1.0.1)
View SourceService module for interacting with Hex package releases
Resources
- Hex
- Contact the maintainer (he's happy to help!)
Summary
Types
Reporting period for the number of downloads
The reason for retiring a release
Whether this request is a re-write of a previously published 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
@type download_period() :: :day | :month | :all
Reporting period for the number of downloads
@type get_rel_opts() :: [ repo_url: Aura.Common.repo_url(), repo: Aura.Common.repo_name(), downloads: download_period() ]
@type publish_opts() :: [ replace: rewrite?(), repo_url: Aura.Common.repo_url(), repo: Aura.Common.repo_name() ]
@type rel_opts() :: [repo_url: Aura.Common.repo_url(), repo: Aura.Common.repo_name()]
@type retire_reason() :: :renamed | :security | :invalid | :deprecated | :other
The reason for retiring a release
@type rewrite?() :: boolean()
Whether this request is a re-write of a previously published release
Functions
@spec delete_release( package_name :: Aura.Common.package_name(), version :: Aura.Common.release_version(), opts :: rel_opts() ) :: :ok | {:error, any()}
Permanently deletes a release
Parameters
Parameter | Description |
---|---|
package_name | Aura.Common.package_name/0 |
version | Aura.Common.release_version/0 |
opts[:repo] | Aura.Common.repo_name/0 |
opts[:repo_url] | Aura.Common.repo_url/0 |
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 |
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
@spec delete_release_docs( package_name :: Aura.Common.package_name(), version :: Aura.Common.release_version(), opts :: rel_opts() ) :: :ok | {:error, any()}
Permanently deletes associated documentation for a release
Parameters
Parameter | Description |
---|---|
package_name | Aura.Common.package_name/0 |
version | Aura.Common.release_version/0 |
opts[:repo] | Aura.Common.repo_name/0 |
opts[:repo_url] | Aura.Common.repo_url/0 |
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 |
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
@spec get_release( package_name :: Aura.Common.package_name(), version :: Aura.Common.release_version(), opts :: get_rel_opts() ) :: {:ok, Aura.Model.HexRelease.t()} | {:error, any()}
Grabs a released package, given its name and version number
Parameters
Parameter | Description |
---|---|
package_name | Aura.Common.package_name/0 |
version | Aura.Common.release_version/0 |
opts[:repo] | Aura.Common.repo_name/0 |
opts[:repo_url] | Aura.Common.repo_url/0 |
opts[:downloads] | Aura.Releases.download_period/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 |
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"
@spec get_release_docs( package_name :: Aura.Common.package_name(), version :: Aura.Common.release_version(), opts :: rel_opts() ) :: {:ok, list()} | {:error, any()}
Returns the contents of the release's docs tar.gz
Parameters
Parameter | Description |
---|---|
package_name | Aura.Common.package_name/0 |
version | Aura.Common.release_version/0 |
opts[:repo] | Aura.Common.repo_name/0 |
opts[:repo_url] | Aura.Common.repo_url/0 |
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 |
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
@spec publish_release( release_code_tar :: String.t(), opts :: publish_opts() ) :: {:ok, Aura.Model.HexRelease.t()} | {:error, any()}
Publishes a release .tar packaged by a build tool to a Hex-compliant repository
Parameters
Parameter | Description |
---|---|
release_code_tar | path to a code .tar file made by a build tool |
opts[:repo] | Aura.Common.repo_name/0 |
opts[:repo_url] | Aura.Common.repo_url/0 |
opts[:replace] | Aura.Releases.rewrite?/0 |
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 :: rel_opts() ) :: {:ok, URI.t()} | {:error, any()}
Publishes associated release docs tar.gz to a Hex-compliant repository
Parameters
Parameter | Description |
---|---|
package_name | Aura.Common.package_name/0 |
version | Aura.Common.release_version/0 |
doc_tar | path to a tar.gz of the compiled docs |
opts[:repo] | Aura.Common.repo_name/0 |
opts[:repo_url] | Aura.Common.repo_url/0 |
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 |
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)
@spec retire_release( package_name :: Aura.Common.package_name(), version :: Aura.Common.release_version(), reason :: retire_reason(), message :: String.t(), opts :: rel_opts() ) :: :ok | {:error, any()}
Marks a release as retired, signaling to others that it should not be used
Parameters
Parameter | Description |
---|---|
package_name | Aura.Common.package_name/0 |
version | Aura.Common.release_version/0 |
reason | Aura.Releases.retire_reason/0 |
message | Human-readable blurb about the retirement |
opts[:repo] | Aura.Common.repo_name/0 |
opts[:repo_url] | Aura.Common.repo_url/0 |
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 |
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
@spec undo_retire_release( package_name :: Aura.Common.package_name(), version :: Aura.Common.release_version(), opts :: rel_opts() ) :: :ok | {:error, any()}
Removes retirement from a release, signaling to others that it can still be used
Parameters
Parameter | Description |
---|---|
package_name | Aura.Common.package_name/0 |
version | Aura.Common.release_version/0 |
opts[:repo] | Aura.Common.repo_name/0 |
opts[:repo_url] | Aura.Common.repo_url/0 |
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 |
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