Aura.Releases (Aura v1.0.1)

View Source

Service module for interacting with Hex package releases

Resources

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 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

download_period()

@type download_period() :: :day | :month | :all

Reporting period for the number of downloads

get_rel_opts()

@type get_rel_opts() :: [
  repo_url: Aura.Common.repo_url(),
  repo: Aura.Common.repo_name(),
  downloads: download_period()
]

publish_opts()

@type publish_opts() :: [
  replace: rewrite?(),
  repo_url: Aura.Common.repo_url(),
  repo: Aura.Common.repo_name()
]

rel_opts()

@type rel_opts() :: [repo_url: Aura.Common.repo_url(), repo: Aura.Common.repo_name()]

retire_reason()

@type retire_reason() :: :renamed | :security | :invalid | :deprecated | :other

The reason for retiring a release

rewrite?()

@type rewrite?() :: boolean()

Whether this request is a re-write of a previously published release

Functions

delete_release(package_name, version, opts \\ [])

@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

ParameterDescription
package_nameAura.Common.package_name/0
versionAura.Common.release_version/0
opts[:repo]Aura.Common.repo_name/0
opts[:repo_url]Aura.Common.repo_url/0

API Details

MethodPathControllerAction
DELETE/packages/:package_name/releases/:versionReleaseController:delete
DELETE/repos/opts[:repo]/packages/:package_name/releases/:versionReleaseController: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

delete_release_docs(package_name, version, opts \\ [])

@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

ParameterDescription
package_nameAura.Common.package_name/0
versionAura.Common.release_version/0
opts[:repo]Aura.Common.repo_name/0
opts[:repo_url]Aura.Common.repo_url/0

API Details

MethodPathControllerAction
DELETE/packages/:package_name/releases/:version/docsDocsController:delete
DELETE/repos/opts[:repo]/packages/:package_name/releases/:version/docsDocsController: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

get_release(package_name, version, opts \\ [])

@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

ParameterDescription
package_nameAura.Common.package_name/0
versionAura.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

MethodPathControllerAction
GET/packages/:package_name/releases/:versionReleaseController:show
GET/repos/opts[:repo]/packages/:package_name/releases/:versionReleaseController: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"

get_release_docs(package_name, version, opts \\ [])

@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

ParameterDescription
package_nameAura.Common.package_name/0
versionAura.Common.release_version/0
opts[:repo]Aura.Common.repo_name/0
opts[:repo_url]Aura.Common.repo_url/0

API Details

MethodPathControllerAction
GET/packages/:package_name/releases/:version/docsDocsController:show
GET/repos/opts[:repo]/packages/:package_name/releases/:version/docsDocsController: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

publish_release(release_code_tar, opts \\ [])

@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

ParameterDescription
release_code_tarpath 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

MethodPathControllerAction
POST/publishReleaseController:publish
POST/repos/opts[:repo]/publishReleaseController:publish

publish_release_docs(package_name, release_version, doc_tar, opts \\ [])

@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

ParameterDescription
package_nameAura.Common.package_name/0
versionAura.Common.release_version/0
doc_tarpath 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

MethodPathControllerAction
POST/packages/:package_name/releases/:release_version/docsDocsController:create
POST/repos/opts[:repo]/packages/:package_name/releases/:release_version/docsDocsController: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)

retire_release(package_name, version, reason \\ :other, message, opts \\ [])

@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

ParameterDescription
package_nameAura.Common.package_name/0
versionAura.Common.release_version/0
reasonAura.Releases.retire_reason/0
messageHuman-readable blurb about the retirement
opts[:repo]Aura.Common.repo_name/0
opts[:repo_url]Aura.Common.repo_url/0

API Details

MethodPathControllerAction
POST/packages/:package_name/releases/:version/retireRetirementController:create
POST/repos/opts[:repo]/packages/:package_name/releases/:version/retireRetirementController: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

undo_retire_release(package_name, version, opts \\ [])

@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

ParameterDescription
package_nameAura.Common.package_name/0
versionAura.Common.release_version/0
opts[:repo]Aura.Common.repo_name/0
opts[:repo_url]Aura.Common.repo_url/0

API Details

MethodPathControllerAction
DELETE/packages/:package_name/releases/:version/retireRetirementController:delete
DELETE/repos/opts[:repo]/packages/:package_name/releases/:version/retireRetirementController: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