Aura.Releases (Aura v0.9.3)

View Source

Service module for interacting with Hex package releases

๐Ÿ“– Resources

Summary

Types

The reason for retiring a 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

retire_reason()

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

The reason for retiring a release

Functions

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

@spec delete_release(
  package_name :: Aura.Common.package_name(),
  version :: Aura.Common.release_version(),
  opts :: list()
) :: :ok | {:error, any()}

Permanently deletes a release

๐Ÿท๏ธ Params

โคต๏ธ 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

MethodPathControllerAction
DELETE/packages/:package_name/releases/:versionReleaseController:delete
DELETE/repos/opts[:repo]/packages/:package_name/releases/:versionReleaseController:delete

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

@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

โคต๏ธ 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

MethodPathControllerAction
DELETE/packages/:package_name/releases/:version/docsDocsController:delete
DELETE/repos/opts[:repo]/packages/:package_name/releases/:version/docsDocsController:delete

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

@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

โคต๏ธ 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

MethodPathControllerAction
GET/packages/:package_name/releases/:versionReleaseController:show
GET/repos/opts[:repo]/packages/:package_name/releases/:versionReleaseController:show

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

@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

โคต๏ธ 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

MethodPathControllerAction
GET/packages/:package_name/releases/:version/docsDocsController:show
GET/repos/opts[:repo]/packages/:package_name/releases/:version/docsDocsController:show

publish_release(release_code_tar, opts \\ [])

@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

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 :: list()
) :: {:ok, URI.t()} | {:error, any()}

Publishes associated release docs tar.gz to a Hex-compliant repository

๐Ÿท๏ธ Params

โคต๏ธ 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

MethodPathControllerAction
POST/packages/:package_name/releases/:release_version/docsDocsController:create
POST/repos/opts[:repo]/packages/:package_name/releases/:release_version/docsDocsController:create

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 :: list()
) :: :ok | {:error, any()}

Marks a release as retired, signaling to others that it should not be used

๐Ÿท๏ธ Params

โคต๏ธ 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

MethodPathControllerAction
POST/packages/:package_name/releases/:version/retireRetirementController:create
POST/repos/opts[:repo]/packages/:package_name/releases/:version/retireRetirementController:create

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

@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

โคต๏ธ 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

MethodPathControllerAction
DELETE/packages/:package_name/releases/:version/retireRetirementController:delete
DELETE/repos/opts[:repo]/packages/:package_name/releases/:version/retireRetirementController:delete