---
name: "Pandoc::Release"
section: "3pm"
platform: "linux"
package: "libpandoc-wrapper-perl"
version: "0.9.2-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Pandoc::Release"
---

# Pandoc::Release(3pm)

get pandoc releases from GitHub

## NAME

Pandoc::Release - get pandoc releases from GitHub

## SYNOPSIS

From command line:

```
  # print latest release name
  perl -MPandoc::Release -E 'say latest->{name}'
  # download latest release unless already in ~/.pandoc/bin
  perl -MPandoc::Release -E 'latest->download'
  # download specific release and create symlink ~/.pandoc/bin/pandoc
  perl -MPandoc::Release -E 'get("2.7.3")->download->symlink'
```

In Perl code:

```
  use Pandoc::Release;
  my $release = get('2.1.3');   # get a specific release
  my $latest = latest;          # get a latest release
  # get multiple releases
  my @releases = list( since => '2.0', verbose => 1 );
  foreach my $release (@releases) {
      # print version number
      say $release->{tag_name};
      # download Debian package and executable
      $release->download( dir => './deb', bin => './bin' );
  }
  # download executable and use as temporary Pandoc object:
  my $pandoc = get('2.1.3)->download( bin => './bin' );
```

## DESCRIPTION

This utility module fetches information about pandoc releases via GitHub API. On Debian-bases systems, this module can update and switch locally installed pandoc versions if you add directory `"~/.pandoc/bin"` to your `$PATH`.

See pandoc-version for a command line script that makes use of this module.

## FUNCTIONS

All functions are exported by default.

### get( $version, %options )

Get a specific release by its version or die if the given version does not exist. Returns data as returned by GitHub releases API: \<https://developer.github.com/v3/repos/releases/#get-a-release-by-tag-name\>.

### list( %options )

Get a list of all pandoc releases, optionally `"since"` some version or within a version `"range"` such as `"!=1.16, <=1.17"` or `"==2.1.2"`. See "Version Ranges" in CPAN::Meta::Spec for possible values. Option `"verbose"` will print URLs before each request. Option `"limit"` limits the maximum number of releases to be returned.

### latest( %options )

Get the latest release, optionally `"since"` some version or within a version `"range"`. Equivalent to method `"list"` with option `"limit => 1"`.

## METHODS

### download( %options )

Download the Debian release file for some architecture (e.g. `"amd64"`) Pandoc executables is then extracted to directory `"bin"` named by pandoc version number (e.g. `"pandoc-2.1.2"`). Skips downloading if an executable of this name is already found there.  Returns a Pandoc instance if `"bin"` is not false or Pandoc::Version otherwise. Additional options:

- dir

  Where to download release files to. A temporary directory is used by default.

- arch

  System architecture, detected with `"dpkg --print-architecture"` by default.

- bin

  Where to extract pandoc binary to. By default set to `"~/.pandoc/bin"` on Unix (see Pandoc function `"pandoc_data_dir"`).  Extraction of executables can be disabled by setting `"bin"` to a false value.

- symlink

  Create a symlink to the executable. This is just a shortcut for calling function `"symlink"` of Pandoc:

  ```
    $release->download( verbose => $v )->symlink( $l, verbose => $v )
    $release->download( verbose => $v, symlink => $l )   # equivalent
  ```

## COMMON OPTIONS

- verbose

  Print what's going on (disabled by default).

- token

  GitHub token \<https://github.com/settings/tokens\> to avoid rate limiting.

## SEE ALSO

Pandoc::Version

\<https://developer.github.com/v3/repos/releases/\>
