Full Code of Morganamilo/paru for AI

master 9ac3578807a8 cached
351 files
1.6 MB
500.2k tokens
437 symbols
1 requests
Download .txt
Showing preview only (1,686K chars total). Download the full file or copy to clipboard to get everything.
Repository: Morganamilo/paru
Branch: master
Commit: 9ac3578807a8
Files: 351
Total size: 1.6 MB

Directory structure:
gitextract_za9wu6l6/

├── .dockerignore
├── .github/
│   ├── FUNDING.yml
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug-report.md
│   │   ├── feature_request.md
│   │   └── issue.md
│   └── workflows/
│       ├── build.yml
│       ├── mo.yml
│       └── paru.yml
├── .gitignore
├── CHANGELOG.md
├── CONTRIBUTING.md
├── Cargo.toml
├── Dockerfile
├── LICENSE
├── README.md
├── completions/
│   ├── bash
│   ├── fish
│   └── zsh
├── man/
│   ├── paru.8
│   └── paru.conf.5
├── paru.conf
├── po/
│   ├── ca.po
│   ├── cs.po
│   ├── de.po
│   ├── es.po
│   ├── fi.po
│   ├── fr.po
│   ├── hi.po
│   ├── hr.po
│   ├── hu.po
│   ├── it.po
│   ├── ja.po
│   ├── ko.po
│   ├── nl.po
│   ├── paru.pot
│   ├── pt.po
│   ├── pt_BR.po
│   ├── ro.po
│   ├── ru.po
│   ├── sk.po
│   ├── sv.po
│   ├── tr.po
│   ├── uk.po
│   ├── zh_CN.po
│   └── zh_TW.po
├── scripts/
│   ├── dist
│   ├── mkmo
│   ├── mkpot
│   └── updpo
├── src/
│   ├── args.rs
│   ├── auth.rs
│   ├── base.rs
│   ├── chroot.rs
│   ├── clean.rs
│   ├── command_line.rs
│   ├── completion.rs
│   ├── config.rs
│   ├── devel.rs
│   ├── download.rs
│   ├── exec.rs
│   ├── fmt.rs
│   ├── help.rs
│   ├── info.rs
│   ├── install.rs
│   ├── keys.rs
│   ├── lib.rs
│   ├── main.rs
│   ├── mock.rs
│   ├── news.rs
│   ├── order.rs
│   ├── pkgbuild.rs
│   ├── query.rs
│   ├── remove.rs
│   ├── repo.rs
│   ├── resolver.rs
│   ├── search.rs
│   ├── stats.rs
│   ├── sync.rs
│   ├── upgrade.rs
│   └── util.rs
├── testdata/
│   ├── bin/
│   │   ├── gpg
│   │   ├── makepkg.bak
│   │   ├── pacman
│   │   └── pacman.bak
│   ├── clone/
│   │   ├── auracle-git/
│   │   │   ├── .SRCINFO
│   │   │   └── PKGBUILD
│   │   ├── devel/
│   │   │   ├── .SRCINFO
│   │   │   └── PKGBUILD
│   │   ├── pacaur/
│   │   │   ├── .SRCINFO
│   │   │   └── PKGBUILD
│   │   ├── pkg/
│   │   │   ├── .SRCINFO
│   │   │   └── PKGBUILD
│   │   └── polybar/
│   │       ├── .SRCINFO
│   │       └── PKGBUILD
│   ├── db/
│   │   └── local/
│   │       ├── ALPM_DB_VERSION
│   │       ├── acl-2.3.1-1/
│   │       │   └── desc
│   │       ├── alsa-lib-1.2.4-3/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── alsa-topology-conf-1.2.4-2/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── alsa-ucm-conf-1.2.4-2/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── archlinux-keyring-20210110-1/
│   │       │   ├── desc
│   │       │   └── install
│   │       ├── argon2-20190702-3/
│   │       │   └── desc
│   │       ├── attr-2.5.1-1/
│   │       │   └── desc
│   │       ├── audit-3.0.1-1/
│   │       │   └── desc
│   │       ├── base-2-2/
│   │       │   └── desc
│   │       ├── bash-5.1.004-1/
│   │       │   └── desc
│   │       ├── bzip2-1.0.8-4/
│   │       │   └── desc
│   │       ├── ca-certificates-20181109-4/
│   │       │   └── desc
│   │       ├── ca-certificates-mozilla-3.64-1/
│   │       │   └── desc
│   │       ├── ca-certificates-utils-20181109-4/
│   │       │   └── desc
│   │       ├── cairo-1.17.4-5/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── coreutils-8.32-1/
│   │       │   └── desc
│   │       ├── cryptsetup-2.3.5-4/
│   │       │   └── desc
│   │       ├── curl-7.76.1-1/
│   │       │   └── desc
│   │       ├── dbus-1.12.20-1/
│   │       │   └── desc
│   │       ├── devel-1-1/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── device-mapper-2.03.11-5/
│   │       │   └── desc
│   │       ├── e2fsprogs-1.46.2-1/
│   │       │   └── desc
│   │       ├── expat-2.3.0-1/
│   │       │   └── desc
│   │       ├── file-5.40-2/
│   │       │   └── desc
│   │       ├── filesystem-2021.01.19-1/
│   │       │   └── desc
│   │       ├── findutils-4.8.0-1/
│   │       │   └── desc
│   │       ├── flac-1.3.3-2/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── fontconfig-2:2.13.93-4/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   ├── install
│   │       │   └── mtree
│   │       ├── freetype2-2.10.4-1/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   ├── install
│   │       │   └── mtree
│   │       ├── gawk-5.1.0-1/
│   │       │   └── desc
│   │       ├── gcc-libs-10.2.0-6/
│   │       │   └── desc
│   │       ├── gettext-0.21-1/
│   │       │   └── desc
│   │       ├── glib2-2.68.1-1/
│   │       │   └── desc
│   │       ├── glibc-2.33-4/
│   │       │   ├── desc
│   │       │   └── install
│   │       ├── gmp-6.2.1-1/
│   │       │   └── desc
│   │       ├── gnupg-2.2.27-1/
│   │       │   ├── desc
│   │       │   └── install
│   │       ├── gnutls-3.7.1-1/
│   │       │   └── desc
│   │       ├── gpgme-1.15.1-1/
│   │       │   └── desc
│   │       ├── graphite-1:1.3.14-1/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── grep-3.6-1/
│   │       │   └── desc
│   │       ├── gzip-1.10-3/
│   │       │   └── desc
│   │       ├── harfbuzz-2.8.0-3/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── hwids-20201207-1/
│   │       │   └── desc
│   │       ├── iana-etc-20210202-1/
│   │       │   └── desc
│   │       ├── icu-69.1-1/
│   │       │   └── desc
│   │       ├── iproute2-5.12.0-1/
│   │       │   └── desc
│   │       ├── iptables-1:1.8.7-1/
│   │       │   └── desc
│   │       ├── iputils-20210202-1/
│   │       │   └── desc
│   │       ├── json-c-0.15-1/
│   │       │   └── desc
│   │       ├── jsoncpp-1.9.4-1/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── kbd-2.4.0-2/
│   │       │   └── desc
│   │       ├── keyutils-1.6.3-1/
│   │       │   └── desc
│   │       ├── kmod-28-1/
│   │       │   └── desc
│   │       ├── krb5-1.19.1-1/
│   │       │   └── desc
│   │       ├── less-1:581.2-1/
│   │       │   └── desc
│   │       ├── libarchive-3.5.1-1/
│   │       │   └── desc
│   │       ├── libassuan-2.5.5-1/
│   │       │   └── desc
│   │       ├── libasyncns-0.8+3+g68cd5af-3/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── libcap-2.49-1/
│   │       │   └── desc
│   │       ├── libcap-ng-0.8.2-1/
│   │       │   └── desc
│   │       ├── libcroco-0.6.13-2/
│   │       │   └── desc
│   │       ├── libelf-0.183-3/
│   │       │   └── desc
│   │       ├── libffi-3.3-4/
│   │       │   └── desc
│   │       ├── libgcrypt-1.9.3-1/
│   │       │   └── desc
│   │       ├── libgpg-error-1.42-1/
│   │       │   └── desc
│   │       ├── libice-1.0.10-3/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── libidn2-2.3.0-1/
│   │       │   └── desc
│   │       ├── libksba-1.4.0-2/
│   │       │   └── desc
│   │       ├── libldap-2.4.58-1/
│   │       │   └── desc
│   │       ├── libmnl-1.0.4-3/
│   │       │   └── desc
│   │       ├── libmpdclient-2.19-3/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── libnetfilter_conntrack-1.0.8-1/
│   │       │   └── desc
│   │       ├── libnfnetlink-1.0.1-4/
│   │       │   └── desc
│   │       ├── libnftnl-1.1.9-1/
│   │       │   └── desc
│   │       ├── libnghttp2-1.43.0-1/
│   │       │   └── desc
│   │       ├── libnl-3.5.0-2/
│   │       │   └── desc
│   │       ├── libogg-1.3.4-2/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── libp11-kit-0.23.22-1/
│   │       │   └── desc
│   │       ├── libpcap-1.10.0-1/
│   │       │   └── desc
│   │       ├── libpng-1.6.37-3/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── libpsl-0.21.1-1/
│   │       │   └── desc
│   │       ├── libpulse-14.2-3/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── libsasl-2.1.27-3/
│   │       │   └── desc
│   │       ├── libseccomp-2.5.1-2/
│   │       │   └── desc
│   │       ├── libsecret-0.20.4-1/
│   │       │   └── desc
│   │       ├── libsm-1.2.3-2/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── libsndfile-1.0.31-1/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── libssh2-1.9.0-3/
│   │       │   └── desc
│   │       ├── libtasn1-4.16.0-1/
│   │       │   └── desc
│   │       ├── libtirpc-1.3.1-1/
│   │       │   └── desc
│   │       ├── libunistring-0.9.10-3/
│   │       │   └── desc
│   │       ├── libvorbis-1.3.7-2/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── libx11-1.7.0-4/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── libxau-1.0.9-3/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── libxcb-1.14-1/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── libxcrypt-4.4.19-1/
│   │       │   └── desc
│   │       ├── libxdmcp-1.1.3-3/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── libxext-1.3.4-3/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── libxml2-2.9.10-9/
│   │       │   └── desc
│   │       ├── libxrender-0.9.10-4/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── licenses-20200427-1/
│   │       │   └── desc
│   │       ├── linux-api-headers-5.10.13-1/
│   │       │   └── desc
│   │       ├── lz4-1:1.9.3-1/
│   │       │   └── desc
│   │       ├── lzo-2.10-3/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── mpfr-4.1.0-1/
│   │       │   └── desc
│   │       ├── ncurses-6.2-1/
│   │       │   └── desc
│   │       ├── nettle-3.7.2-1/
│   │       │   └── desc
│   │       ├── npth-1.6-3/
│   │       │   └── desc
│   │       ├── openssl-1.1.1.k-1/
│   │       │   └── desc
│   │       ├── opus-1.3.1-2/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── p11-kit-0.23.22-1/
│   │       │   ├── desc
│   │       │   └── install
│   │       ├── pacman-5.2.2-3/
│   │       │   └── desc
│   │       ├── pacman-mirrorlist-20210405-1/
│   │       │   └── desc
│   │       ├── pam-1.5.1-1/
│   │       │   └── desc
│   │       ├── pambase-20200721.1-2/
│   │       │   └── desc
│   │       ├── pciutils-3.7.0-1/
│   │       │   └── desc
│   │       ├── pcre-8.44-1/
│   │       │   └── desc
│   │       ├── pcre2-10.36-1/
│   │       │   └── desc
│   │       ├── pinentry-1.1.1-1/
│   │       │   └── desc
│   │       ├── pixman-0.40.0-1/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── polybar-1.0.0-1/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── popt-1.18-1/
│   │       │   └── desc
│   │       ├── procps-ng-3.3.17-1/
│   │       │   └── desc
│   │       ├── psmisc-23.4-1/
│   │       │   └── desc
│   │       ├── readline-8.1.0-2/
│   │       │   └── desc
│   │       ├── sed-4.8-1/
│   │       │   └── desc
│   │       ├── shadow-4.8.1-4/
│   │       │   ├── desc
│   │       │   └── install
│   │       ├── speex-1.2.0-3/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── speexdsp-1.2.0-2/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── sqlite-3.35.5-1/
│   │       │   └── desc
│   │       ├── systemd-248-5/
│   │       │   ├── desc
│   │       │   └── install
│   │       ├── systemd-libs-248-5/
│   │       │   └── desc
│   │       ├── systemd-sysvcompat-248-5/
│   │       │   └── desc
│   │       ├── tar-1.34-1/
│   │       │   └── desc
│   │       ├── tzdata-2021a-1/
│   │       │   └── desc
│   │       ├── util-linux-2.36.2-1/
│   │       │   └── desc
│   │       ├── util-linux-libs-2.36.2-1/
│   │       │   └── desc
│   │       ├── xcb-proto-1.14.1-3/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── xcb-util-0.4.0-3/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── xcb-util-cursor-0.1.3-3/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── xcb-util-image-0.4.0-3/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── xcb-util-renderutil-0.3.9-3/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── xcb-util-wm-0.4.1-3/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── xcb-util-xrm-1.3-2/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── xorgproto-2021.3-1/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── xz-5.2.5-1/
│   │       │   └── desc
│   │       ├── zlib-1:1.2.11-4/
│   │       │   └── desc
│   │       └── zstd-1.4.9-1/
│   │           └── desc
│   ├── devel.toml
│   ├── git-repo/
│   │   ├── HEAD
│   │   ├── config
│   │   ├── objects/
│   │   │   ├── 25/
│   │   │   │   └── 45915d2a057d068a8585ebfc0592ba543189a7
│   │   │   └── 4b/
│   │   │       └── 825dc642cb6eb9a060e54bf8d69288fbee4904
│   │   ├── packed-refs
│   │   └── refs/
│   │       └── .keep
│   ├── makepkg.conf
│   ├── pacman.conf
│   ├── paru.conf
│   ├── pkgbuild-repo/
│   │   ├── a/
│   │   │   ├── .SRCINFO
│   │   │   └── PKGBUILD
│   │   ├── b/
│   │   │   ├── .SRCINFO
│   │   │   └── PKGBUILD
│   │   └── c/
│   │       ├── .SRCINFO
│   │       └── PKGBUILD
│   └── repo/
│       └── polybar-1.0.0-1-x86_64.pkg.tar.zst
└── tests/
    ├── common/
    │   ├── mod.rs
    │   └── tests.rs
    └── paru.rs

================================================
FILE CONTENTS
================================================

================================================
FILE: .dockerignore
================================================
target
paru.tar.*


================================================
FILE: .github/FUNDING.yml
================================================
github: Morganamilo
custom: https://paypal.me/zzsugar


================================================
FILE: .github/ISSUE_TEMPLATE/bug-report.md
================================================
---
name: Bug Report
about: Report a Bug
title: ''
labels: ''
assignees: ''

---

### Affected Version
**paru -V**

### Description
**Have you checked previous issues?**

### Output
**Include the FULL output of any relevant commands/configs**

**Don't cut parts of the input always include the FULL thing**

**paru.conf and pacman.conf are usually always relevant**

```sh

```


================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.md
================================================
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: ''
assignees: ''

---

**Have you checked the readme and man page for this feature?**
**Have you checked previous issues for this feature?**


================================================
FILE: .github/ISSUE_TEMPLATE/issue.md
================================================
---
name: Issue
about: Report an Issue
title: ''
labels: ''
assignees: ''

---

### Affected Version
**paru -V**

### Description
**Have you checked previous issues?**

### Output
**Include the FULL output of any relevant commands/configs**

**Don't cut parts of the input always include the FULL thing**

**paru.conf and pacman.conf are usually always relevant**

```sh

```


================================================
FILE: .github/workflows/build.yml
================================================
name: Build Release
on:
  push:
    tags:
      - v*
    branches:
       - test-release/*

jobs:
  get-version:
    runs-on: ubuntu-latest
    outputs:
      version: ${{ steps.version.outputs.version }}
    steps:
      - id: version
        run: echo "version=${ref##test-release/}" >> $GITHUB_OUTPUT
        env:
          ref: ${{ github.ref_name }}

  build-releases:
    name: Build release
    runs-on: ubuntu-latest
    strategy:
      matrix:
        platform:
        - docker: amd64
          arch: x86_64
        - docker: arm64/v8
          arch: aarch64
        - docker: arm/v7
          arch: armv7h

    steps:
      - uses: actions/checkout@v4
      - uses: docker/setup-qemu-action@v3
        with:
          platforms: all
      - uses: docker/setup-buildx-action@v3
        with:
          version: latest
          install: true
      - run: docker build --platform=linux/${{ matrix.platform.docker }} -o . .
      - uses: actions/upload-artifact@v3
        with:
          name: paru-${{ matrix.platform.arch }}
          path: paru.tar.zst

  release:
    name: Create GitHub Release
    runs-on: ubuntu-latest
    needs: [build-releases, get-version]
    outputs:
      release-url: ${{ steps.create-release.outputs.upload_url }}
    steps:
    - name: Create Release
      id: create-release
      uses: actions/create-release@master
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      with:
        tag_name: ${{ needs.get-version.outputs.version }}
        release_name: Paru v${{ needs.get-version.outputs.version }}
        draft: true
        prerelease: false

  upload-binaries:
    name: Upload binaries to Githib relase
    runs-on: ubuntu-latest
    needs: [release, get-version]
    strategy:
      matrix:
          arch: [x86_64, aarch64, armv7h]
    steps:
      - uses: actions/download-artifact@v3
        with:
          name: paru-${{ matrix.arch }}
      - uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          upload_url: ${{ needs.release.outputs.release-url }}
          asset_name: paru-${{ needs.get-version.outputs.version }}-${{ matrix.arch }}.tar.zst
          asset_path: paru.tar.zst
          asset_content_type: application/tar+zstd



================================================
FILE: .github/workflows/mo.yml
================================================
name: Build Translations

on:
  push:
    paths:
      - 'po/*.po'
  pull_request:
    paths:
      - 'po/*.po'

env:
  CARGO_TERM_COLOR: always

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - name: Install gettext
        run: sudo apt-get install gettext

      - name: Checkout
        uses: actions/checkout@v4

      - name: Build translations
        run: ./scripts/mkmo locale


================================================
FILE: .github/workflows/paru.yml
================================================
name: Paru

on:
  push:
    paths:
      - 'src/*.rs'
      - 'testdata/**'
      - 'tests/**'
      - 'Cargo.*'
  pull_request:
    paths:
      - 'src/*.rs'
      - 'testdata/**'
      - 'tests/**'
      - 'Cargo.*'

env:
  CARGO_TERM_COLOR: always

jobs:
  test:
    runs-on: ubuntu-latest
    container:
      image: archlinux
    steps:
      - name: Install Packages
        run: pacman -Syu rust clang gcc git libarchive pkgconf sudo fakeroot --noconfirm --needed

      - name: Checkout
        uses: actions/checkout@v2

      - uses: Swatinem/rust-cache@v2
        with:
          cache-on-failure: true

      - name: Format
        run: cargo fmt -- --check

      - name: Build
        run: cargo build --locked --features generate

      - name: Test
        run: sudo -u nobody XDG_STATE_HOME=/tmp CARGO_HOME=/tmp/cargo cargo test --locked --features generate,mock --target-dir=/tmp -- --nocapture

  test-git:
    runs-on: ubuntu-latest
    container:
      image: archlinux
    steps:
      - name: Install Packages
        run: pacman -Syu rust curl clang git base-devel libarchive meson asciidoc doxygen fakechroot pkgconf --noconfirm --needed

      - name: Install Pacman-git
        run: |
          git clone https://aur.archlinux.org/pacman-git
          chown -R nobody pacman-git
          cd pacman-git
          sudo -u nobody makepkg --nocheck
          sudo -u nobody makepkg --packagelist > list
          yes | pacman -U $(cat list)

      - name: Checkout
        uses: actions/checkout@v2

      - uses: Swatinem/rust-cache@v2
        with:
          cache-on-failure: true

      - name: Format
        run: cargo fmt -- --check

      - name: Build
        run: cargo build --locked --features git,generate

      - name: Test
        run: sudo -u nobody XDG_STATE_HOME=/tmp CARGO_HOME=/tmp/cargo cargo test --locked --features git,generate,mock --target-dir=/tmp -- --nocapture


================================================
FILE: .gitignore
================================================
/target
paru.tar.*
po/*.mo
locale/
testdata/pkg/*


================================================
FILE: CHANGELOG.md
================================================
# Changelog

## Paru v2.1.0 (2025-07-08)

### Added

- Add `--chrootpkgs` flag 64ab502
- Add `--print` flag for `-C` 2fa517c
- Support `--noconfirm` on `-Ci` f6262fa
- Add `-Gcc` flag to print all comments for AUR packages 211f78b

### Changed

- Tell user to initialise local repo after changing pacman.conf ed9e287
- Revamp diff printing e2277b4
- Print help message for paging during review b488b5a
- Allow specifying Url and Path together for pkgbuild repos a1a0021
- Remove package files when running `-Lc` c43eb20

### Fixed

- Don't check conflicts when chroot and not installing 6527db3
- Fix chroot conflicts c652669
- Fix chroot builds 5bca838 2f5e6e1
- Fix debug package installs d0329e3
- Fix `-Si` not working with split packages 1003495
- Fix `--nocheck` not working for chroot builds c9c4a23
- Fix provider menu from showing on interactive install 6af6674
- Fix `-a` not working during `-Si` e8d9c01
- Fix `-Si <repo>/<package>` for pkgbuild repos b23382f
- Pass makepkg dropin config files to the chroot 25ab260
- Exclude AUR packages when running `-Qn` c1edcd3
- Fix `--asexp` and `--asdeps` not always being passed to pacman41f5862
- Fix typos #1267 #1364

### Localization

- Update sk locale #1265
- Update cs locale #1264
- Update fi locale #1378
- Update hu locale #1359 #1274 #1263
- Add uk locale #1352

## Paru v2.0.4 (2024-09-20)

### Added

- Add pacman 7 support 90656a9

### Fixed

- Fix split package support on -G c894e25
- Fix -Fl fish completion #1213
- Fix typo in man page #1237
- Fix build when POSIXLY_CORRECT is set #1160

### Localization

- Add cs locale #1133
- Updated pt locale #1164
- Updated pt_BR locale #1175
- Updated hu locale #1235

## Paru v2.0.3 (2024-03-13)

### Fixed

- Fix build on arm c096bb

## Paru v2.0.2 (2024-03-13)

### Added

- Add --chrootflags option #1090
- Add zsh package completion for --getpkgbuild #1101

### Fixed

- Fix crash when pkgbuild repo has directories 057706b
- Fix cache_dir instead of state_dir in error message #1141
- Fix --needed #1100
- Filter out pkgbuild repos for aur warnings 81efb1f
- Fixed typos in man page #1091
- Only enable color when stderr and stdout are tty b345771
- Update testing repo names for -G #1147

### Localization

- Add hu locale #1116
- Updated fr locale #1094
- Update sv locale #1125
- Update zh_CN locale #1120
- Update es locale #1117
- Update zh_TW locale #1111

## Paru v2.0.1 (2023-12-01)

### Added

- Print which package failed to clean in -Sc #1074

### Fixed

- Fix local pkgbuild review bf35cab
- Don't try interactive install with empty package list 26ce55f
- Don't refresh when no Git pkgbuild repos e090af4
- Fix compile on arm d1a9c4

### Localization

- Update sv locale #1088

## Paru v2.0.0 (2023-11-26)

Paru v2.0.0 comes after a long time of no releases, mostly due to a lack of free time
and a lot of changes that needed a lot of work to get done.

This update brings a lot of big changes, mostly aimed at power users, and a handul of general
improvements and quality of life changes.

As there's not been a release in so long, consider a lot of the things here not battle tested,
with a .1 patch to follow.

This changelog won't include minor changes as there are a lot.

### PKGBUILD Repos

The main feature of this release is properly integrating non aur pkgbuilds into the build
engine. You can now add pkgbuild repos to your paru.conf in the form of:

```
[repo_name]
Url = https://path/to/git/repo
```

Then syncing the repo with `paru -Sy --pkgbuilds`.

You can also specify 'Path =' instead to point to a pkgbuild repo on disk.

paru will then recognise this repo as a source of pkgbuilds just like the AUR.

```
paru -S foo
```

pkgbuild repos have a higher priority than the AUR so this can also be used to shadow AUR
packages with your own pkgbuilds. The deps of these pkgbuilds can still include AUR deps.

There is also an automatic pkgbuild repo named `.` in the current directory. Essentionally
there's an invisible:

```
[.]
Path = .
```

in your paru.conf.

This allows doing `paru -S ./foo` where `foo` is the name of a package (not path) under the
current directory. this means if you have a bunch of pkgbuilds in a directory that depend on
each other you can build one with `paru -S ./foo` and paru will solve and build the dependencies
across pkgbuilds.

Previously `paru -U` could be used to build a pkgbuild in the current directory. This has been
renamed to `paru -B <dirs>...` allowing you to specify multiple pkgbuilds to build at once.

See `paru.conf(5)` for more information on this.

### Chroot

--chroot now works without local repos, though it still works better with them.

### --interactive

`paru foo` has always been there for interactive search and install. There is now `--interactive`
which works for other operactions.

- `paru foo` is an alias for `paru -S --interactive foo`
- `paru -R --interactive foo` can be used for an interactive remove.
- `paru -Ss/-Qs --interactive foo` will give an interactive prompt then print the chosen packages so they can be piped to other commands.

### Provides

Provide searching is now better and is now enabled in the default paru.conf. You probably
want to uncomment this option if you have an existing paru.conf.

### Contributors

Thanks to every one who has contributed code and translations for paru.
And thanks to every one who has decided to sponsor the project.

### Added

- Add --interactive
- Add --nolocalrepo
- Add --pacmanconfbin
- Add --provides=all
- Add --pkgbuilds and --mode
- Add --rebuild=tree
- Add -o to ignore optional deps with --clean
- Add IgnoreDevelsource
- Add IgnoreDevel
- Add AurRpcUrl
- Add pkgbuild repos
- Add -S ./ syntax

### Changed

- Replace devel.json with devel.toml
- Move devel.toml to $XDG_STATE_HOME
- Dates now use the local time zone
- Fallback to cat when less is not available
- No confirm pacman install after final paru confirmation
- Copy DB into chroot before update
- Disable -w/--downloadonly when installing aur packages
- Allow chroot without local repo
- Replace -U with -B

### Fixed

- Pass env into chroot
- Fix separate install of split packages
- Create local repo when refreshing
- Respect makepkg config outside of chroot
- Fix no sudo when running paru -Sc
- Fix --redownload=yes
- Don't try set install reason if package didn't actually install
- colour version when printing install
- Fix assume install for chroot
- Don't install makedeps when chroot
- Fix -dd in chroot
- Don't review when no packages
- Fix aur packages not being case sensitive

## Paru v1.11.2 (2022-11-05)

Rebuild for openssl 3

## Paru v1.11.1 (2022-07-06)

### Fixed

- Fix installing split packages that depend on each other 8c24f92
- Fix man page typos #785

### Localization

- Update ja locale #791
- Update ca locale #788
- Update zh_CN locale #786
- Update zh_TW locale #784

## Paru v1.11.0 (2022-06-24)

### Added

- Don't try to build packages if deps are missing on fail baceee9
- Support verbose pkg list 84f16c4
- Add armv7h builds #723
- Add --failfast df382ce
- Add --keepsrc 6b7858a
- Add -Lc 57c2f23
- add fossil as devel suffix to the config #728

### Fixed

- Fix typo in paru.conf man page #709
- Include sudo flags in sudo loop 3620089
- Properly check for deps via provides with batch install a90ced5
- Don't check check_depends during batch install if --nocheck 386633d
- Fix fish completion #736 #749 #756
- Fix rebuild option #750
- Fix typo #738
- Fix --redownload=all 5371b65
- Fix crash when package changes packagename bf9691c
- Fix chroot cleaning c60d17e
- Use clean instead of remove for -Sc message ca8040e

### Localization

- Update pt locale #706
- Update hr locale #704
- Update nl locale #724 #743 #765
- Update pt_BR locale #732

### Changed

- Add triple dots to upgrade search messages #769

## Paru v1.10.0 (2022-03-24)

### Added

- Add flag to download AUR packages via SSH #669
- Add option to keep older packages in local repo #668

### Fixed

- Fix being unable to create chroot 5bf10e1
- Fix typo in man page #695

### Localization

- Update ko_KR locale #680
- Update pt_BR locale #687

## Paru v1.9.3 (2022-02-16)

### Added

- Add --pager and MakepkgConf options #603
- Add --asdep --asexp as short hand options 348bdb3

### Fixed

- Fix crash when updating local repo where local version != sync 017e05b
- Add completion to -Ui 19fd836
- Return no instead of default for invalid input 408f3cc
- Fix crash when current directory no longer exists ffef79d
- Fix comment fetching with new aurweb ea02818

### Changed

- Rename -C --upgrade to --sysupgrade and -Lu to -Ly 0bace84
- Expand docs on --fm 48b0086

### Localization

- Add hr locale #632
- Update es locale #645
- Update zh_CN locale #675

## Paru v1.9.2 (2021-12-09)

## Fixed

- Fix paru not actually waiting on children properly e336648
- Fix typo #608 f8e0888

### Localization

- Update pt locale #553
- Update es locale #606
- Update ru locale #607
- Update pt_br locale #605

## Paru v1.9.1 (2021-11-26)

### Fixed

- Make paru -G return a correct exit code #601
- Fix manpage wording #598
- Add docs for -Po and --regex 3ebff0f
- Remove Stale develinfo when package changes source Remove dbaec6c

### Changed

- Sort -Sla output 200b8b1
- Wait for child process to exit on signal 8c04dbb

### Localization

- Update pt_br locale #568

## Paru v1.9.0 (2021-11-01)

### Added

- Add -Po to show package install order #550
- Add timeout to git ls-remote 6278891
- Add -hg to default DevelSuffixes #546
- Add search size limit #541
- Add socks proxy support 5a25ec3
- Add -x/--regex for -Ss 6790a5d
- Add --savechanges to save pkgbuild changes e05ca07

### Fixed

- Fix typos #560
- Fix -d acting as -cc 69ae7bf
- Fix -U picking non local repo if package with same name 95c1f91

### Localization

- Add ko locale #565
- Update de locale #513

## Paru v1.8.2 (2021-08-18)

### Fixed

- Fix wrong length check leading to overflow in -Si 9de304b
- Fix format string printing wrongly f6b5431
- Make upgrade text bold to match pacman d5d1724

### Localization

- Add zh_TW locale #493
- Update fr locale #510
- Update ja locale #504

## Paru v1.8.1 (2021-08-12)

### Fixed

- Fix makepkg command giving wrong args in error message #492
- Fix stack overflow with some cyclic deps 22ec445
- Fix excessive output during -Ld

### Changed

- Ignore PKGEXT in chroot 8ff2ba9
- -Ld also removes sig files 2a1a412

### Localization

- Update nl locale #488
- Update de locale #487
- Update pt_BR locale #496

## Paru v1.8.0 (2021-08-03)

### Added

- Localization support 8667e98 5b1ff38
- Added ability to static link libalpm a39641c
- Add [env] section in paru.conf daf225f

### Fixed

- Fix short opts not taking args after space #485
- Fix -Sc not cleaning untracked files #430
- Fix -U sometimes not installing repo deps 61b10e0
- Fix chroot builds sometimes doing nothing when no AUR updates 08aa1f7
- Bail if call to gpg fails 9fab5d9

### Changed

- Order packages by dep order even when satisfied 210e375
- Add -F to default less flags 3b6cb32
- Warn instead of bail on unknown section 11bc07d

### Localization

- Add zh_CN locale #439
- Add ca locale #439
- Add it locale #440
- Add pt_BR locale #434
- Add pt locale #438
- Add es locale #435
- Add fi locale #441
- Add nl locale #444
- Add ru locale #449
- Add de locale #436
- Add ja locale #451
- Add tr locale #437
- Add ro locale #453
- Add fr locale #456
- Add sv locale #460
- Add hi locale #463

## Paru v1.7.3 (2021-06-24)

### Fixed

- Fix -U trying to resolve already satisfied deps 012db72
- Don't pass deps twice during -U afe0a1f
- Fix -dd not being passed to pacman 5a496c4

### Changed

- Move arch prompt and pgp import out of review 3d3eccf
- Retry aur search when one targ fails 4020507
- Only add packages to be installed to local repos 23f0a8c

## Paru v1.7.2 (2021-06-08)

### Fixed

- Fix compilation on 32 bit 9a211ed
- Fix -S'ing ignored packages b6ac4f3

### Changed

- Include #AurOnly in the example config 8f1d6d9

## Paru v1.7.1 (2021-06-03)

### Fixed

- Fix panic in provider menu 73ecc7

## Paru v1.7.0 (2021-05-31)

### Fixed

- Correctly decide if a pkg is aur or repo with -G 911ae21
- Fix provider menu showing during -Y 5c9b390
- Fix -G not updating already downloaded packages f5d5145
- Fix provider menu sometimes showing twice for targets da91f84
- Handle query part in devel urls bc5f545
- Fix exiting if devel pkg can not be checked 7463ae3
- Fix skipping repo packages with upgrademenu ba35318
- Fix crash in upgrade menu cc98ec6

### Added

- Add signing option d0ca8dd 74c7120
- Add -P --stats #240
- Support --assume-installed e6c6460
- Add -Ldd c525fab
- libalpm 13 support 062b0db

### Removed

- Remove -R --local c525fab
- Remove MovePkgs 69b5fb0
- libalpm \<13 support 062b0db

### Changed

- Better error messages when calling commands 257f73a
- Install repo packages with aur pkgs when using chroot 06a0f1f
- Pass mflags to makechrootpkg 7bce35d
- Expect local repos to be user writable 4d224b8
- -C will create the chroot if it does not exist 5b6730f

## Paru v1.6.1 (2021-05-04)

### Fixed

- Fix out of date packages not being shown dca010e
- Fix typo in man page #359

## Paru v1.6.0 (2021-05-03)

### Fixed

- Fix -Sc failing when pkg/ is not writable #324
- Fix not checking return of `git ls-remote` cd2049a
- Fix progress bar display 97b2d0b
- Fix upgrademenu crashing on non installed packages de26909
- Don't drop to a shell after -Cu b951d73
- Fix -Sc doc f83cbd3

### Added

- Paru now sets the user agent for aur requests 841ebb5
- support latest pacman-git 2cbe4ed

### Removed

- Removed pacman6-alpha support -- use pacman or pacman-git instead

### Changed

- Cancel sudo loop after sudo fails acbcfc1
- --gendb: don't update already existing entries 49eb22
- Better error message when AUR does not return 400 #351

## Paru v1.5.1 (2021-04-13)

### Fixed

- Fix --overwrite not being passed to pacman calls 28e4c0e
- Fix typo in manpage #300
- Fix args not allowing pacman globals e82ba9a
- Fix copy error in help message 25f6cc7

### Changed

- Use makepkg to generate srcinfo with paru -U #307
- Don't noconfirm -Ui 9d9cdb1
- Use -d/--delete to clean the whole package instead of -Scc edd43ef

## Paru v1.5.0 (2021-03-30)

### Fixed

- Fix typos #283 #276
- Fix packages being marked as explicit when they shouldn't 47c4caf
- Fix PAGER having higher priority than PARU_PAGER 82a7326
- Fix pacman error message not including sudo #297

### Added

- Wait for pacman when db is locked 57d73db

### Changed

- Only upgrade installed packages when using chroot 4d126bc
- Handle devel packages in local repo but not installed c5dfff2 c698f2e
- Don't enable provider menu on sysupgrade c698f2e

## Paru v1.4.0 (2021-03-14)

### Fixed

- Fix news continuie prompt not working c9431b4
- Fix ignore of .SRCINFO during initial review #264
- Fix packages.aur not being updated 28478c8
- Fix help menu: rename --noskipreview to --review #272
- Fix wrong return code with --needed 64409bf

### Added

- Added verbose search (-Sss) #266
- Warn when using chroot without devtools 06ff12a

## Paru v1.3.0 (2021-02-19)

### Fixed

- Fix misleading error when doing --nonexistantarg=foo 37fddea
- Fix build dir not existing and rename to clonedir 5786bb2
- Fix -Qu with local repo 7a9454f
- Fix typos #225 #245
- Create cache dir before caching aur list f18a901
- Make -Ta return 127 when not all packages are in AUR b91d7ee
 
### Added

- Add pager option ca9bfea
- Add PARU_PAGER 097433d
- Allow setting custom sudo loop behaviour c165166
- Add --skipreview a6c8511
- Add paru -U e54d635

### Changed

- Show all files in review 9830c74
- Skip review prompt when nothing to review 2a5e441
- Improve local repo documentation 


## Paru v1.2.2 (2021-02-03)

### Fixed

- Fix upgrademenu padding wrong with local repo 3198feb
- Fix chroot not installing repo packages f083096
- Fix sigpipe killing paru during review 27733e3

## Paru v1.2.1 (2021-02-02)

### Fixed

- Fix -G with split packages 16998c9
- Fix --bat not expecting an argument  e82a0ff
- Make PAGER a command instead of just the binary name d3e605c

### Added

- Add out of date info on -Ss 5e458eb

## Paru v1.2.0 (2021-01-29)

### Fixed

- Fix devel packages with multiple sources not updating 237f739
- Fix tab completion for -a in fish #155
- Fix -y's not being respected dcdf6f1
- Fix asdeps/asexp check 3657863

### Added

- aarch64 builds #182
- Add doas example to config 164f349
- Local repo and chroot support 4078200 319859f

### Changed

- Don't error out when arch news is down 929fa34
- Simplify help file 1031ebc 55b2992
- Print all diffs into a single less instance 89c3f22
- Continue building packages when one fails 315f93e
- Ignore aur when p/print is passed 76433ff
- --noconfirm also skips review #175
- NoWarn now supports globbing #176

## Paru v1.1.4 (2020-12-21)

### Fixed

- Remove nonexistent topdown option from `paru.conf(5)` #124
- Fix ignorepkg for devel pkgs ac0de9f
- Fix rebuild not taking an arg a516eda

### Changed

- Add example for packages exclude in ask input #130

## Paru v1.1.3 (2020-11-29)

### Fixed

- Fix --color behaving differently to pacman 5b56f86

### Changed

- Wait for editor to exit before deleting view #110
- Warn instead of error on unknown values in paru.conf 0e4e618

## Paru v1.1.2 (2020-11-18)

### Fixed

- Fix some packages not resolving and tweak package not found message e860dad
- Remove --stats from docs f8ce25b
- removing code that would false-flag debug pkgs #105 4ec0bb9

### Changed

- Improve error message for unknown option b3d0e95
- Do aur + devel upgrade concurrently 836bba8
- Fix warnings not showing with upgrade menu fedddb6

## Paru v1.1.1 (2020-11-12)

### Fixed

- Fix numbers in upgrade menu being printed improperly for devel packages #100
- Fix `--batflags` zsh completion #98

## Paru v1.1.0 (2020-11-12)

### Fixed

- Don't try to remove packages with -c when nothing to remove d3c668e
- Fix error if running `-Sy` with no targets 95f5681
- Hide warnings for debug packages b3e0fe0
- Don't try to install non existing devel packages 5e910d9
- Fix clean checking for wrong file type e9a260e
- Try and make pkg writable before deleting 70676bf
- Remove dashes from InstallDebug in paru.conf.5 #86
- Add missing asp completion 8e19638
-  Fix -Qu return value not always being correct 0b791bc

### Added

- Add AUR comment support faf4d51
- Add --bat and --batflags 8693ccd

### Changed

- Print [ignored] for ignored aur packages during -Qu 960fb1a
- Sort devel.json 30e1c6b
- Add mflags example to config ecc4ecd
- Always pass ignored packages to pacman 591d593
- Flip upgrade menu 79a4ab7

## Paru v1.0.2 (2020-11-02)

### Fixed

- Fix Git wanting login credentials for some repos ea3062e
- Fix diffs breaking with `--cleanafter` 0b66f9c
- Fix provider menu formatting d7f100a
- Fix devel not handling split packages properly a9f47ea
- Fix rogue "info" object in devel.json d434467
- Fix version compare 30da3bd

### Added

- Support repo prefix for `-G` ea512c6
- Added --newsonupgrade to print news on upgrade b30a35e

### Changed

- News now returns 1 when there is no new news 792e15c

## Paru v1.0.1 (2020-10-30)

### Fixed

- Fix `-Ss` not supporting `--bottomup`/`--topdown` #31 
- Fix typos and wording #30 #32 #36 #40 #46 91e8009
- Fix `-G` using lcoaldb instead of syncdb d34d3b0
- Fix warnings not printing when there are no upgrades 4b14b50
- Fix `--upgrademenu` printing the wrong local version #37
- Fix `paru <target>` trying to install all packages when input is empty ba00b9f
- Fix upgrade menu not showing sometimes 21e0b19
- Fix missing =all option to redownload/rebuild c2fc530
- Fix --overwrite not expecting an arg 9253841
- Fix not setting usage in alpm 9ee5a12
- Fix group printing 0451d60
- Fix `--removemake` not accounting for repomake b3a62bc
- Fix ignorepkg not working for devel packages 0bf2692

### Added

- Add `PARU_CONF` to configure paru's config file location eb9e1b1

### Changed

- AUR search is now case insensitive 5b27fc1
- `-Sh` and other operations will now forward to pacman's help for those options d148352
- Print an error when there's no action to do ce48f12
- `--gendb` will now continue on srcinfo parse errors 73eb796
- Don't prompt to continue install when pacman is going to prompt 9663f84

## Paru v1.0.0 (2020-10-28) - changes from yay

### Added

- Added --nocheck
- Added --develsuffixes
- Added --installDebug
- Added NoWarn
- Added syntax highlighting to pkgbuild printing
- Auto detection for pacman-git. Paru will build against pacman-git's API

### Removed

- Remove --timeupdate, --requestsplitn
- Remove --save -Pg --Pd -Ps
- Remove -Gf
- Remove --cleanmenu
- Remove -Y/--yay, stuff like --gendb still work even though they belonged to -Y

### Changed

- List based flags now append instead of overwriting existing settings
- Packages are now cloned to ~/.cache/paru/clone by default
- Use asp for repo pkgbuilds
- Improve news printing
- Formatting changes to be more pacman like
- -Yc accounts for makedeps for aur packages
- Devel info is now saved to devel.json
- Devel info schema change
- Sources are no longer downloaded in batch
- Only treat packages matching develsuffixes as devel


================================================
FILE: CONTRIBUTING.md
================================================
# Contributing to paru

## Formatting

Please format the code using `cargo fmt`

## Building

Paru is built with cargo.

To build paru use:

```
cargo build
```

To run paru use:

```
cargo run -- <args>
```

Paru has a couple of feature flags which you may want to enable:

- backtrace: does nothing, kept around for backwards compatibility
- git: target the libalpm-git API
- generate: generate the libalpm bindings at build time (requires clang)

### Building Against a Custom libalpm

If you wish to build against a custom libalpm you can specify **ALPM_LIB_DIR** while using the generate
feature. Then running with **LD_LIBRARY_PATH** pointed at the custom libalpm.so.

## Testing

Paru's test suite can be run by running:

```
cargo test --features mock
```

## Translating

See https://github.com/Morganamilo/paru/discussions/433 for discussion on localization.
You probably want to subscribe to this to be notified when translations need to be updated.

### New Languages

When translating to a new language try to stick to languages pacman already supports:
https://gitlab.archlinux.org/pacman/pacman/-/tree/master/src/pacman/po. For example using
`es` over `es_ES`.

To translate paru to a new language, copy the the template .pot file to the locale you
are translating to.

For example, to translate paru to Japanese you would do:

```
cp po/paru.pot po/jp.po
```

Then fill out the template file with your information and translation.

Alternatively, you can use programs like `poedit` to write the translations.

### Updating existing translations

To update existing translations against new code you must first update the .po
files.

Do this as its own commit.

```
./scripts/updpo
git commit po
```

Then fill in new strings.

### Testing Translations

To test the translations you first must build the translation then run paru
pointing it at the generated files.

```
./scripts/mkmo locale/
LOCALE_DIR=locale/ cargo run -- <args>
```


================================================
FILE: Cargo.toml
================================================
[package]
name = "paru"
version = "2.1.0"
authors = ["morganamilo <morganamilo@archlinux.org>"]
edition = "2021"

description = "Feature packed AUR helper"
homepage = "https://github.com/Morganamilo/paru"
repository = "https://github.com/Morganamilo/paru"
documentation = "https://docs.rs/paru"
license = "GPL-3.0"
keywords = ["archlinux", "arch", "alpm", "pacman", "aur"]
include = ["src/**/*", "LICENSE", "README.md", "CHANGELOG.md", "help"]
rust-version = "1.87"


[dependencies]
alpm = "5.0.2"
alpm-utils = "5.0.0"
aur-depends = "5.0.0"
aur-fetch = "0.11.3"
cini = "1.0.0"
pacmanconf = "3.1.0"
raur = "7.0.0"
srcinfo = "2.1.0"


ansiterm = "0.12.2"
anyhow = { version = "1.0.100", features = ["backtrace"] }
chrono = { version = "0.4.42", default-features = false, features = ["clock"] }
dirs = "6.0.0"
futures = "0.3.31"
globset = "0.4.18"
htmlescape = "0.3.1"
indicatif = "0.18.3"
scraper = "0.25.0"
nix = { version = "0.30.1", features = ["fs", "user"] }
reqwest = { version = "0.11.27", features = ["gzip", "socks"] }
rss = { version = "2.0.12", default-features = false }
serde = { version = "1.0.228", features = ["derive"] }
serde_json = "1.0.149"
smart-default = "0.7.1"
tempfile = "3.24.0"
terminal_size = "0.4.3"
tokio = { version = "1.49.0", features = [
    "process",
    "macros",
    "rt-multi-thread",
] }
url = "2.5.8"
env_logger = "0.11.8"
log = "0.4.29"
async-trait = { version = "0.1.89", optional = true }
tr = "0.1.11"
unicode-width = "0.2.2"
regex = "1.12.2"
signal-hook = "0.4.1"
bitflags = "2.10.0"
toml = { version = "0.9.10", features = ["preserve_order"] }
flate2 = "1.1.5"

[profile.release]
codegen-units = 1
lto = true

[features]
git = ["alpm/git", "alpm-utils/git", "aur-depends/git"]
backtrace = []
generate = ["alpm/generate"]
static = ["alpm/static"]
mock = ["async-trait"]
mock_chroot = ["mock"]
#default = ["git", "generate"]

[patch.crates-io]
#alpm = { path = "../alpm.rs/alpm" }
#alpm-utils = { path = "../alpm.rs/alpm-utils" }
#aur-depends = { path = "../aur-depends" }
#srcinfo = { path = "../srcinfo.rs" }
#aur-fetch = { path = "../aur-fetch" }


================================================
FILE: Dockerfile
================================================
FROM debian:13 AS build-stage

ARG PACMAN_HASH=b9f7d4a5b0bea75953f5892621a2caecc5672de5
ARG PACMAN_VER=7.1.0
ARG DEBIAN_FRONTEND=noninteractive

WORKDIR /pacman

RUN apt-get update -y
RUN apt-get install -y build-essential git libcurl4-openssl-dev curl meson ninja-build \
        libarchive-dev pkg-config libgpgme-dev libssl-dev clang python3 python3-setuptools \
        gettext zstd

RUN curl -L -o pacman-${PACMAN_VER}.tar.xz https://gitlab.archlinux.org/pacman/pacman/-/archive/${PACMAN_HASH}/pacman-${PACMAN_HASH}.tar.gz
RUN tar -xf pacman-${PACMAN_VER}.tar.xz

WORKDIR pacman-${PACMAN_HASH}

RUN meson setup \
        --prefix=/usr \
        --buildtype=plain \
        build

RUN ninja -C build
RUN ninja -C build install

WORKDIR /paru

ENV RUSTUP_HOME=/usr/local/rustup \
    CARGO_HOME=/usr/local/cargo \
    PATH=/usr/local/cargo/bin:$PATH

RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | \
     sh -s -- -y --no-modify-path --profile minimal --default-toolchain nightly

COPY ../ .

RUN --mount=type=tmpfs,target=/usr/local/cargo/git ./scripts/dist

FROM scratch AS export-stage
COPY --from=build-stage /paru/paru.tar.zst /


================================================
FILE: LICENSE
================================================
                    GNU GENERAL PUBLIC LICENSE
                       Version 3, 29 June 2007

 Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

                            Preamble

  The GNU General Public License is a free, copyleft license for
software and other kinds of works.

  The licenses for most software and other practical works are designed
to take away your freedom to share and change the works.  By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users.  We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors.  You can apply it to
your programs, too.

  When we speak of free software, we are referring to freedom, not
price.  Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.

  To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights.  Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.

  For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received.  You must make sure that they, too, receive
or can get the source code.  And you must show them these terms so they
know their rights.

  Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.

  For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software.  For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.

  Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so.  This is fundamentally incompatible with the aim of
protecting users' freedom to change the software.  The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable.  Therefore, we
have designed this version of the GPL to prohibit the practice for those
products.  If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.

  Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary.  To prevent this, the GPL assures that
patents cannot be used to render the program non-free.

  The precise terms and conditions for copying, distribution and
modification follow.

                       TERMS AND CONDITIONS

  0. Definitions.

  "This License" refers to version 3 of the GNU General Public License.

  "Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.

  "The Program" refers to any copyrightable work licensed under this
License.  Each licensee is addressed as "you".  "Licensees" and
"recipients" may be individuals or organizations.

  To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy.  The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.

  A "covered work" means either the unmodified Program or a work based
on the Program.

  To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy.  Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.

  To "convey" a work means any kind of propagation that enables other
parties to make or receive copies.  Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.

  An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License.  If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.

  1. Source Code.

  The "source code" for a work means the preferred form of the work
for making modifications to it.  "Object code" means any non-source
form of a work.

  A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.

  The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form.  A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.

  The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities.  However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work.  For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.

  The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.

  The Corresponding Source for a work in source code form is that
same work.

  2. Basic Permissions.

  All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met.  This License explicitly affirms your unlimited
permission to run the unmodified Program.  The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work.  This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.

  You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force.  You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright.  Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.

  Conveying under any other circumstances is permitted solely under
the conditions stated below.  Sublicensing is not allowed; section 10
makes it unnecessary.

  3. Protecting Users' Legal Rights From Anti-Circumvention Law.

  No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.

  When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.

  4. Conveying Verbatim Copies.

  You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.

  You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.

  5. Conveying Modified Source Versions.

  You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:

    a) The work must carry prominent notices stating that you modified
    it, and giving a relevant date.

    b) The work must carry prominent notices stating that it is
    released under this License and any conditions added under section
    7.  This requirement modifies the requirement in section 4 to
    "keep intact all notices".

    c) You must license the entire work, as a whole, under this
    License to anyone who comes into possession of a copy.  This
    License will therefore apply, along with any applicable section 7
    additional terms, to the whole of the work, and all its parts,
    regardless of how they are packaged.  This License gives no
    permission to license the work in any other way, but it does not
    invalidate such permission if you have separately received it.

    d) If the work has interactive user interfaces, each must display
    Appropriate Legal Notices; however, if the Program has interactive
    interfaces that do not display Appropriate Legal Notices, your
    work need not make them do so.

  A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit.  Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.

  6. Conveying Non-Source Forms.

  You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:

    a) Convey the object code in, or embodied in, a physical product
    (including a physical distribution medium), accompanied by the
    Corresponding Source fixed on a durable physical medium
    customarily used for software interchange.

    b) Convey the object code in, or embodied in, a physical product
    (including a physical distribution medium), accompanied by a
    written offer, valid for at least three years and valid for as
    long as you offer spare parts or customer support for that product
    model, to give anyone who possesses the object code either (1) a
    copy of the Corresponding Source for all the software in the
    product that is covered by this License, on a durable physical
    medium customarily used for software interchange, for a price no
    more than your reasonable cost of physically performing this
    conveying of source, or (2) access to copy the
    Corresponding Source from a network server at no charge.

    c) Convey individual copies of the object code with a copy of the
    written offer to provide the Corresponding Source.  This
    alternative is allowed only occasionally and noncommercially, and
    only if you received the object code with such an offer, in accord
    with subsection 6b.

    d) Convey the object code by offering access from a designated
    place (gratis or for a charge), and offer equivalent access to the
    Corresponding Source in the same way through the same place at no
    further charge.  You need not require recipients to copy the
    Corresponding Source along with the object code.  If the place to
    copy the object code is a network server, the Corresponding Source
    may be on a different server (operated by you or a third party)
    that supports equivalent copying facilities, provided you maintain
    clear directions next to the object code saying where to find the
    Corresponding Source.  Regardless of what server hosts the
    Corresponding Source, you remain obligated to ensure that it is
    available for as long as needed to satisfy these requirements.

    e) Convey the object code using peer-to-peer transmission, provided
    you inform other peers where the object code and Corresponding
    Source of the work are being offered to the general public at no
    charge under subsection 6d.

  A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.

  A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling.  In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage.  For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product.  A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.

  "Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source.  The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.

  If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information.  But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).

  The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed.  Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.

  Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.

  7. Additional Terms.

  "Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law.  If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.

  When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it.  (Additional permissions may be written to require their own
removal in certain cases when you modify the work.)  You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.

  Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:

    a) Disclaiming warranty or limiting liability differently from the
    terms of sections 15 and 16 of this License; or

    b) Requiring preservation of specified reasonable legal notices or
    author attributions in that material or in the Appropriate Legal
    Notices displayed by works containing it; or

    c) Prohibiting misrepresentation of the origin of that material, or
    requiring that modified versions of such material be marked in
    reasonable ways as different from the original version; or

    d) Limiting the use for publicity purposes of names of licensors or
    authors of the material; or

    e) Declining to grant rights under trademark law for use of some
    trade names, trademarks, or service marks; or

    f) Requiring indemnification of licensors and authors of that
    material by anyone who conveys the material (or modified versions of
    it) with contractual assumptions of liability to the recipient, for
    any liability that these contractual assumptions directly impose on
    those licensors and authors.

  All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10.  If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term.  If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.

  If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.

  Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.

  8. Termination.

  You may not propagate or modify a covered work except as expressly
provided under this License.  Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).

  However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.

  Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.

  Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License.  If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.

  9. Acceptance Not Required for Having Copies.

  You are not required to accept this License in order to receive or
run a copy of the Program.  Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance.  However,
nothing other than this License grants you permission to propagate or
modify any covered work.  These actions infringe copyright if you do
not accept this License.  Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.

  10. Automatic Licensing of Downstream Recipients.

  Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License.  You are not responsible
for enforcing compliance by third parties with this License.

  An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations.  If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.

  You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License.  For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.

  11. Patents.

  A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based.  The
work thus licensed is called the contributor's "contributor version".

  A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version.  For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.

  Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.

  In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement).  To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.

  If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients.  "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.

  If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.

  A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License.  You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.

  Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.

  12. No Surrender of Others' Freedom.

  If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all.  For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.

  13. Use with the GNU Affero General Public License.

  Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work.  The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.

  14. Revised Versions of this License.

  The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time.  Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.

  Each version is given a distinguishing version number.  If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation.  If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.

  If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.

  Later license versions may give you additional or different
permissions.  However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.

  15. Disclaimer of Warranty.

  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

  16. Limitation of Liability.

  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.

  17. Interpretation of Sections 15 and 16.

  If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.

                     END OF TERMS AND CONDITIONS

            How to Apply These Terms to Your New Programs

  If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.

  To do so, attach the following notices to the program.  It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.

    {one line to give the program's name and a brief idea of what it does.}
    Copyright (C) {year}  {name of author}

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.

Also add information on how to contact you by electronic and paper mail.

  If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:

    {project}  Copyright (C) {year}  {fullname}
    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
    This is free software, and you are welcome to redistribute it
    under certain conditions; type `show c' for details.

The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License.  Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".

  You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<http://www.gnu.org/licenses/>.

  The GNU General Public License does not permit incorporating your program
into proprietary programs.  If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library.  If this is what you want to do, use the GNU Lesser General
Public License instead of this License.  But first, please read
<http://www.gnu.org/philosophy/why-not-lgpl.html>.


================================================
FILE: README.md
================================================
# Paru

Feature packed AUR helper

[![paru](https://img.shields.io/aur/version/paru?color=1793d1&label=paru&logo=arch-linux&style=for-the-badge)](https://aur.archlinux.org/packages/paru/)
[![paru-bin](https://img.shields.io/aur/version/paru-bin?color=1793d1&label=paru-bin&logo=arch-linux&style=for-the-badge)](https://aur.archlinux.org/packages/paru-bin/)
[![paru-git](https://img.shields.io/aur/version/paru-git?color=1793d1&label=paru-git&logo=arch-linux&style=for-the-badge)](https://aur.archlinux.org/packages/paru-git/)

## Description

Paru is your standard pacman wrapping AUR helper with lots of features and minimal interaction.

[![asciicast](https://asciinema.org/a/sEh1ZpZZUgXUsgqKxuDdhpdEE.svg)](https://asciinema.org/a/sEh1ZpZZUgXUsgqKxuDdhpdEE)

## Installation

```
sudo pacman -S --needed base-devel
git clone https://aur.archlinux.org/paru.git
cd paru
makepkg -si
```

## Contributing

See [CONTRIBUTING.md](./CONTRIBUTING.md).

## General Tips

- **Man pages**: For documentation on paru's options and config file see `paru(8)` and `paru.conf(5)` respectively.

- **Color**: Paru only enables color if color is enabled in pacman. Enable `color` in your `pacman.conf`.

- **File based review**: To get a more advanced review process enable `FileManager` with your file manager of choice in `paru.conf`.

- **Flip search order**: To get search results to start at the bottom and go upwards, enable `BottomUp` in `paru.conf`.

- **Editing PKGBUILDs**: When editing PKGBUILDs, you can commit your changes to make them permanent. When the package is upgraded, `git` will try to merge your changes with upstream's.

- **PKGBUILD syntax highlighting**: You can install [`bat`](https://github.com/sharkdp/bat) to enable syntax highlighting during PKGBUILD review.

- **Tracking -git packages**: Paru tracks -git package by monitoring the upstream repository. Paru can only do this for packages that paru itself installed. `paru --gendb` will make paru aware of packages it did not install.

## Examples

`paru <target>` -- Interactively search and install `<target>`.

`paru` -- Alias for `paru -Syu`.

`paru -S <target>` -- Install a specific package.

`paru -Sua` -- Upgrade AUR packages.

`paru -Qua` -- Print available AUR updates.

`paru -G <target>` -- Download the PKGBUILD and related files of `<target>`.

`paru -Gp <target>` -- Print the PKGBUILD of `<target>`.

`paru -Gc <target>` -- Print the AUR comments  of `<target>`.

`paru --gendb` -- Generate the devel database for tracking `*-git` packages. This is only needed when you initially start using paru.

`paru -Bi .` -- Build and install a PKGBUILD in the current directory.

## IRC

Paru now has an IRC. #paru on [Libera Chat](https://libera.chat/). Feel free to join for discussion and help with paru.

## Debugging

Paru is not an official tool. If paru can't build a package, you should first check if makepkg can successfully build the package. If it can't, then you should report the issue to the maintainer. Otherwise, it is likely an issue with paru and should be reported here.


================================================
FILE: completions/bash
================================================
# This file is in the public domain.

_arch_compgen() {
  local i r
  COMPREPLY=($(compgen -W '$*' -- "$cur"))
  for ((i = 1; i < ${#COMP_WORDS[@]} - 1; i++)); do
    for r in ${!COMPREPLY[@]}; do
      if [[ ${COMP_WORDS[i]} == ${COMPREPLY[r]} ]]; then
        unset 'COMPREPLY[r]'
        break
      fi
    done
  done
}

_arch_ptr2comp() {
  local list= x y
  for x; do
    for y in '0 --' '1 -'; do
      eval 'set -- ${'$x'[${y% *}]}'
      list+=\ ${@/#/${y#* }}
    done
  done
  _arch_compgen $list
}

_arch_incomp() {
  local r="[[:space:]]-(-${1#* }[[:space:]]|[[:alnum:]_]*${1% *})"
  [[ $COMP_LINE =~ $r ]]
}

_pacman_pkg() {
  _arch_compgen "$(
    if [[ $2 ]]; then
      \pacman -$1 2>/dev/null | \cut -d' ' -f1 | \sort -u
    else
      \pacman -$1 2>/dev/null
    fi
  )"
}

_paru_pkg() {
  [ -z "$cur" ] && _pacman_pkg Slq && return
  _arch_compgen "$(paru -Pc)"
}

_pacman_repo_list() {
  _arch_compgen "$(pacman-conf --repo-list)"$'\n'"$(paru -Sl --pkgbuilds | cut -d ' ' -f1 | uniq)"
}

_paru() {
  compopt -o default
  local common core cur database files prev query remove sync upgrade o
  local show getpkgbuild
  local cur prev words cword

  _init_completion || return
  database=('asdeps asexplicit')
  files=('list machinereadable refresh regex' 'l x y')
  query=('changelog check deps explicit file foreign groups info list native owns
          search unrequired upgrades' 'c e g i k l m n o p s t u')
  remove=('cascade dbonly nodeps assume-installed nosave print recursive unneeded local' 'c n p s u')
  sync=('asdeps asexplicit clean dbonly downloadonly overwrite groups ignore ignoregroup
         info list needed nodeps assume-installed print refresh recursive search sysupgrade'
    'c g i l p s u w y')
  upgrade=('asdeps asexplicit overwrite needed nodeps assume-installed print recursive install' 'p i')
  core=('database files help query remove sync upgrade version' 'D F Q R S U V h')

  common=('arch cachedir color config confirm dbpath debug gpgdir help hookdir logfile
           noconfirm noprogressbar noscriptlet quiet root verbose

           repo aur aururl clonedir makepkg mflags pacman pacman-conf git gitflags sudo sudoflags
           asp gpg gpgflags fm fmflags chrootflags pager completioninterval sortby searchby limit
           upgrademenu removemake noremovemake cleanafter nocleanafter rebuild rebuildall norebuild
           rebuildtree redownload noredownload redownloadall pgpfetch nopgpfetch useask
           nouseask savechanges nosavechanges failfast nofailfast keepsrc nokeepsrc combinedupgrade
           nocombinedupgrade batchinstall nobatchinstall provides noprovides devel nodevel
           develsuffixes sudoloop nosudoloop bottomup topdown newsonupgrade bat batflags
           chroot nochroot sign nosign keeprepocache nokeeprepocache signdb nosigndb
           localrepo nolocalrepo review skipreview' 'b d h q r v a')

  show=('news stats' 'w s')
  getpkgbuild=('print comments' 'p c')
  chrootctl=('sysupgrade install' 'u i')
  repoctl=('quiet list delete refresh clean' 'q l d y c')

  for o in 'D database' 'F files' 'Q query' 'R remove' 'S sync' 'U upgrade' 'P show' 'G getpkgbuild' 'C chrootctl' 'L repoctl'; do
    _arch_incomp "$o" && break
  done

  if [[ $? != 0 ]]; then
    _arch_ptr2comp core
  elif [[ ! $prev =~ ^-[[:alnum:]_]*[Vbhr] && ! $prev == --@(cachedir|color|config|dbpath|help|hookdir|gpgdir|logfile|root|version) ]]; then
    [[ $cur == -* ]] && _arch_ptr2comp ${o#* } common ||
      case ${o% *} in
      D | R)
        _pacman_pkg Qq
        ;;
      F)
        { _arch_incomp 'l list' && _pacman_pkg Slq; } ||
          _arch_incomp 'o owns' ||
          compopt +o default
        ;;
      Q)
        { _arch_incomp 'g groups' && _pacman_pkg Qg sort; } ||
          { _arch_incomp 'p file' && _pacman_file; } ||
          { _arch_incomp 's search' && compopt +o default; } ||
          { _arch_incomp 'u upgrades' && compopt +o default; } ||
          _arch_incomp 'o owns' ||
          _pacman_pkg Qq
        ;;
      S)
        { _arch_incomp 'g groups' && _pacman_pkg Sg; } ||
          { _arch_incomp 'l list' && _pacman_repo_list; } ||
          { _arch_incomp 's search' && compopt +o default; } ||
          _paru_pkg
        ;;
      U)
        _pacman_file
        ;;
      G)
        _paru_pkg
        ;;
      esac
  fi
  true
}

_pacman_file() {
  compopt -o filenames
  _filedir 'pkg.tar*'
}

complete -F _paru paru

# ex:et ts=2 sw=2 ft=sh


================================================
FILE: completions/fish
================================================
# vim:fdm=marker foldlevel=0 tabstop=2 shiftwidth=2 filetype=fish
# Original Author for pacman: Giorgio Lando <patroclo7@gmail.com>
# Updated for paru by jguer

set -l progname paru

function __fish_print_paru_repos --description "Print the repositories configured for paru"
    string match -er "\[.*\]" </etc/pacman.conf | string match -r -v "^#|options" | string replace -ra "\[|\]" ""
    paru -Sl --pkgbuilds | cut -d ' ' -f1 | uniq
end


# paru constants
set -l noopt 'not __fish_contains_opt -s G -s V -s P -s S -s D -s Q -s R -s U -s T -s F -s L -s C database query sync remove upgrade deptest files version repoctl chrootctl gendb'
set -l listall "(paru -Pc | string replace ' ' \t)"
set -l listpacman "(__fish_print_pacman_packages)"
set -l show '__fish_contains_opt -s P show'
set -l getpkgbuild '__fish_contains_opt -s G getpkgbuild'
set -l repoctl '__fish_contains_opt -s L repoctl'
set -l chrootctl '__fish_contains_opt -s C chrootctl'

# Pacman constants
set -l listinstalled "(pacman -Q | string replace ' ' \t)"
set -l listrepos "(__fish_print_paru_repos)"
set -l listgroups "(pacman -Sg)\t'Package Group'"
set -l database '__fish_contains_opt -s D database'
set -l query '__fish_contains_opt -s Q query'
set -l remove '__fish_contains_opt -s R remove'
set -l sync '__fish_contains_opt -s S sync'
set -l upgrade '__fish_contains_opt -s U upgrade'
set -l files '__fish_contains_opt -s F files'

complete -c $progname -e
complete -c $progname -f
# HACK: We only need these two to coerce fish to stop file completion and complete options
complete -c $progname -n "$noopt" -a "-D" -d "Modify the package database"
complete -c $progname -n "$noopt" -a "-Q" -d "Query the package database"

# Primary operations
complete -c $progname -s D -f -l database -n "$noopt" -d 'Modify the package database'
complete -c $progname -s Q -f -l query -n "$noopt" -d 'Query the package database'
complete -c $progname -s R -f -l remove -n "$noopt" -d 'Remove packages from the system'
complete -c $progname -s S -f -l sync -n "$noopt" -d 'Synchronize packages'
complete -c $progname -s T -f -l deptest -n "$noopt" -d 'Check dependencies'
complete -c $progname -s U -f -l upgrade -n "$noopt" -d 'Upgrade or add a local package'
complete -c $progname -s F -f -l files -n "$noopt" -d 'Query the files database'
complete -c $progname -s V -f -l version -n "$noopt" -d 'Display version and exit'
complete -c $progname -s h -f -l help -d 'Display help'

# General options
# Only offer these once a command has been given so they get prominent display
complete -c $progname -n "not $noopt" -s b -l dbpath -d 'Alternate database location' -xa "(__fish_complete_directories)"
complete -c $progname -n "not $noopt" -s r -l root -d 'Alternate installation root' -xa "(__fish_complete_directories)"
complete -c $progname -n "not $noopt" -s v -l verbose -d 'Output more status messages' -f
complete -c $progname -n "not $noopt" -l arch -d 'Alternate architecture' -f
complete -c $progname -n "not $noopt" -l cachedir -d 'Alternate package cache location' -xa "(__fish_complete_directories)"
complete -c $progname -n "not $noopt" -l color -d 'Colorize the output' -fa '{auto,always,never}'
complete -c $progname -n "not $noopt" -l config -d 'Alternate config file' -r
complete -c $progname -n "not $noopt" -l confirm -d 'Always ask for confirmation' -f
complete -c $progname -n "not $noopt" -l debug -d 'Display debug messages' -f
complete -c $progname -n "not $noopt" -l disable-download-timeout -d 'Use relaxed timeouts for download' -f
complete -c $progname -n "not $noopt" -l gpgdir -d 'Alternate home directory for GnuPG' -xa "(__fish_complete_directories)"
complete -c $progname -n "not $noopt" -l hookdir -d 'Alternate hook location' -xa "(__fish_complete_directories)"
complete -c $progname -n "not $noopt" -l logfile -d 'Alternate log file'
complete -c $progname -n "not $noopt" -l noconfirm -d 'Bypass any confirmation' -f
complete -c $progname -n "not $noopt" -l sysroot -d 'Operate on a mounted guest system (root-only)' -xa "(__fish_complete_directories)"

# File, query, sync options (files, query, sync)
for condition in files query sync
    complete -c $progname -n "$$condition" -s q -l quiet -d 'Show less information' -f
end

# Transaction options (sync, remove, upgrade)
for condition in sync remove upgrade
    complete -c $progname -n "$$condition" -s d -l nodeps -d 'Skip [all] dependency checks' -f
    complete -c $progname -n "$$condition" -s p -l print -d 'Dry run, only print targets' -f
    complete -c $progname -n "$$condition" -l assume-installed -d 'Add a virtual package to satisfy dependencies' -f
    complete -c $progname -n "$$condition" -l dbonly -d 'Modify database entry only' -f
    complete -c $progname -n "$$condition" -l noprogressbar -d 'Do not display progress bar' -f
    complete -c $progname -n "$$condition" -l noscriptlet -d 'Do not execute install script' -f
    complete -c $progname -n "$$condition" -l print-format -d 'Specify printf-like format' -x
end

# File and query options (files, query)
for condition in files query
    complete -c $progname -n "$$condition" -s l -l list -d 'List the files owned by PACKAGE' -f
end

# File and sync options (files, sync)
for condition in files sync
    complete -c $progname -n "$$condition" -s y -l refresh -d 'Download fresh package databases [force]' -f
end

# Query and sync options (query, sync)
for condition in query sync
    complete -c $progname -n "$$condition" -s g -l groups -d 'Display members of [all] package GROUP' -xa "$listgroups"
end

# Sync and upgrade options (sync, upgrade)
for condition in sync upgrade
    complete -c $progname -n "$$condition" -l asdeps -d 'Install packages as non-explicitly installed' -f
    complete -c $progname -n "$$condition" -l asexplicit -d 'Install packages as explicitly installed' -f
    complete -c $progname -n "$$condition" -l ignore -d 'Ignore a package upgrade (can be used more than once)' -xa "$listall"
    complete -c $progname -n "$$condition" -l ignoregroup -d 'Ignore a group upgrade (can be used more than once)' -xa "$listgroups"
    complete -c $progname -n "$$condition" -l needed -d 'Do not reinstall up to date packages' -f
    complete -c $progname -n "$$condition" -l overwrite -d 'Overwrite conflicting files (can be used more than once)' -r
end

# Database options
set -l has_db_opt '__fish_contains_opt asdeps asexplicit check -s k'
complete -c $progname -n "$database; and not $has_db_opt" -s k -l check -d 'Check database validity'
complete -c $progname -n "$database" -s q -l quite -d 'Suppress output of success messages' -f
complete -c $progname -n "$database; and not $has_db_opt" -l asdeps -d 'Mark PACKAGE as dependency' -x
complete -c $progname -n "$database; and not $has_db_opt" -l asexplicit -d 'Mark PACKAGE as explicitly installed' -x
complete -c $progname -n "$has_db_opt; and $database" -xa "$listinstalled"

# File options - since pacman 5
complete -c $progname -n "$files" -s x -l regex -d 'Interpret each query as a regular expression' -f
complete -c $progname -n "$files" -l machinereadable -d 'Print each match in a machine readable output format' -f
complete -c $progname -n "$files" -d 'Package' -xa "$listpacman"

# Query options
complete -c $progname -n "$query" -s c -l changelog -d 'View the change log of PACKAGE' -f
complete -c $progname -n "$query" -s d -l deps -d 'List only non-explicit packages (dependencies)' -f
complete -c $progname -n "$query" -s e -l explicit -d 'List only explicitly installed packages' -f
complete -c $progname -n "$query" -s i -l info -d 'View PACKAGE [backup files] information' -f
complete -c $progname -n "$query" -s k -l check -d 'Check that PACKAGE files exist' -f
complete -c $progname -n "$query" -s m -l foreign -d 'List installed packages not found in sync database' -f
complete -c $progname -n "$query" -s n -l native -d 'list installed packages only found in sync database' -f
complete -c $progname -n "$query" -s o -l owns -d 'Query the package that owns FILE' -r
complete -c $progname -n "$query" -s p -l file -d 'Query a package file instead of the database' -r
complete -c $progname -n "$query" -s s -l search -d 'Search locally-installed packages for regexp' -f
complete -c $progname -n "$query" -s t -l unrequired -d 'List only unrequired packages [and optdepends]' -f
complete -c $progname -n "$query" -s u -l upgrades -d 'List only out-of-date packages' -f
complete -c $progname -n "$query" -d 'Installed package' -xa "$listinstalled"

# Remove options
complete -c $progname -n "$remove" -s c -l cascade -d 'Also remove packages depending on PACKAGE' -f
complete -c $progname -n "$remove" -s n -l nosave -d 'Ignore file backup designations' -f
complete -c $progname -n "$remove" -s s -l recursive -d 'Also remove dependencies of PACKAGE' -f
complete -c $progname -n "$remove" -s u -l unneeded -d 'Only remove targets not required by PACKAGE' -f
complete -c $progname -n "$remove" -l local -d 'Also remove the package from the local repo' -f
complete -c $progname -n "$remove" -d 'Installed package' -xa "$listinstalled"

# Sync options
complete -c $progname -n "$sync" -s c -l clean -d 'Remove [all] packages from cache' -f
complete -c $progname -n "$sync" -s i -l info -d 'View PACKAGE [extended] information' -f
complete -c $progname -n "$sync" -s l -l list -d 'List all packages in REPOSITORY' -xa "$listrepos"
complete -c $progname -n "$sync" -s s -l search -d 'Search remote repositories for regexp' -f
complete -c $progname -n "$sync" -s u -l sysupgrade -d 'Upgrade all packages that are out of date'
complete -c $progname -n "$sync" -s w -l downloadonly -d 'Only download the target packages'
complete -c $progname -n "$sync" -xa "$listall $listgroups"

# Upgrade options
# Theoretically, pacman reads packages in all formats that libarchive supports
# In practice, it's going to be tar.xz, tar.gz or tar.zst
complete -c $progname -n "$upgrade" -xa '(__fish_complete_suffix pkg.tar.zst; __fish_complete_suffix pkg.tar.xz; __fish_complete_suffix pkg.tar.gz)' -d 'Package file'

complete -c $progname -n "$upgrade" -s i -l install -d 'Install package as well as building' -f

# paru operations
complete -c $progname -s P -f -l show -n "$noopt" -d 'Print information'
complete -c $progname -s G -f -l getpkgbuild -n "$noopt" -d 'Get PKGBUILD from ABS or AUR'
complete -c $progname -s L -f -l repoctl -n "$noopt" -d 'List local repos'
complete -c $progname -s C -f -l chrootctl -n "$noopt" -d 'Interactive shell to the chroot'


# paru options
complete -c $progname -s c -l clean -n "$noopt" -d 'Remove unneeded dependencies' -f
complete -c $progname -l gendb -n "$noopt" -d 'Generate development package DB' -f

# Show options
complete -c $progname -n "$show" -s w -l news -d 'Print arch news' -f
complete -c $progname -n "$show" -s s -l stats -d 'Display system package statistics' -f

# Getpkgbuild options
complete -c $progname -n "$getpkgbuild" -s p -l print -d 'Print PKGBUILD instead of downloading' -f
complete -c $progname -n "$getpkgbuild" -s c -l comments -d "Print the AUR comments from the PKGBUILD's AUR page" -f

complete -c $progname -n "$getpkgbuild" -xa "$listall"

# Repoctl options
complete -c $progname -n "$repoctl" -s l -l list -d 'List packages in local repos' -f
complete -c $progname -n "$repoctl" -s d -l delete -d 'Remove a package from the local repo' -f
complete -c $progname -n "$repoctl; and __fish_contains_opt -s d delete" -d 'Package in local repo' -xa '(paru --repoctl --list --quiet)'
complete -c $progname -n "$repoctl" -s q -l quiet -d 'Show less information' -f
complete -c $progname -n "$repoctl" -s y -l refresh -d 'Refresh local repos' -f
complete -c $progname -n "$repoctl" -s c -l clean -d 'Remove uninstalled packages from repos' -f

# Chrootctl options
complete -c $progname -n "$chrootctl" -s i -l install -d 'Install a package into the chroot' -xa "$listpacman"
complete -c $progname -n "$chrootctl" -s u -l sysupgrade -d 'Upgrade the chroot' -f

# New options
complete -c $progname -n "not $noopt" -l repo -d 'Assume targets are from the repositories' -f
complete -c $progname -n "not $noopt" -s a -l aur -d 'Assume targets are from the AUR' -f
complete -c $progname -n "not $noopt" -l aururl -d 'Set an alternative AUR URL' -f
complete -c $progname -n "not $noopt" -l aurrpcurl -d 'Set an alternative URL for the AUR /rpc endpoint' -f
complete -c $progname -n "not $noopt" -l clonedir -d 'Directory used to download and run PKGBUILDs' -r
complete -c $progname -n "not $noopt" -l makepkg -d 'Makepkg command to use' -f
complete -c $progname -n "not $noopt" -l pacman -d 'Pacman command to use' -f
complete -c $progname -n "not $noopt" -l pacman-conf -d 'Pacman-conf command to use' -f
complete -c $progname -n "not $noopt" -l git -d 'Git command to use' -f
complete -c $progname -n "not $noopt" -l asp -d 'Asp command to use' -f
complete -c $progname -n "not $noopt" -l gpg -d 'Gpg command to use' -f
complete -c $progname -n "not $noopt" -l fm -d 'File manager to use' -f
complete -c $progname -n "not $noopt" -l pager -d 'Pager command to use' -f
complete -c $progname -n "not $noopt" -l completioninterval -d 'Refresh interval for completion cache' -f
complete -c $progname -n "not $noopt" -l sortby -d 'Sort AUR results by a specific field during search' -xa "{votes,popularity,id,baseid,name,base,submitted,modified}"
complete -c $progname -n "not $noopt" -l searchby -d 'Search for AUR packages by querying the specified field' -xa "{name,name-desc,maintainer,depends,checkdepends,makedepends,optdepends}"
complete -c $progname -n "not $noopt" -l limit -d 'Limit number of search results' -x
complete -c $progname -n "not $noopt" -l upgrademenu -d 'Show a detailed list of updates with the option to skip any' -f
complete -c $progname -n "not $noopt" -l noupgrademenu -d 'Do not show the upgrade menu' -f
complete -c $progname -n "not $noopt" -l removemake -d 'Remove make deps after install' -f
complete -c $progname -n "not $noopt" -l noremovemake -d 'Do not remove make deps after install' -f
complete -c $progname -n "not $noopt" -l topdown -d 'Shows repository packages first and then aur' -f
complete -c $progname -n "not $noopt" -l bottomup -d 'Shows aur packages first and then repository' -f
complete -c $progname -n "not $noopt" -l devel -d 'Check -git/-svn/-hg development version' -f
complete -c $progname -n "not $noopt" -l nodevel -d 'Disable development version checking' -f
complete -c $progname -n "not $noopt" -l develsuffixes -d 'Suffixes to define development packages' -f
complete -c $progname -n "not $noopt" -l cleanafter -d 'Clean package sources after successful build' -f
complete -c $progname -n "not $noopt" -l nocleanafter -d 'Disable package sources cleaning' -f
complete -c $progname -n "not $noopt" -l redownload -d 'Redownload PKGBUILD of package even if up-to-date' -f
complete -c $progname -n "not $noopt" -l noredownload -d 'Do not redownload up-to-date PKGBUILDs' -f
complete -c $progname -n "not $noopt" -l provides -d 'Look for matching providers when searching for packages' -f
complete -c $progname -n "not $noopt" -l noprovides -d 'Just look for packages by pkgname' -f
complete -c $progname -n "not $noopt" -l pgpfetch -d 'Prompt to import PGP keys from PKGBUILDs' -f
complete -c $progname -n "not $noopt" -l nopgpfetch -d 'Do not prompt to import PGP keys' -f
complete -c $progname -n "not $noopt" -l newsonupgrade -d 'Print new news during sysupgrade' -f
complete -c $progname -n "not $noopt" -l useask -d 'Automatically resolve conflicts using pacmans ask flag' -f
complete -c $progname -n "not $noopt" -l nouseask -d 'Confirm conflicts manually during the install' -f
complete -c $progname -n "not $noopt" -l savechanges -d 'Commit changes to pkgbuilds made during review' -f
complete -c $progname -n "not $noopt" -l nosavechanges -d "Don't commit changes to pkgbuilds made during review" -f
complete -c $progname -n "not $noopt" -l failfast -d 'Exit as soon as any AUR packages fail to build' -f
complete -c $progname -n "not $noopt" -l nofailfast -d "Don't Exit as soon as any AUR packages fail to build" -f
complete -c $progname -n "not $noopt" -l keepsrc -d "Keep src/ and pkg/ directories after building packages" -f
complete -c $progname -n "not $noopt" -l nokeepsrc -d "Don't keep src/ and pkg/ directories after building packages" -f
complete -c $progname -n "not $noopt" -l combinedupgrade -d 'Refresh then perform the repo and AUR upgrade together' -f
complete -c $progname -n "not $noopt" -l nocombinedupgrade -d 'Perform the repo upgrade and AUR upgrade separately' -f
complete -c $progname -n "not $noopt" -l batchinstall -d 'Build multiple AUR packages then install them together' -f
complete -c $progname -n "not $noopt" -l nobatchinstall -d 'Build and install each AUR package one by one' -f
complete -c $progname -n "not $noopt" -l rebuild -d 'Always build target packages' -f
complete -c $progname -n "not $noopt" -l norebuild -d 'Skip package build if in cache and up to date' -f
complete -c $progname -n "not $noopt" -l mflags -d 'Pass the following options to makepkg' -f
complete -c $progname -n "not $noopt" -l gitflags -d 'Pass the following options to git' -f
complete -c $progname -n "not $noopt" -l gpgflags -d 'Pass the following options to gpg' -f
complete -c $progname -n "not $noopt" -l sudoflags -d 'Pass the following options to sudo' -f
complete -c $progname -n "not $noopt" -l batflags -d 'Pass the following options to sudo' -f
complete -c $progname -n "not $noopt" -l fmflags -d 'Pass the following options to file manager' -f
complete -c $progname -n "not $noopt" -l chrootflags -d 'Pass the following options to makechrootpkg' -f
complete -c $progname -n "not $noopt" -l sudoloop -d 'Loop sudo calls in the background to avoid timeout' -f
complete -c $progname -n "not $noopt" -l nosudoloop -d 'Do not loop sudo calls in the background' -f
complete -c $progname -n "not $noopt" -l chroot -d 'Build packages in a chroot' -f
complete -c $progname -n "not $noopt" -l nochroot -d "Don't build packages in a chroot" -f
complete -c $progname -n "not $noopt" -l sign -d 'Sign packages with gpg' -f
complete -c $progname -n "not $noopt" -l nosign -d "Don't sign packages with gpg" -f
complete -c $progname -n "not $noopt" -l keeprepocache -d 'Keep old versions of packages with local repo' -f
complete -c $progname -n "not $noopt" -l nokeeprepocache -d "Don't keep old versions of packages with local repo" -f
complete -c $progname -n "not $noopt" -l signdb -d 'Sign databases with gpg' -f
complete -c $progname -n "not $noopt" -l nosigndb -d "Don't sign databases with gpg" -f
complete -c $progname -n "not $noopt" -l localrepo -d 'Build packages in a local repo' -f
complete -c $progname -n "not $noopt" -l nolocalrepo -d "Don't build packages in a local repo" -f
complete -c $progname -n "not $noopt" -l skipreview -d 'Skip the review process' -f
complete -c $progname -n "not $noopt" -l review -d "Don't skip the review process" -f


================================================
FILE: completions/zsh
================================================
#compdef paru
# vim:fdm=marker foldlevel=0 tabstop=2 shiftwidth=2 filetype=zsh

typeset -A opt_args
setopt extendedglob

# options for passing to _arguments: main pacman commands
_pacman_opts_commands=(
	{-D,--database}'[Modify database]'
	{-F,--files}'[Query the files database]'
	{-G,--getpkgbuild}'[Get PKGBUILD from ABS or AUR]'
	{-L,--repoctl}'[List local repos]'
	{-C,--chrootctl}'[Interactive shell to the chroot]'
	{-Q,--query}'[Query the package database]'
	{-R,--remove}'[Remove a package from the system]'
	{-P,--show}'[Print paru information]'
	{-S,--sync}'[Synchronize packages]'
	{-T,--deptest}'[Check if dependencies are installed]'
	{-U,--upgrade}'[Upgrade a package]'
	{-V,--version}'[Display version and exit]'
	'(-h --help)'{-h,--help}'[Display usage]'
)

# options for passing to _arguments: options common to all commands
_pacman_opts_common=(
	'--arch[Set an alternate architecture]'
	{-b,--dbpath}'[Alternate database location]:database_location:_files -/'
	'--color[colorize the output]:color options:(always never auto)'
	{-h,--help}'[Display syntax for the given operation]'
	{-r,--root}'[Set alternate installation root]:installation root:_files -/'
	{-v,--verbose}'[Be more verbose]'
	'--cachedir[Alternate package cache location]:cache_location:_files -/'
	'--config[An alternate configuration file]:config file:_files'
	'--makepkgconf[makepkg.conf file to use]:config file:_files'
	'--nomakepkgconf[Use the default makepkg.conf]'
	'--completioninterval[Time in days to refresh completion cache]:number'
	'--confirm[Always ask for confirmation]'
	'--debug[Display debug messages]'
	'--gpgdir[Set an alternate directory for GnuPG (instead of /etc/pacman.d/gnupg)]: :_files -/'
	'--hookdir[Set an alternate hook location]: :_files -/'
	'--logfile[An alternate log file]:config file:_files'
	'--noconfirm[Do not ask for confirmation]'
	'--noprogressbar[Do not show a progress bar when downloading files]'
	'--noscriptlet[Do not execute the install scriptlet if one exists]'


	{-c,--clean}'[Remove unneeded dependencies]'
	'--gendb[Generates development package DB used for updating]'
	'--repo[Assume targets are from the repositories]'
	{-a,--aur}'[Assume targets are from the AUR]'
	'--aururl[Set an alternative AUR URL]:url'
	'--aurrpcurl[Set an alternative URL for the AUR /rpc endpoint]:url'

	'--clonedir[Directory used to download and run PKGBUILDs]:build dir:_files -/'
	'--makepkg[makepkg command to use]:makepkg:_files'
	'--pacman[pacman command to use]:pacman:_files'
	'--pacman-conf[pacman-conf command to use]:pacman:_files'
	'--git[git command to use]:git:_files'
	'--gpg[gpg command to use]:gpg:_files'
	'--fm[file manager to use]:fm:_files'
	'--asp[asp command to use]:asp:_files'
	'--pager[pager command to use]:pager:_files'

	'--sortby[Sort AUR results by a specific field during search]:sortby options:(votes popularity id baseid name base submitted modified)'
	'--upgrademenu[Show a detailed list of updates with the option to skip any]'
	"--noupgrademenu[Don't show the upgrade menu]"
	"--removemake[Remove makedepends after install]"
	"--noremovemake[Don't remove makedepends after install]"

	'--bottomup[Show AUR packages first]'
	'--topdown[Show repository packages first]'
	'--devel[Check -git/-svn/-hg development version]'
	'--nodevel[Disable development version checking]'
	'--develsuffixes[Suffixes to define development packages]:suffixes'
	'--cleanafter[Clean package sources after successful build]'
	'--nocleanafter[Disable package sources cleaning after successful build]'
	'--redownload[Always download PKGBUILDs of targets]'
	'--noredownload[Skip PKGBUILD download if in cache and up to date]'
	'--rebuild[Always build target packages]'
	'--norebuild[Skip package build if in cache and up to date]'
	'--provides[Look for matching providers when searching for packages]'
	'--noprovides[Just look for packages by pkgname]'
	'--pgpfetch[Prompt to import PGP keys from PKGBUILDs]'
	"--nopgpfetch[Don't prompt to import PGP keys]"
	"--newsonupgrade[Print new news during sysupgrade]"
	"--useask[Automatically resolve conflicts using pacman's ask flag]"
	'--nouseask[Confirm conflicts manually during the install]'
	"--savechanges[Commit changes to pkgbuilds made during review]"
	"--nosavechanges[Don't commit changes to pkgbuilds made during review]"
	"--failfast[Exit as soon as any AUR packages fail to build]"
	"--nofailfast[Don't exit as soon as any AUR packages fail to build]"
	"--keepsrc[Keep src/ and pkg/ directories after building packages]"
	"--nokeepsrc[Don't keep src/ and pkg/ directories after building packages]"
	'--combinedupgrade[Refresh then perform the repo and AUR upgrade together]'
	'--nocombinedupgrade[Perform the repo upgrade and AUR upgrade separately]'
	'--mflags[Pass arguments to makepkg]:mflags'
	'--gpgflags[Pass arguments to gpg]:gpgflags'
	'--gitflags[Pass arguments to git]:flags'
	'--sudoflags[Pass arguments to sudo]:flags'
	'--batflags[Pass arguments to bat]:flags'
	'--gpgflags[Pass arguments to gpg]:flags'
	'--fmflags[Pass arguments to file manager]:flags'
	'--chrootflags[Pass arguments to makechrootpkg]:flags'

	'--sudoloop[Loop sudo calls in the background to avoid timeout]'
	'--nosudoloop[Do not loop sudo calls in the background]'
	'--searchby[Search for packages using a specified field]'
	'--limit[limit number of search results]'
	'--sortby[Sort AUR results by a specific field during search]'
	'--batchinstall[Build multiple AUR packages then install them together]'
	'--nobatchinstall[Build and install each AUR package one by one]'
	'--chroot[Build packages in a chroot]'
	"--nochroot[Don't build packages in a chroot]"
	'--sign[Sign packages with gpg]'
	"--nosign[Don't sign packages with gpg]"
	'--keeprepocache[Keep old versions of packages with local repo]'
	"--nokeeprepocache[Don't keep old versions of packages with local repo]"
	'--signdb[Sign databases with gpg]'
	"--nosigndb[Don't sign databases with gpg]"
	'--localrepo[Build packages in a local repo]'
	"--nolocalrepo[Don't build packages in a local repo]"

	'--skipreview[Skip the review process]'
	"--review[Don't skip the review process]"
)

# options for passing to _arguments: options for --upgrade commands
_pacman_opts_pkgfile=(
	'*-d[Skip dependency checks]'
	'*--nodeps[Skip dependency checks]'
	'*--assume-installed[Add virtual package to satisfy dependencies]'
	'--dbonly[Only remove database entry, do not remove files]'
	'--overwrite[Overwrite conflicting files]:file:_files -g "*"'
	'--needed[Do not reinstall up to date packages]'
	'--asdeps[mark packages as non-explicitly installed]'
	'--asexplicit[mark packages as explicitly installed]'
	{-p,--print}'[Only print the targets instead of performing the operation]'
	{-i,--install}'[Install package as well as building]'
	'*--ignore[Ignore a package upgrade]:package: _pacman_completions_all_packages'
	'*--ignoregroup[Ignore a group upgrade]:package group:_pacman_completions_all_groups'
	'--print-format[Specify how the targets should be printed]'
	'*:package file:_files -g "*.pkg.tar*~*.sig(.,@)"'
)

# options for passing to _arguments: subactions for --query command
_pacman_opts_query_actions=(
	'(-Q --query)'{-Q,--query}
	{-g,--groups}'[View all members of a package group]:*:package groups:->query_group'
	{-o,--owns}'[Query the package that owns a file]:file:_files'
	{-p,--file}'[Package file to query]:*:package file:->query_file'
	{-s,--search}'[Search package names and descriptions]:*:search text:->query_search'
)

# options for passing to _arguments: options for --query and subcommands
_pacman_opts_query_modifiers=(
	{-c,--changelog}'[List package changelog]'
	{-d,--deps}'[List packages installed as dependencies]'
	{-e,--explicit}'[List packages explicitly installed]'
	{\*-i,\*--info}'[View package information]'
	{\*-k,\*--check}'[Check package files]'
	{-l,--list}'[List package contents]'
	{-m,--foreign}'[List installed packages not found in sync db(s)]'
	{-n,--native}'[List installed packages found in sync db(s)]'
	{-q,--quiet}'[Show less information for query and search]'
	{-t,--unrequired}'[List packages not required by any package]'
	{-u,--upgrades}'[List packages that can be upgraded]'
)

# -G
_pacman_opts_getpkgbuild_modifiers=(
	{-p,--print}'[Print PKGBUILD instead of downloading]'
	{-c,--comments}"[Print the AUR comments from the PKGBUILD's AUR page]"
	{-s,--ssh}"[Clone the AUR package using SSH]"
)

# -L
_pacman_opts_repoctl_modifiers=(
	{-l,--list}'[List packages in local repos]'
	{-d,--delete}"[Remove a package from the local repo]"
	{-q,--quiet}'[Show less information]'
	{-y,--refresh}'[Refresh local repos]'
	{-c,--clean}'[Remove uninstalled packages from repos]'
)

# -L
_pacman_opts_chrootctl_modifiers=(
	{-i,--install}'[Install a package into the chroot]'
	{-u,--sysupgrade}'[Upgrade the chroot]'
)

# -P
_pacman_opts_print_modifiers=(
		{-w,--news}'[Print arch news]'
		{-s,--stats}'[Display system package statistics]'
)
# options for passing to _arguments: options for --remove command
_pacman_opts_remove=(
	{-c,--cascade}'[Remove all dependent packages]'
	{-d,--nodeps}'[Skip dependency checks]'
	'*--assume-installed[Add virtual package to satisfy dependencies]'
	{-n,--nosave}'[Remove protected configuration files]'
	{-p,--print}'[Only print the targets instead of performing the operation]'
	{\*-s,\*--recursive}'[Remove dependencies not required by other packages]'
	{-u,--unneeded}'[Remove unneeded packages]'
	'--dbonly[Only remove database entry, do not remove files]'
	'--print-format[Specify how the targets should be printed]'
	'--local[Also remove the package from the local repo]'
	'*:installed package:_pacman_completions_installed_packages'
)

_pacman_opts_database=(
	'--asdeps[mark packages as non-explicitly installed]'
	'--asexplicit[mark packages as explicitly installed]'
	'*:installed package:_pacman_completions_installed_packages'
)

_pacman_opts_files=(
	{-l,--list}'[List the files owned by the queried package]:package:_pacman_completions_all_packages'
	{-x,--regex}'[Enable searching using regular expressions]:regex:'
	{-y,--refresh}'[Download fresh files databases from the server]'
	'--machinereadable[Produce machine-readable output]'
	{-q,--quiet}'[Show less information for query and search]'
)

# options for passing to _arguments: options for --sync command
_pacman_opts_sync_actions=(
	'(-S --sync)'{-S,--sync}
	{\*-c,\*--clean}'[Remove old packages from cache]:\*:clean:->sync_clean'
	{-g,--groups}'[View all members of a package group]:*:package groups:->sync_group'
	{-s,--search}'[Search package names and descriptions]:*:search text:->sync_search'
	'--dbonly[Only remove database entry, do not remove files]'
	'--needed[Do not reinstall up to date packages]'
	'--recursive[Reinstall all dependencies of target packages]'
)

# options for passing to _arguments: options for --sync command
_pacman_opts_sync_modifiers=(
	{\*-d,\*--nodeps}'[Skip dependency checks]'
	'*--assume-installed[Add virtual package to satisfy dependencies]'
	{\*-i,\*--info}'[View package information]'
	{-l,--list}'[List all packages in a repository]'
	{-p,--print}'[Print download URIs for each package to be installed]'
	{-q,--quiet}'[Show less information for query and search]'
	{\*-u,\*--sysupgrade}'[Upgrade all out-of-date packages]'
	{-w,--downloadonly}'[Download packages only]'
	{\*-y,\*--refresh}'[Download fresh package databases]'
	'*--ignore[Ignore a package upgrade]:package: _pacman_completions_all_packages'
	'*--ignoregroup[Ignore a group upgrade]:package group:_pacman_completions_all_groups'
	'--asdeps[Install packages as non-explicitly installed]'
	'--asexplicit[Install packages as explicitly installed]'
	'--overwrite[Overwrite conflicting files]:files:_files'
	'--print-format[Specify how the targets should be printed]'
)

# handles --help subcommand
_pacman_action_help() {
	_arguments -s : \
		"$_pacman_opts_commands[@]"
}

# handles cases where no subcommand has yet been given
_pacman_action_none() {
	_arguments -s : \
		"$_pacman_opts_commands[@]"
}

# handles --query subcommand
_pacman_action_query() {
	local context state line
	typeset -A opt_args

	case $state in
		query_file)
			_arguments -s : \
				"$_pacman_opts_common[@]" \
				"$_pacman_opts_query_modifiers[@]" \
				'*:package file:_files -g "*.pkg.tar*~*.sig(.,@)"'
			;;
		query_group)
			_arguments -s : \
				"$_pacman_opts_common[@]" \
				"$_pacman_opts_query_modifiers[@]" \
				'*:groups:_pacman_completions_installed_groups'
			;;
		query_owner)
			_arguments -s : \
				"$_pacman_opts_common[@]" \
				"$_pacman_opts_query_modifiers[@]" \
				'*:file:_files'
			;;
		query_search)
			_arguments -s : \
				"$_pacman_opts_common[@]" \
				"$_pacman_opts_query_modifiers[@]" \
				'*:search text: '
			;;
		*)
			_arguments -s : \
				"$_pacman_opts_common[@]" \
				"$_pacman_opts_query_actions[@]" \
				"$_pacman_opts_query_modifiers[@]" \
				'*:package:_pacman_completions_installed_packages'
			;;
	esac
}

# handles --remove subcommand
_pacman_action_remove() {
	_arguments -s : \
		'(--remove -R)'{-R,--remove} \
		"$_pacman_opts_common[@]" \
		"$_pacman_opts_remove[@]"
}

# handles --database subcommand
_pacman_action_database() {
	_arguments -s : \
		'(--database -D)'{-D,--database} \
		"$_pacman_opts_common[@]" \
		"$_pacman_opts_database[@]"
}

# handles --files subcommand
_pacman_action_files() {
	_arguments -s : \
		'(--files -F)'{-F,--files} \
		"$_pacman_opts_common[@]" \
		"$_pacman_opts_files[@]"
}

_pacman_action_deptest () {
	_arguments -s : \
		'(--deptest)-T' \
		"$_pacman_opts_common[@]" \
		":packages:_pacman_all_packages"
}


# handles --sync subcommand
_pacman_action_sync() {
	local context state line
	typeset -A opt_args
	if (( $+words[(r)--clean] )); then
		state=sync_clean
	elif (( $+words[(r)--groups] )); then
		state=sync_group
	elif (( $+words[(r)--search] )); then
		state=sync_search
	fi

	case $state in
		sync_clean)
			_arguments -s : \
				{\*-c,\*--clean}'[Remove old packages from cache]' \
				"$_pacman_opts_common[@]" \
				"$_pacman_opts_sync_modifiers[@]"
				;;
		sync_group)
			_arguments -s : \
				"$_pacman_opts_common[@]" \
				"$_pacman_opts_sync_modifiers[@]" \
				'(-g --group)'{-g,--groups} \
				'*:package group:_pacman_completions_all_groups'
			;;
		sync_search)
			_arguments -s : \
				"$_pacman_opts_common[@]" \
				"$_pacman_opts_sync_modifiers[@]" \
				'*:search text: '
			;;
		*)
			_arguments -s : \
				"$_pacman_opts_common[@]" \
				"$_pacman_opts_sync_actions[@]" \
				"$_pacman_opts_sync_modifiers[@]" \
				'*:package:_pacman_completions_all_packages'
			;;
	esac
}

# handles --upgrade subcommand
_pacman_action_upgrade() {
	_arguments -s : \
		'(-U --upgrade)'{-U,--upgrade} \
		"$_pacman_opts_common[@]" \
		"$_pacman_opts_pkgfile[@]"
}

# handles --version subcommand
_pacman_action_version() {
	# no further arguments
	return 0
}

# handles --getpkgbuild subcommand
_pacman_action_getpkgbuild() {
  local aur_only
  typeset -A opt_args
  if (( $+words[(r)-c] )) || (( $+words[(r)--comments] )); then
    aur_only=1
  elif (( $+words[(r)-s] )) || (( $+words[(r)--ssh] )); then
    aur_only=1
  fi

  if [[ $aur_only == 1 ]]; then
    _arguments -s : \
        "$_pacman_opts_getpkgbuild_modifiers[@]" \
        '*:package:_pacman_completions_aur_packages'
  else
    _arguments -s : \
        "$_pacman_opts_getpkgbuild_modifiers[@]" \
        '*:package:_pacman_completions_all_packages'
  fi
}

# provides completions for package groups
_pacman_completions_all_groups() {
	local -a cmd groups
	_pacman_get_command
	groups=( $(_call_program groups $cmd[@] -Sg) )
	typeset -U groups

	if [[ ${words[CURRENT-1]} == '--ignoregroup' ]]; then
		_sequence compadd -S ',' "$@" -a groups
	else
		compadd "$@" -a groups
	fi
}

# provides completions for packages available from repositories
# these can be specified as either 'package' or 'repository/package'
_pacman_completions_all_packages() {
	local -a seq sep cmd packages repositories packages_long

	if [[ ${words[CURRENT-1]} == '--ignore' ]]; then
		seq='_sequence'
		sep=(-S ',')
	else
		seq=
		sep=()
	fi

	if compset -P1 '*/*'; then
		packages=( $(_call_program packages paru -Pc ${words[CURRENT]%/*}) )
		typeset -U packages
		${seq} _wanted repo_packages expl "repository/package" compadd ${sep[@]} ${(@)packages}
	else
		packages=( $(_call_program packages paru -Pc ) )
		typeset -U packages
		${seq} _wanted packages expl "packages" compadd ${sep[@]} - "${(@)packages}"

		repositories=($(pacman-conf --repo-list) \
			$(_call_program packages paru -Sl --pkgbuilds | cut -d ' ' -f1 | uniq))
		typeset -U repositories
		_wanted repo_packages expl "repository/package" compadd -S "/" $repositories
	fi
}

_pacman_completions_aur_packages() {
  # make sure cache is full
  paru -Pc >/dev/null

  local cache_file=${XDG_CACHE_HOME:-$HOME/.cache}/paru/packages.aur
  if [ ! -f $cache_file ]; then
    return
  fi
  local -a packages=( $(< $cache_file) )
  _wanted packages expl "AUR packages" compadd ${(@)packages}
}

# provides completions for package groups
_pacman_completions_installed_groups() {
	local -a cmd groups
	_pacman_get_command
	groups=(${(o)${(f)"$(_call_program groups $cmd[@] -Qg)"}% *})
	typeset -U groups
	compadd "$@" -a groups
}

# provides completions for installed packages
_pacman_completions_installed_packages() {
	local -a cmd packages packages_long
	packages_long=(/var/lib/pacman/local/*(/))
	packages=( ${${packages_long#/var/lib/pacman/local/}%-*-*} )
	compadd "$@" -a packages
}

_pacman_all_packages() {
	_alternative : \
		'localpkgs:local packages:_pacman_completions_installed_packages' \
		'repopkgs:repository packages:_pacman_completions_all_packages'
}

# provides completions for repository names
_pacman_completions_repositories() {
	local -a cmd repositories
	repositories=($(pacman-conf --repo-list) \
		$(_call_program packages paru -Sl --pkgbuilds | cut -d ' ' -f1 | uniq))
	# Uniq the array
	typeset -U repositories
	compadd "$@" -a repositories
}

# builds command for invoking pacman in a _call_program command - extracts
# relevant options already specified (config file, etc)
# $cmd must be declared by calling function
_pacman_get_command() {
	# this is mostly nicked from _perforce
	cmd=( "pacman" "2>/dev/null")
	integer i
	for (( i = 2; i < CURRENT - 1; i++ )); do
		if [[ ${words[i]} = "--config" || ${words[i]} = "--root" ]]; then
			cmd+=( ${words[i,i+1]} )
		fi
	done
}

# main dispatcher
_pacman_zsh_comp() {
	local -a args cmds;
	local tmp
	args=( ${${${(M)words:#-*}#-}:#-*} )
	for tmp in $words; do
		cmds+=("${${_pacman_opts_commands[(r)*$tmp\[*]%%\[*}#*\)}")
	done
	case $args in #$words[2] in
		h*)
			if (( ${(c)#args} <= 1 && ${(w)#cmds} <= 1 )); then
				_pacman_action_help
			else
				_message "no more arguments"
			fi
			;;
		*h*)
			_message "no more arguments"
			;;
		D*)
			_pacman_action_database
			;;
		F*)
			_pacman_action_files
			;;
		Q*g*) # ipkg groups
			_arguments -s : \
				"$_pacman_opts_common[@]" \
				"$_pacman_opts_query_modifiers[@]" \
				'*:groups:_pacman_completions_installed_groups'
			;;
		Q*o*) # file
			_arguments -s : \
				"$_pacman_opts_common[@]" \
				"$_pacman_opts_query_modifiers[@]" \
				'*:package file:_files'
			;;
		Q*p*) # file *.pkg.tar*
			_arguments -s : \
				"$_pacman_opts_common[@]" \
				"$_pacman_opts_query_modifiers[@]" \
				'*:package file:_files -g "*.pkg.tar*~*.sig(.,@)"'
			;;
		T*)
			_pacman_action_deptest
			;;
		Q*)
			_pacman_action_query
			;;
		P*)
			 _arguments -s : \
				"$_pacman_opts_print_modifiers[@]"
			;;
		R*)
			_pacman_action_remove
			;;
		S*c*) # no completion
			_arguments -s : \
				'(-c --clean)'{\*-c,\*--clean}'[Remove all files from the cache]' \
				"$_pacman_opts_common[@]"
			;;
		S*l*) # repos
			_arguments -s : \
				"$_pacman_opts_common[@]" \
				"$_pacman_opts_sync_modifiers[@]" \
				'*:package repo:_pacman_completions_repositories' \
			;;
		S*g*) # pkg groups
			_arguments -s : \
				"$_pacman_opts_common[@]" \
				"$_pacman_opts_sync_modifiers[@]" \
				'*:package group:_pacman_completions_all_groups'
			;;
		S*s*)
			_arguments -s : \
				"$_pacman_opts_common[@]" \
				"$_pacman_opts_sync_modifiers[@]" \
				'*:search text: '
				;;
		S*)
			_pacman_action_sync
			;;
		T*)
			 _arguments -s : \
				'-T' \
				"$_pacman_opts_common[@]" \
				":packages:_pacman_all_packages"
			;;
		U*)
			_pacman_action_upgrade
			;;
		V*)
			_pacman_action_version
			;;
		Y*)
			_arguments -s : \
				"$_pacman_opts_paru_modifiers[@]"
			;;
		G*)
			_pacman_action_getpkgbuild
			;;
		L*)
			_arguments -s : \
				"$_pacman_opts_repoctl_modifiers[@]"
			;;
		C*)
			_arguments -s : \
				"$_pacman_opts_chrootctl_modifiers[@]"
			;;

		*)

			case ${(M)words:#--*} in
				*--help*)
					if (( ${(w)#cmds} == 1 )); then
						_pacman_action_help
					else
						return 0;
					fi
					;;
				*--sync*)
					_pacman_action_sync
					;;
				*--query*)
					_pacman_action_query
					;;
				*--remove*)
					_pacman_action_remove
					;;
				*--deptest*)
					_pacman_action_deptest
					;;
				*--database*)
					_pacman_action_database
					;;
				*--files*)
					_pacman_action_files
					;;
				*--version*)
					_pacman_action_version
					;;
				*--upgrade*)
					_pacman_action_upgrade
					;;
				*--getpkgbuild*)
					_pacman_action_getpkgbuild
					;;
				*)
					_pacman_action_none
					;;
			esac
			;;
	esac
}
_pacman_comp() {
	case "$service" in
		paru)
			_pacman_zsh_comp "$@"
			;;
		*)
			_message "Error"
			;;
	esac
}

_pacman_comp "$@"


================================================
FILE: man/paru.8
================================================
.TH "PARU" "8" "2021\-03\-24" "paru v1.10.0 "Paru Manual"
.nh
.ad l
.SH NAME
paru \- AUR helper and pacman wrapper

.SH SYNOPSIS
\fIparu\fR <operation> [options] [targets]
.sp
\fIparu\fR <search terms>
.sp
\fIparu\fR

.SH DESCRIPTION
Paru is an AUR helper written in Rust and based on the design of yay. It aims
to be your standard pacman wrapping AUR helper with minimal interaction.

Paru is a tool to easily build and install packages from the AUR, along with
their dependencies. Paru also expands many of pacman's options making them
AUR aware.

This manpage only covers options unique to paru. For other options see
\fBpacman(8)\fR.

.SH PARU OPERATIONS
.TP

.TP
.B \-P, \-\-show
Printing related options.

.TP
.B \-G, \-\-getpkgbuild
Downloads PKGBUILDs from the ABS or AUR. The ABS can only be used for Arch
Linux repositories.

.TP
.B \-B, \-\-build
Build PKGBUILDs on disk. Targets are directories directly containing a PKGBUILD.

.TP
.B \-L, \-\-repoctl
List local repos.

.TP
.B \-C, \-\-chrootctl
Interactive shell to the chroot.

.RE
If no arguments are provided 'paru \-Syu' will be performed.

.SH EXTENDED PACMAN OPERATIONS
.TP
.B \-R, \-S, \-Si, \-Sl, \-Ss, \-Su, \-Sc, \-Qu \-T
These operations are extended to support both AUR and repo packages.

.TP
.B \-R
Paru will also remove cached data about devel packages.

.TP
.B \-Sc
Paru will also clean cached AUR packages and any untracked files in the
cache. Cleaning untracked files will wipe any downloaded sources or
built packages but will keep already downloaded VCS sources.
-d or --delete can be passed to delete the entire package instead of just
cleaning it.

.TP
.B \-Ss
The AUR can be searched using regex but it must be explicitly requested using
\-x/\-\-regex. Regex search will only search package names and not descriptions
regardless of SearchBy.

.TP
.B \-Sss
Paru will also output a verbose search result when passing two
'--search' or '-s' flags.

.TP
.B \-S, \-Si, \-Sl, \-Ss, \-Su, \-Qu
Paru will also handle AUR packages for these operations.

.TP
.B \-Ta
Will filter a list of packages to ones that appear in the AUR.

.SH NO OPERATION

.TP
.B <NO OPTION>
Interactive search and install. Displays a list of packages matching the search
terms and prompts the user on which packages to install.

.TP
.B \-\-gendb
Generate the development package database. This tracks the latest commit for
each development package, so when there is a new commit paru will know to
update. This is done per package whenever a package is synced. This option
should only be used when migrating to paru from another AUR helper.

This also causes paru to assume all current development packages are up to
date. Updates will then be detected on the next commit.

.TP
.B \-c, \-\-clean
Remove unneeded dependencies.

Make and check dependencies are considered for
foreign packages. Pass this twice to ignore these. Pass \-o to
ignore optional dependencies.

.SH SHOW OPTIONS (APPLY TO \-P AND \-\-SHOW)
.TP
.B \-c, \-\-complete
Print a list of all AUR and repo packages. This allows shell completion
and is not intended to be used directly by the user.

.TP
.B \-s, \-\-stats
Displays information about installed packages and system health. If there
are orphaned, or out-of-date packages, or packages that no longer
exist on the AUR; warnings will be displayed.

.TP
.B \-w, \-\-news
Print new news from the Arch Linux homepage. News is considered new if it is
newer than the build date of all native packages. Pass this twice to show all
available news.

.TP
.B \-o, \-\-order
Print buildorder for targets.

This option outputs information about how to build a package and its
dependencies. Each line of output specifies an action to perform or information
to take into consideration.

Each line of output will be in one of the following formats:

.RE
.RS 7
.B MISSING <DEP> [WANTED BY]...
.RS 7
A dependency could not be found.

<DEP> is the dependency that could not be found and
[WANTED BY] is the current dependency stack. The dependency stack will be empty if the package
that could not be found was a target.

Paru will exit 1 if any packages are missing.
.RE
.RE

.RS 7
.B CONFLICT LOCAL|INNER <PKG> <CONFLICTING PKG> [CONFLICT]
.RS 7
There was a package conflict.

The second arg will be LOCAL if the conflict is with an installed package and INNER if two of
the to be installed packages conflict. <PKG> and <CONFLICTING PKG> are the packages in conflict
and [CONFLICT] will be the conflict string if it is different from <CONFLICTING PKG>.
.RE
.RE

.RS 7
.B INSTALL TARGET|DEP|MAKE <DB> <NAME>
.RS 7
Install a package from the pacman repos.

The first arg will be TARGET if the package is a target, DEP if a dependency, or MAKE if the package
is a build time dependency. <DB> is the name of the database the package belongs to and <NAME> is the
name of the package.
.RE
.RE

.RS 7
.B AUR TARGET|DEP|MAKE <BASE> <NAMES>...
.RS 7
Build a package from the AUR.

The first arg will be TARGET if the package is a target, DEP if a dependency, or MAKE if the package
is a build time dependency. <BASE> is the pkgbase of the package  and <NAMES> are the names of the
packages belonging to the pkgbase.
.RE

More options may be added in the future.

.SH GETPKGBUILD OPTIONS (APPLY TO \-G AND \-\-GETPKGBUILD)
.TP
.B \-p, \-\-print
Prints the PKGBUILD to the terminal instead of downloading it.

.TP
.B \-c, \-\-comments
Print the AUR comments from the PKGBUILD's AUR page.

Pass twice to get all comments instead of the first page.

.TP
.B \-s, \-\-ssh
Clone the AUR package using SSH (e.g.: a read-write remote).

.SH REPOCTL OPTIONS (APPLY TO \-L AND \-\-REPOCTL)
.TP
.B \-l, \-\-list
List packages in local repos

.TP
.B \-c, \-\-clean
Remove packages that are not currently installed from repos.

.TP
.B \-d, \-\-delete
Remove a package from the local repo.
Pass this twice to also uninstall the package.

.TP
.B \-y, \-\-refresh
Refresh local repos.

.TP
.B \-q, \-\-quiet
Show less information.

.SH CHROOTCTL OPTIONS (APPLY TO \-C AND \-\-CHROOTCTL)
.TP
.B \-i, \-\-install
Install a package into the chroot.

\fB--noconfirm\fR can also be specified and will be forwarded to pacman.

.TP
.B \-u, \-\-sysupgrade
Upgrade the chroot.

.TP
.B \-p, \-\-print
Print path to currently configured chroot.

.SH BUILD OPTIONS (APPLY TO \-B AND \-\-BUILD)
.TP
.B \-i, \-\-install
Also install the package once built.

.SH NEW OPTIONS
.TP
.B \-\-repo
Assume all targets are from the repositories. Additionally, actions such as
sysupgrade will only act on repository packages.

.TP
.B \-a, \-\-aur
Assume all targets are from the AUR. Additionally, actions such as
sysupgrade will only act on AUR packages.

Note that dependency resolution will still include repository packages.

.TP
.B \--pkgbuilds
Assume all targets are from the PKGBUILD repositories. Additionally,
actions such as sysupgrade will only act on AUR packages.

Note that dependency resolution will still include repositoryi and AUR packages.

.TP
.B \-\-mode = aur|repo|pkgbuilds
Select what kinds of packages paru should act on. Multiple modes can be selected
by separating them with a comma.

Additionally, a, r and p may be used as short hand for aur, repo and pkgbuilds respectively.
Short form modes can also be combined without a comma.
E.g. \fB--mode=ar\fR or \fB--mode=arp\fR.


.TP
.B \-\-interactive
Enable interactive package selection for -S, -R, -Ss and -Qs.

For -S/-R this allows you to pick which packages to install/remove from a list.

\fB paru <foo>\fR is an alias to \fBparu -S --interactive <foo>\fR.

For -Ss/-Qs this allows you to interactively pick packages from the sync/local repos respectively.
This is intended to be chained with other package tools so paru can handle the menu work while the
other tool in the pipeline just gets the packages.

For example:

\fB paru -Ssaq --interactive ruby | paru -Gc -\fR

will show AUR packages containing the term ruby, give the user an interactive menu to pick packages, then pipeline
those packages into -Gc and display the comments.

Would allow a user to interactively choose what files to list.

.TP
.B \-\-aururl
Set an alternative AUR URL.

.TP
.B \-\-aurrpcurl
Set an alternative URL for the AUR /rpc endpoint.

.TP
.B \-\-clonedir <dir>
Directory used to download and run PKGBUILDs.

.TP
.B \-\-makepkg <command>
The command to use for \fBmakepkg\fR calls. This can be a command in
\fBPATH\fR or an absolute path to the file.

.TP
.B \-\-makepkgconf <file>
Specifies a \fBmakepkg.conf\fR file to use in the chroot environment. The file
can only be an absolute path to the file.

.TP
.B \-\-pacman <command>
The command to use for \fBpacman\fR calls. This can be a command in
\fBPATH\fR or an absolute path to the file.

.TP
.B \-\-pacman-conf <command>
The command to use for \fBpacman-conf\fR calls. This can be a command in
\fBPATH\fR or an absolute path to the file.

.TP
.B \-\-git <command>
The command to use for \fBgit\fR calls. This can be a command in
\fBPATH\fR or an absolute path to the file.

.TP
.B \-\-gitflags <flags>
Passes arguments to git. These flags get passed to every instance where
git is called by paru. Arguments are split on whitespace before being
passed to git. Multiple arguments may be passed by supplying a space
separated list that is quoted by the shell.

.TP
.B \-\-gpg <command>
The command to use for \fBgpg\fR calls. This can be a command in
\fBPATH\fR or an absolute path to the file.

.TP
.B \-\-gpgflags <flags>
Passes arguments to gpg. These flags get passed to every instance where
gpg is called by paru. Arguments are split on whitespace before being
passed to gpg. Multiple arguments may be passed by supplying a space
separated list that is quoted by the shell.

.TP
.B \-\-fm <command>
This enables fm review mode, where PKGBUILD review is done using the file
manager specified by command.

This allows the PKGBUILDs and related files to be edited. Changes won't
persist unless committed.

.TP
.B \-\-fmflags <flags>
Passes arguments to file manager. These flags get passed to every instance where
file manager is called by paru. Arguments are split on whitespace before being
passed to the file manager. Multiple arguments may be passed by supplying a space
separated list that is quoted by the shell.

.TP
.B \-\-asp <command>
The command to use for \fBasp\fR calls. This can be a command in
\fBPATH\fR or an absolute path to the file.

.TP
.B \-\-mflags <flags>
Passes arguments to makepkg. These flags get passed to every instance where
makepkg is called by paru. Arguments are split on whitespace before being
passed to makepkg. Multiple arguments may be passed by supplying a space
separated list that is quoted by the shell.

.TP
.B \-\-bat <command>
The command to use for \fBbat\fR calls. This can be a command in
\fBPATH\fR or an absolute path to the file.

.TP
.B \-\-batflags <flags>
Passes arguments to bat. These flags get passed to every instance where
bat is called by paru. Arguments are split on whitespace before being
passed to bat. Multiple arguments may be passed by supplying a space
separated list that is quoted by the shell.

.TP
.B \-\-sudo <command>
The command to use for \fBsudo\fR calls. This can be a command in
\fBPATH\fR or an absolute path to the file. The --sudoloop option is not
guaranteed to work with a custom \fBsudo\fR command.

.TP
.B \-\-sudoflags <flags>
Passes arguments to sudo. These flags get passed to every instance where
sudo is called by paru. Arguments are split on whitespace before being
passed to sudo. Multiple arguments may be passed by supplying a space
separated list that is quoted by the shell.

.TP
.B \-\-chrootflags <flags>
Passes arguments to makechrootpkg. These flags get passed to every instance
where makechrootpkg is called by paru. Arguments are split on whitespace before
being passed to makechrootpkg. Multiple arguments may be passed by supplying a
space separated list that is quoted by the shell.

.TP
.B \-\-chrootpkgs <package>
Installs package into the chroot before building. Multiple packages can be
specified by separating them with a comma.

Useful when PKGBUILDs don't declare needed dependencies.

Note that this is only a temp fix and only applies to this one build. You should
ideally patch the package yourself or report the problem to the maintainer.

If you want to permanently add a package to the chroot use \fBparu -Ci package\fR
to install packages into the root chroot, or use \-\-rootchrootpkgs to specify
packages that should be installed when the chroot is created.

.TP
.B \-\-rootchrootpkgs <packages>
Comma-separated list of packages to install when creating the root chroot.

Defaults to "base-devel" if not specified.

Unlike \-\-chrootpkgs (which installs packages temporarily before each build),
\-\-rootchrootpkgs packages become part of the root chroot and persist across
all builds.

This only affects chroot creation. To apply changes to an existing chroot,
you must delete and recreate it.

.TP
.B \-\-completioninterval <days>
Time in days to refresh the completion cache. Setting this to 0 will cause the
cache to be refreshed every time, while setting this to -1 will cause the cache
to never be refreshed. Defaults to 7.

.TP
.B \-\-sortby <votes|popularity|id|baseid|name|base|submitted|modified>
Sort AUR results by a specific field during search. Defaults to votes.

.TP
.B \-\-searchby <name|name-desc|maintainer|depends|checkdepends|makedepends|optdepends>
Search for AUR packages by querying the specified field. Defaults to name-desc.

.TP
.B \-\-skipreview
Skip the review process.

.TP
.B \-\-review
Don't skip the review process.

.TP
.B \-\-upgrademenu
Show a detailed list of updates in a similar format to pacman's VerbosePkgLists
option. (See 
.BR pacman.conf(5)).
Upgrades can be skipped using numbers, number ranges, or repo
names.

\fBWarning\fR: It is not recommended to skip updates from the repositories as
this can lead to partial upgrades. This feature is intended to easily skip AUR
updates on the fly that may be broken or have a long compile time. Ultimately
it is up to the user what upgrades they skip.

.TP
.B \-\-noupgrademenu
Do not show the upgrade menu.

.TP
.B \-\-removemake [yes|no|ask]
Remove makedepends after installing packages. If set to ask, a menu will appear
during builds allowing an option to be chosen then. Defaults to yes when
specified without an option.

.TP
.B \-\-noremovemake
Don't remove makedepends after installing packages.

.TP
.B \-\-topdown
Print search results from top to bottom. Repo packages will print first. This
is the default.

.TP
.B \-\-bottomup
Print search results from bottom to top. AUR packages will print first.

.TP
.B \-\-limit <limit>
Limit the number of packages returned in a search to the given amount. Defaults
to 0 (no limit). This applies separately to repo and AUR packages.

.TP
.B \-x, \-\-regex
Enable regex for aur search.

The regex will only be matched against pkgnames and not pkgdescs as you would
usually expect.

.TP
.B \-\-nocheck
Don't resolve checkdepends or run the check function.

.TP
.B \-\-installdebug
Also install debug packages when a package provides them.

.TP
.B \-\-noinstalldebug
Don't install debug packages when a package provides them.

.TP
.B \-\-devel
During sysupgrade also check AUR development packages for updates. Currently
only Git packages are supported.

Devel checking is done using \fBgit ls-remote\fR. The newest commit hash is
compared against the hash at install time. This allows devel updates to be
checked almost instantly and not require the original PKGBUILD to be downloaded.

The slower pacaur-like devel checks can be implemented manually by piping
a list of packages into paru (see \fBexamples\fR).

.TP
.B \-\-ignoredevel
Like --ignore but for devel upgrades. Packages matching this will not be tried for a
devel update but may still be upgraded if the pkgver changes.

.TP
.B \-\-nodevel
Do not check for development packages updates during sysupgrade.

.TP
.B \-\-develsuffixes
Suffixes that paru will use to decide if a package is a devel package. 
Used when determining if a pkgver bump is used when the --needed option is
set.

.TP
.B \-\-cleanafter
Remove untracked files after installation.

Untracked files are removed with the exception of directories. This allows VCS
packages to easily pull an update instead of having to reclone the entire repo.

.TP
.B \-\-nocleanafter
Do not remove package sources after successful install.

.TP
.B \-\-redownload [yes|no|all]
Always download PKGBUILDs of targets even when a copy is available in
cache. If all is specified, then PKGBUILDs will be downloaded for all packages,
not just targets. Defaults to yes when specified.

.TP
.B \-\-noredownload
When downloading PKGBUILDs, if the PKGBUILD is found in cache and is equal or
newer than the AUR's version use that instead of downloading a new one.

.TP
.B \-\-provides
Look for matching providers when searching for AUR packages. When multiple
providers are found a menu will appear prompting you to pick one. This
increases dependency resolve time although this should not be noticeable.

By default only targets and missing packages will be searched for providers.
Specifying all will enable this for all packages.

.TP
.B \-\-noprovides
Do not look for matching providers when searching for AUR packages. Paru will
never show its provider menu but pacman will still show its provider menu for
repo packages.

.TP
.B \-\-pgpfetch
Prompt to import unknown PGP keys from the \fBvalidpgpkeys\fR field of each
PKGBUILD.

.TP
.B \-\-nopgpfetch
Do not prompt to import unknown PGP keys. This is likely to cause a build
failure unless using options such as \fB\-\-skippgpcheck\fR or a customized
gpg config\%.


.TP
.B \-\-newsonupgrade
Print new news during sysupgrade.

.TP
.B \-\-useask
Use pacman's --ask flag to automatically confirm package conflicts. Paru lists
conflicts ahead of time. It is possible that paru does not detect a conflict, 
causing a package to be removed without the user's confirmation. However, this
is very unlikely.

.TP
.B \-\-nouseask
Manually resolve package conflicts during the install. Packages which do not
conflict will not need to be confined manually.

.TP
.B \-\-savechanges
Commit changes to pkgbuilds made during review.

.TP
.B \-\-nosavechanges
Don't commit changes to pkgbuilds made during review.

.TP
.B \-\-failfast
Exit as soon as any AUR packages fail to build.

By default Paru will continue and try to build other AUR packages.

.TP
.B \-\-nofailfast
Don't exit as soon as any AUR packages fail to build.

.TP
.B \-\-keepsrc
Keep src/ and pkg/ directories after building packages.

.TP
.B \-\-nokeepsrc
Don't keep src/ and pkg/ directories after building packages.

.TP
.B \-\-combinedupgrade
During sysupgrade, paru will first perform a refresh, then show
its combined menu of repo and AUR packages that will be upgraded. Then after
reviewing the PKGBUILDs, the repo and AUR upgrade will start with no need
for manual intervention.

If paru exits for any reason after the refresh without upgrading, it will be
the user's responsibility to either resolve the reason paru exited or run
a sysupgrade through pacman directly.

.TP
.B \-\-nocombinedupgrade
During sysupgrade, pacman \-Syu will be called, then the AUR upgrade will
start. This means the upgrade menu and PKGBUILD review will be performed
after the sysupgrade has finished.

.TP
.B \-\-batchinstall
When building and installing AUR packages instead of installing each package
after building, queue each package for install. Then once either all packages
are built or a package in the build queue is needed as a dependency to build
another package, install all the packages in the install queue.

.TP
.B \-\-nobatchinstall
Always install AUR packages immediately after building them.

.TP
.B \-\-rebuild [yes|no|all|tree]
Always build target packages even when a copy is available in cache. If all is
selected then all packages are rebuilt, not only targets. If tree is selected then
the whole dependency tree is rebuilt, including already satisfied dependencies.
Defaults to no.

.TP
.B \-\-norebuild
When building packages if the package is found in cache and is an equal version
to the one wanted skip the package build and use the existing package.

.TP
.B \-\-sudoloop [= args...]
Periodically call sudo in the background to prevent it from timing out during
long builds.

Optionally args can be passed to choose how to loop the command. This may be
useful for doas where looping is done differently.

.TP
.B \-\-nosudoloop
Do not loop sudo calls in the background.

.TP
.B \-\-localrepo [= Repos...]
Use a local repo to build and upgrade AUR packages.

Paru will act on packages in the enabled repos instead of foreign packages.
The repo must already be declared in pacman.conf but does not have to already exist on disk.

Optionally a list of repos to use can be passed. By default paru will consider all
local repos, building new packages into the first listed repo and upgrading the packages
in other enabled repos.

.TP
.B \-\-nolocalrepo
Do not build into a local repo.

.TP
.B \-\-chroot [= /path/to/chroot]
Build packages in a chroot. This requires the LocalRepo option to be enabled.
Optionally a directory may be passed to specify where to create the chroot.

.TP
.B \-\-nochroot
Don't build packages in a chroot.

.TP
.B \-\-sign [= key]
Sign packages with gpg. Optionally indicate which key to sign with.

.TP
.B \-\-nosign
Don't sign package with gpg.

.TP
.B \-\-keeprepocache
Normally upon AUR packages getting updated the old versions will be removed from the local repo.
This option disables that behavior, keeping the both all versions and only updating the DB.

.TP
.B \-\-nokeeprepocache
Don't keep old packages.

.TP
.B \-\-signdb [= key]
Sign databases with gpg. Optionally indicate which key to sign with.

.TP
.B \-\-nosigndb
Don't sign databases with gpg.

.SH EXAMPLES
.TP
paru \fIfoo\fR
Search and install from the repos and the \fBAUR\fR\ using interactive search
and install.

.TP
paru \-Syu
Update package list and upgrade all currently installed repo and \fBAUR\fR
packages.

.TP
paru \-Sua
Update all currently installed \fBAUR\fR packages.

.TP
paru \-S \fIfoo\fR
Installs package \fIfoo\fR from the repos or the \fBAUR\fR.

.TP
paru \-Ss \fIfoo\fR
Searches for package \fIfoo\fR on the repos or the \fBAUR\fR.

.TP
paru \-Si \fIfoo\fR
Gets information about package \fIfoo\fR from the repos or the \fBAUR\fR.

.TP
paru \-S \fIfoo\fR \-\-mflags "\-\-skipchecksums \-\-skippgpcheck"
Installs \fIfoo\fR while skipping checksums and PGP checks.

.TP
paru \-B .
Build PKGBUILD in current directory.

.TP
pacman -Qmq | grep -Ee '-(cvs|svn|git|hg|bzr|darcs)$' | paru -Ta - | paru -S --needed -
pacaur-like devel check.

.SH ENVIRONMENT VARIABLES

.TP
.B AURDEST
Can be set to configure the build directory.

Overridden by \-\-clonedir.

.TP
.B PARU_CONF
Overrides where paru will look for its config file.

.TP
.B PARU_PAGER
The pager paru will use for file review. Has higher priority than PAGER but lower priority
than paru.conf.

.SH FILES
.TP
.B CONFIG DIRECTORY
The config directory is \fI$XDG_CONFIG_HOME/paru/\fR. If
\fB$XDG_CONFIG_HOME\fR is unset, the config directory will fall back to
\fI$HOME/.config/paru\fR.

\fIparu.conf\fR is used to store all of paru's config options. See
.BR paru.conf (5)
for more about this file.

.TP
.B CACHE DIRECTORY
The cache directory is \fI$XDG_CACHE_HOME/paru/\fR. If
\fB$XDG_CACHE_HOME\fR is unset, the cache directory will fall back to
\fI$HOME/.cache/paru\fR.

\fIpackages.aur\fR holds a list of of all AUR packages for shell
completion. By default the completion files are refreshed every 7 days.

.TP
.B STATE DIRECTORY
The state directory is \fI$XDG_STATE_HOME/paru/\fR. If
\fB$XDG_STATE_HOME\fR is unset, the state directory will fall back to
\fI$HOME/.local/state/paru\fR.

\fIdevel.json\fR tracks VCS packages and the latest commit of each source. If
any of these commits change the package will be upgraded during a devel update.

.TP
.B BUILD DIRECTORY
Unless otherwise set this should be the same as \fBCACHE DIRECTORY\fR. This
directory is used to store downloaded AUR Packages as well as any source files
and built packages from those packages.

.TP
.B PACMAN.CONF
Paru uses pacman's config file to set certain pacman options either through
alpm.rs or paru itself. Options inherited include most libalpm options and
pacman options.

Notably: \fBDatabases\fR, \fBColor\fR and \fB*Path/*Dir\fR options are used.

.SH SEE ALSO
.BR paru.conf (5),
.BR makepkg (8),
.BR makepkg.conf (5),
.BR PKGBUILD (5),
.BR pacman (8),
.BR pacman.conf (5)

See the arch wiki at https://wiki.archlinux.org/index.php/Arch_User_Repository
for more info on the \fBAUR\fR.

.SH BUGS
Please report bugs to our GitHub page \fBhttps://github.com/Morganamilo/paru\fR.

.SH AUTHORS
Morgan <morganamilo@archlinux.org>


================================================
FILE: man/paru.conf.5
================================================
.TH "PARU.CONF" "5" "2021\-03\-24" "paru v1.10.0" "Paru Manual"
.nh
.ad l
.SH NAME
paru.conf \- paru configuration file

.SH SYNOPSIS
$PARU_CONF, $XDG_CONFIG_HOME/paru/paru.conf, $HOME/.config/paru/paru.conf, /etc/paru.conf

.SH DESCRIPTION
Paru's config file. Based on the format used by 
.BR pacman.conf (5)

Paru first attempts to read the file at $PARU_CONF. If $PARU_CONF is not
set, paru attempts to read from $XDG_CONFIG_HOME/paru/paru.conf. If
$XDG_CONFIG_HOME is not set, or the file doesn't exist, paru attempts to read
from $HOME/.config/paru/paru.conf. If that file doesn't exist, it will read
the system config from /etc/paru.conf.

Additionally, the \fBInclude\fB directive can be used to copy paste files into
the config. This could be used to extend the system config by including it in
your user's config and then defining options.

.SH OPTIONS
Options belonging to the [options] section.

.TP
.B BottomUp
Print search results from bottom to top. AUR results will be printed first.

.TP
.B AurOnly
Assume all targets are from the AUR. Additionally, actions such as
sysupgrade will only act on AUR packages.

Note that dependency resolving will still act normally and include repository
packages.

.TP
.B PkgbuildsOnly
Assume all targets are from PKGBUILD repositories. Additionally, actions such as
sysupgrade will only act on PKGBUILD repository packages.

Note that dependency resolving will still act normally and include repository
and AUR packages.

.TP
.B RepoOnly
Assume all targets are from the repositories. Additionally, actions such as
sysupgrade will only act on repository packages.

.TP
.B Mode = aur|repo|pkgbuilds
Select what kinds of packages paru should act on. Multiple modes can be selected
by separating them with a comma.

Additionally, a, r and p may be used as short hand for aur, repo and pkgbuilds respectively.
Short form modes can also be combined without a comma.
E.g. \fBMode = ar\fR or \fBMode = arp\fR.

.TP
.B SudoLoop [= args...]
Periodically call sudo in the background to prevent it from timing out during
long builds.

Optionally args can be passed to choose how to loop the command. This may be
useful for doas where looping is done differently.

.TP
.B NoCheck
Don't resolve checkdepends or run the check function.

.TP
.B InstallDebug
Also install debug packages when a package provides them.

.TP
.B Devel
During sysupgrade also check AUR development packages for updates. Currently
only Git packages are supported.

Devel checking is done using \fBgit ls-remote\fR. The newest commit hash is
compared against the hash at install time. This allows devel updates to be
checked almost instantly and not require the original PKGBUILD to be downloaded.

.TP
.B IgnoreDevel
Like IgnorePkg but for devel upgrades. Packages matching this will not be tried for a
devel update but may still be upgraded if the pkgver changes.

.TP
.B IgnoreDevelSource
Like IgnoreDevel but targets urls in the source=() array of pkgbuilds. This can be useful
if a package has a properly working main git source but also has an unversioned secondary
source that doesn't effect the pkgver.

.TP
.B CleanAfter
Remove untracked files after installation.

Untracked files are removed with the exception of directories.
This allows VCS packages to easily pull an update
instead of having to reclone the entire repo.

.TP
.B Provides [= all]
Look for matching providers when searching for AUR packages. When multiple
providers are found a menu will appear prompting you to pick one. This
increases dependency resolve time although this should not be noticeable.

By default only targets and missing packages will be searched for providers.
Specifying all will enable this for all packages.

.TP
.B PgpFetch
Prompt to import unknown PGP keys from the \fBvalidpgpkeys\fR field of each
PKGBUILD.

.TP
.B CombinedUpgrade
During sysupgrade, paru will first perform a refresh, then show
its combined menu of repo and AUR packages that will be upgraded. Then after
reviewing the PKGBUILDs, the repo and AUR upgrade will start with no need
for manual intervention.

If paru exits for any reason after the refresh without upgrading, it will be
the user's responsibility to either resolve the reason paru exited or run
a sysupgrade through pacman directly.

.TP
.B BatchInstall
When building and installing AUR packages; instead of installing each package
after building, queue each package for install. Then once either all packages
are built or a package in the build queue is needed as a dependency to build
another package, install all the packages in the install queue.

.TP
.B NewsOnUpgrade
Print new news during sysupgrade.

.TP
.B UseAsk
Use pacman's --ask flag to automatically confirm package conflicts. Paru lists
conflicts ahead of time. It is possible that paru does not detect
a conflict, causing a package to be removed without the user's confirmation.
However, this is very unlikely.

.TP
.B SaveChanges
Commit changes to pkgbuilds made during review.

.TP
.B FailFast
Exit as soon as any AUR packages fail to build.

By default Paru will continue and try to build other AUR packages.

.TP
.B KeepSrc
Keep src/ and pkg/ directories after building packages.

.TP
.B Redownload [= all]
Always download PKGBUILDs of targets even when a copy is available in cache. If
set to all then this applies to all packages, not only targets.

.TP
.B Rebuild [= all, tree]
Always build target packages even when a copy is available in cache. If set to
all, then all packages are rebuilt, not only targets. If set to tree, the whole
dependency tree is rebuilt, including already satisfied dependencies.

.TP
.B RemoveMake [= ask]
Remove makedepends after installing packages. If set to ask, a menu will appear
during builds allowing an option to be chosen then.

.TP
.B UpgradeMenu
Show a detailed list of updates in a similar format to pacman's VerbosePkgLists
option. (See 
.BR pacman.conf(5)).
Upgrades can be skipped using numbers, number ranges, or repo
names.

\fBWarning\fR: It is not recommended to skip updates from the repositories as
this can lead to partial upgrades. This feature is intended to easily skip AUR
updates on the fly that may be broken or have a long compile time. Ultimately
it is up to the user what upgrades they skip.

.TP
.B AurUrl = URL
Set an alternative AUR URL.

.TP
.B AurRpcUrl = URL
Set an alternative URL for the AUR /rpc endpoint.

.TP
.B CloneDir = /path/to/dir
Directory used to download and run PKGBUILDs.


.TP
.B SortBy = <votes|popularity|name|base|submitted|modified|id|baseid>
Defaults to votes. Sort AUR results according to the options in "Sort by"
visible here: https://aur.archlinux.org/packages/

.TP
.B SearchBy = <name|name-desc|maintainer|depends|checkdepends|makedepends|optdepends>
Defaults to name-desc. Search AUR packages according to the options in 
"Search by" visible here: https://aur.archlinux.org/packages/

.TP
.B Limit = N
Limit the number of packages returned in a search to the given amount. Defaults
to 0 (no limit). This applies separately to repo and AUR packages.

.TP
.B CompletionInterval = N
Time in days to refresh the completion cache. Setting this to 0 will cause the
cache to be refreshed every time, while setting this to -1 will cause the cache
to never be refreshed. Defaults to 7.

.TP
.B PacmanConf = path/to/pacman.conf
The pacman config file to use.

.TP
.B MakepkgConf = path/to/makepkg.conf
The makepkg config file to use.

.TP
.B DevelSuffixes = Suffixes...
Suffixes that paru will use to decide if a package is a devel package.
Used when determining if a pkgver bump is used when the --needed option is
set.

.TP
.B NoWarn = Packages...
Don't warn when these packages are not in the aur, out of date, or orphaned.

.TP
.B LocalRepo [= Repos...]
Use a local repo to build and upgrade AUR packages.

Paru will act on packages in the enabled repos instead of foreign packages.
The repo must already be declared in pacman.conf but does not have to already exist on disk.

Optionally a list of repos to use can be passed. By default paru will consider all
local repos, building new packages into the first listed repo and upgrading the packages
in other enabled repos.

.TP
.B Chroot [= path/to/chroot]
Build packages in a chroot. This requires the LocalRepo option to be enabled.
Optionally a directory may be passed to specify where to create the chroot.

.TP
.B Sign [= key]
Sign packages with gpg. Optionally indicate which key to sign with.

.TP
.B SignDb [= key]
Sign databases with gpg. Optionally indicate which key to sign with.

.TP
.B KeepRepoCache
Normally upon AUR packages getting updated the old versions will be removed from the local repo.
This option disables that behavior, keeping the both all versions and only updating the DB.

.TP
.B SkipReview
Skip the review process.

.SH BIN
Options belonging to the [bin] section.

.TP
.B Makepkg = path/to/makepkg
The command to use for \fBmakepkg\fR calls. This can be a command in
\fBPATH\fR or an absolute path to the file.

.TP
.B Pacman = path/to/pacman
The command to use for \fBpacman\fR calls. This can be a command in
\fBPATH\fR or an absolute path to the file.

.TP
.B PacmanConf = path/to/pacman-conf
The command to use for \fBpacman-conf\fR calls. This can be a command in
\fBPATH\fR or an absolute path to the file.

.TP
.B Git = path/to/git
The command to use for \fBgit\fR calls. This can be a command in
\fBPATH\fR or an absolute path to the file.

.TP
.B Asp = path/to/asp
The command to use for \fBasp\fR calls. This can be a command in
\fBPATH\fR or an absolute path to the file.

.TP
.B Bat = path/to/bat
The command to use for \fBbat\fR calls. This can be a command in
\fBPATH\fR or an absolute path to the file.

.TP
.B Sudo = path/to/sudo
The command to use for \fBsudo\fR calls. This can be a command in
\fBPATH\fR or an absolute path to the file. The SudoLoop option is not
guaranteed to work with a custom \fBsudo\fR command.

.TP
.B FileManager = path/to/fm
This enables fm review mode, where PKGBUILD review is done using the file
manager specified by command.

This allows the PKGBUILDs and related files to be edited. Changes won't
persist unless committed.

.TP
.B MFlags = Flags...
Passes arguments to makepkg. These flags get passed to every instance where
makepkg is called by paru. Arguments are split on whitespace before being
passed to makepkg.

.TP
.B GitFlags = Flags...
Passes arguments to git. These flags get passed to every instance where
git is called by paru. Arguments are split on whitespace before being
passed to git.
.TP

.B GpgFlags = Flags...
Passes arguments to gpg. These flags get passed to every instance where
gpg is called by paru. Arguments are split on whitespace before being
passed to gpg.

.TP
.B BatFlags = Flags...
Passes arguments to bat. These flags get passed to every instance where
bat is called by paru. Arguments are split on whitespace before being
passed to bat.

.TP
.B SudoFlags = Flags...
Passes arguments to sudo. These flags get passed to every instance where
sudo is called by paru. Arguments are split on whitespace before being
passed to sudo.

.TP
.B FileManagerFlags = Flags...
Passes arguments to the file manager. These flags get passed to every instance
where file manager is called by paru. Arguments are split on whitespace before
being passed to file manager.

.TP
.B ChrootFlags = Flags...
Passes arguments to makechrootpkg. These flags get passed to every instance
where makechrootpkg is called by paru. Arguments are split on whitespace before
being passed to makechrootpkg.

.TP
.B RootChrootPkgs = Packages...
Space-separated list of packages to install when creating the root chroot.

Defaults to "base-devel" if not specified.

Unlike \-\-chrootpkgs (which installs packages temporarily before each build),
\-\-rootchrootpkgs packages become part of the root chroot and persist across
all builds.

This only affects chroot creation. To apply changes to an existing chroot,
you must delete and recreate it.

.TP
.B Pager = Command
Command to use for paging

.TP
.B PreBuildCommand = Command
Command will be executed for each package before it is built.

The command will be run via 'sh -c' and the command's current directory will be
set to the directory containing the package's PKGBUILD. If a package is already
built then the build will be skipped but this command will still be run for
that package.

The variables PKGBASE and VERSION will be set for the command to use.

.SH ENV
Set environment variables.

.TP
.B Key = Value
Sets the environment variable Key to Value.


.SH PKGBUILD REPOSITORY SECTION
PKGBUILD repositories can be defined by adding a [reponame] section, where reponame
is the name of the repository you wish to add.

A PKGBUILD repository acts very much like the AUR in terms of package installation
and upgrades. Packages in PKGBUILD repositories also take priority over the AUR so
may be used to mask packages.

The layout of a PKGBUILD repository is simply a directory that contains PKGBUILDs.
Paru will recursively scan a repository for PKGBUILDs, up to 3 levels by default.

Paru will refresh PKGBUILD repositories when it refreshes repository databases.
Refreshing just PKGBUILD repositories can be done with \fBparu -Sya\fR.

.TP
.B Url = https://path/to/repo
Git URL to the PKGBUILD repository. File paths may be used to point to git repos on
disk.

If \fBPath\fR is specified alongside \fBUrl\fR, the specified path will be treated as
a subdirectory of the repository and paru will only search for pkgbuilds in that
subdirectory.

.TP
.B Path = /path/to/repo
Can be used as an alternative to \fBURL\fR to point to a PKGBUILD repository on disk.
Unlike using a URL path, changes to this directory are propagated to paru immediately
and not on \fBparu -Sya\fR. There is also no review step for this kind of repository.

.TP
.B Depth = N
The search depth for PKGBUILD scanning.

.TP
.B SkipReview
Skip review for this repository.

.TP
.B GenerateSrcinfo
Force regeneration of the .SRCINFO file even if it exists on disk. This is useful for
repositories that forget to update their .SRCINFO files.


================================================
FILE: paru.conf
================================================
#
# $PARU_CONF
# /etc/paru.conf
# ~/.config/paru/paru.conf
#
# See the paru.conf(5) manpage for options

#
# GENERAL OPTIONS
#
[options]
PgpFetch
Devel
Provides
DevelSuffixes = -git -cvs -svn -bzr -darcs -always -hg -fossil
#AurOnly
#BottomUp
#RemoveMake
#SudoLoop
#UseAsk
#SaveChanges
#CombinedUpgrade
#CleanAfter
#UpgradeMenu
#NewsOnUpgrade

#LocalRepo
#Chroot
#Sign
#SignDb
#KeepRepoCache

#
# Binary OPTIONS
#
#[bin]
#FileManager = vifm
#MFlags = --skippgpcheck
#Sudo = doas


================================================
FILE: po/ca.po
================================================
# Paru Catalan translation
# Copyright (C) 2021
# This file is distributed under the same license as the paru package.
# Ícar Nin Solana <icar.nin@protonmail.com>, 2021.
#
msgid ""
msgstr ""
"Project-Id-Version: paru VERSION\n"
"Report-Msgid-Bugs-To: https://github.com/Morganamilo/paru\n"
"POT-Creation-Date: 2026-01-08 17:40+0000\n"
"PO-Revision-Date: 2022-12-08 01:06+0100\n"
"Last-Translator: Ícar N. S. <icar.nin@protonmail.com>\n"
"Language-Team: \n"
"Language: ca\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 3.1.1\n"

#: src/clean.rs:36
msgid "Do you want to clean ALL AUR packages from cache?"
msgstr "Voleu eliminar TOTS els paquets de l'AUR de la memòria cau?"

#: src/clean.rs:38
msgid "Do you want to clean all other AUR packages from cache?"
msgstr "Voleu eliminar tots els altres paquets de l'AUR de la memòria cau?"

#: src/clean.rs:41
msgid "Clone Directory: {}"
msgstr "Clonar el directori: {}"

#: src/clean.rs:47
msgid ""
"\n"
"Diff Directory: {}"
msgstr ""
"\n"
"Directori diff: {}"

#: src/clean.rs:49
msgid "Do you want to remove all saved diffs?"
msgstr "Voleu eliminar totes les diferències (diff) desades?"

#: src/clean.rs:65
msgid "can't open diff dir: {}"
msgstr "no es pot obrir el directori de diferències: {}"

#: src/clean.rs:76 src/clean.rs:180
msgid "could not remove '{}'"
msgstr "no s'ha pogut eliminar «{}»"

#: src/clean.rs:95
msgid "can't open clone dir: {}"
msgstr "no es pot obrir el directori de clonar: {}"

#: src/clean.rs:141
#, fuzzy
msgid "could not parse .SRCINFO for '{}'"
msgstr "no s'ha pogut trobar .SRINFO per a '{}'"

#: src/command_line.rs:134
msgid "option {} expects a value"
msgstr "l'opció {} espera un valor"

#: src/command_line.rs:165 src/command_line.rs:382
msgid "option {} does not allow a value"
msgstr "l'opció {} no permet un valor"

#: src/command_line.rs:373
msgid "unknown option --{}"
msgstr "opció desconeguda --{}"

#: src/command_line.rs:376
msgid "unknown option -{}"
msgstr "opció desconeguda -{}"

#: src/completion.rs:26 src/search.rs:179 src/sync.rs:113
#, fuzzy
msgid "failed to decode package list"
msgstr "no s'han pogut baixar les fonts"

#: src/completion.rs:35
msgid "failed to open cache file '{}'"
msgstr "no s'ha pogut obrir el fitxer de la memòria cau «{}»"

#: src/completion.rs:83
msgid "could not update aur cache"
msgstr "no s'ha pogut actualitzar la memòria cau de l'AUR"

#: src/config.rs:179
msgid "invalid value '{val}' for key '{key}', expected: {exp}"
msgstr "valor '{val}' no vàlid per a la clau '{key}', s'esperava: {exp}"

#: src/config.rs:332
msgid "unknown mode {}"
msgstr "mode desconegut {}"

#: src/config.rs:564
msgid "section can not be called {}"
msgstr "la secció no pot ser cridada {}"

#: src/config.rs:581
msgid "failed to find cache directory"
msgstr "no s'ha pogut trobar el directori de la memòria cau"

#: src/config.rs:584
msgid "failed to find config directory"
msgstr "no s'ha pogut trobar el directori de configuració"

#: src/config.rs:588
msgid "failed to find state directory"
msgstr "no s'ha pogut trobar el directori d'estat"

#: src/config.rs:635
msgid "config file '{}' does not exist"
msgstr "el fitxer de configuració '{}' no existeix"

#: src/config.rs:684
msgid "only one operation may be used at a time"
msgstr "només es pot utilitzar una operació alhora"

#: src/config.rs:795
msgid "no local repo named {}"
msgstr ""

#: src/config.rs:821
msgid "can not find local repo '{}' in pacman.conf"
msgstr "no es pot trobar el dipòsit local '{}' al pacman.conf"

#: src/config.rs:866
msgid "failed to initialize alpm: root={} dbpath={}"
msgstr "no s'ha pogut inicialitzar l'alpm: arrel={} dbpath={}"

#: src/config.rs:941 src/config.rs:1102
msgid "value can not be empty for key '{}'"
msgstr "el valor no pot estar buit per a la clau '{}'"

#: src/config.rs:957
msgid "key '{}' does not belong to a section"
msgstr "la clau '{}' no pertany a una secció"

#: src/config.rs:971 src/config.rs:988 src/config.rs:990 src/config.rs:1005
msgid "key can not be empty"
msgstr "la clau no pot estar buida"

#: src/config.rs:981
msgid "error: unknown option '{}' in repo"
msgstr "error: opció desconeguda '{}' al dipòsit"

#: src/config.rs:991
msgid "key can not contain null bytes"
msgstr "la clau no pot contenir bytes nuls"

#: src/config.rs:994
msgid "value can not contain null bytes"
msgstr "el valor no pot contenir bytes nuls"

#: src/config.rs:1030
msgid "error: unknown option '{}' in section [bin]"
msgstr "error: opció desconeguda '{}' a la secció [bin]"

#: src/config.rs:1150
msgid "error: unknown option '{}' in section [options]"
msgstr "error: opció desconeguda '{}' a la secció [opcions]"

#: src/config.rs:1155
msgid "option '{}' does not take a value"
msgstr "l'opció '{}' no pren cap valor"

#: src/config.rs:1187 src/resolver.rs:136
msgid "There are {n} providers available for {pkg}:"
msgstr "Hi ha {n} proveïdors disponibles per a {pkg}:"

#: src/config.rs:1201 src/info.rs:85 src/info.rs:190 src/info.rs:224
#: src/resolver.rs:95 src/resolver.rs:144
msgid "Repository"
msgstr "Repositori"

#: src/config.rs:1227
msgid "  failed to sync {}"
msgstr " no s'ha pogut sincronitzar {}"

#: src/devel.rs:136 src/download.rs:207
msgid "Querying AUR..."
msgstr "S'està consultant l'AUR..."

#: src/devel.rs:157 src/devel.rs:181 src/install.rs:203
msgid "failed to parse srcinfo for '{}'"
msgstr "no s'ha pogut analitzar «srcinfo» per a «{}»"

#: src/devel.rs:201
msgid "Looking for devel repos..."
msgstr "Buscant repositoris de desenvolupament..."

#: src/devel.rs:210
msgid "failed to save devel info"
msgstr "no s'ha pogut desar la informació de desenvolupament"

#: src/devel.rs:218
msgid "failed to create state directory: {}"
msgstr "no s'ha pogut crear el directori d'estat {}"

#: src/devel.rs:233
msgid "failed to create temporary file: {}"
msgstr "no s'ha pogut crear el fitxer temporal {}"

#: src/devel.rs:238
msgid "failed to write to temporary file: {}"
msgstr "no s'ha pogut escriure al fitxer temporal {}"

#: src/devel.rs:244
#, fuzzy
msgid "failed to rename '{temp}' to '{devel_toml}"
msgstr "ha fallat reanomenar '{temp}' a '{devel_json}'"

#: src/devel.rs:490
msgid "package does not have an update"
msgstr "el paquet no té cap actualització"

#: src/devel.rs:536
msgid "failed to lookup: {}"
msgstr "no s'ha pogut cercar: {}"

#: src/devel.rs:564
#, fuzzy
msgid "invalid toml: {}"
msgstr "json no vàlid: {}"

#: src/download.rs:100
msgid "packages not in the AUR: "
msgstr "paquets no a l'AUR: "

#: src/download.rs:111
msgid "marked out of date: "
msgstr "marcat com a no actualitzat: "

#: src/download.rs:122
msgid "orphans: "
msgstr "orfes: "

#: src/download.rs:260
msgid "downloading: {pkg}"
msgstr "descarregant: {pkg}"

#: src/download.rs:279 src/download.rs:602 src/info.rs:55 src/info.rs:180
#: src/query.rs:49
msgid "package '{}' was not found"
msgstr "no s'ha trobat el paquet '{}'"

#: src/download.rs:291
#, fuzzy
msgid "duplicate PKGBUILD: {}"
msgstr "paquets duplicats: {}"

#: src/download.rs:307
msgid "package '{}' exists but has no PKGBUILD -- skipping"
msgstr ""

#: src/download.rs:340
msgid "Downloading PKGBUILDs..."
msgstr "S'estan baixant els PKGBUILDs..."

#: src/download.rs:344
msgid " PKGBUILDs up to date"
msgstr " PKGBUILDs al dia"

#: src/exec.rs:72
msgid "failed to run:"
msgstr "no s'ha pogut executar:"

#: src/exec.rs:174
msgid "Pacman is currently in use, please wait..."
msgstr "Actualment, Pacman està en ús, espereu..."

#: src/fmt.rs:24 src/info.rs:275 src/search.rs:293 src/search.rs:350
msgid "None"
msgstr "Cap"

#: src/fmt.rs:245
msgid "Repo"
msgstr "Repo"

#: src/fmt.rs:252
msgid "Repo Make"
msgstr "Construcció del repositori"

#: src/fmt.rs:272
msgid "Pkgbuilds Make"
msgstr "Construcció dels PKGBUILD"

#: src/fmt.rs:274
msgid "Aur Make"
msgstr "Construcció de l'AUR"

#: src/fmt.rs:319
msgid "Repo ({})"
msgstr "Dipòsit ({})"

#: src/fmt.rs:327
msgid "Old Version"
msgstr "Versió antiga"

#: src/fmt.rs:328
msgid "New Version"
msgstr "Versió nova"

#: src/fmt.rs:329
msgid "Make Only"
msgstr "Només construeix"

#: src/fmt.rs:330
msgid "Yes"
msgstr "Sí"

#: src/fmt.rs:331 src/info.rs:221
msgid "No"
msgstr "No"

#: src/fmt.rs:419
msgid "insufficient columns available for table display"
msgstr "no hi ha suficients columnes per a la visualització com a taula"

#: src/help.rs:4
msgid "Usage:"
msgstr "Ús:"

#: src/help.rs:5
msgid "    paru"
msgstr "    paru"

#: src/help.rs:6
msgid "    paru <operation> [...]"
msgstr "    paru <operació> [...]"

#: src/help.rs:7
msgid "    paru <package(s)>"
msgstr "    paru <paquet(s)>"

#: src/help.rs:9
msgid "Pacman operations:"
msgstr "Operacions del Pacman:"

#: src/help.rs:10
msgid "    paru {-h --help}"
msgstr "    paru {-h --help}"

#: src/help.rs:11
msgid "    paru {-V --version}"
msgstr "    paru {-V --version}"

#: src/help.rs:12
msgid "    paru {-D --database}    <options> <package(s)>"
msgstr "    paru {-D --database}    <opcions> <paquet(s)>"

#: src/help.rs:13
msgid "    paru {-F --files}       [options] [package(s)]"
msgstr "    paru {-F --files}       [opcions] [paquet(s)]"

#: src/help.rs:14
msgid "    paru {-Q --query}       [options] [package(s)]"
msgstr "    paru {-Q --query}       [opcions] [paquet(s)]"

#: src/help.rs:15
msgid "    paru {-R --remove}      [options] <package(s)>"
msgstr "    paru {-R --remove}      [opcions] <paquet(s)>"

#: src/help.rs:16
msgid "    paru {-S --sync}        [options] [package(s)]"
msgstr "    paru {-S --sync}        [opcions] [paquet(s)]"

#: src/help.rs:17
msgid "    paru {-T --deptest}     [options] [package(s)]"
msgstr "    paru {-T --deptest}     [opcions] [paquet(s)]"

#: src/help.rs:18
msgid "    paru {-U --upgrade}     [options] [file(s)]"
msgstr "    paru {-U --upgrade}     [opcions] [fitxer(s)]"

#: src/help.rs:20
msgid "New operations:"
msgstr "Operacions noves:"

#: src/help.rs:21
msgid "    paru {-P --show}        [options]"
msgstr "    paru {-P --show}        [opcions]"

#: src/help.rs:22
msgid "    paru {-G --getpkgbuild} [package(s)]"
msgstr "    paru {-G --getpkgbuild} [paquet(s)]"

#: src/help.rs:23
msgid "    paru {-B --build}       [dir(s)]"
msgstr "    paru {-B --build}       [dir(s)]"

#: src/help.rs:25
msgid "If no arguments are provided 'paru -Syu' will be performed"
msgstr "Si no es proveeixen arguments, s'executarà 'paru -Syu'"

#: src/help.rs:27
msgid "Options without operation:"
msgstr "Opcions sense operació:"

#: src/help.rs:28
msgid "    -c --clean            Remove unneeded dependencies"
msgstr "    -c --clean            Elimina els paquets no necessaris"

#: src/help.rs:29
msgid ""
"       --gendb            Generates development package DB used for updating"
msgstr ""
"       --gendb            Genera la base de dades dels paquets de "
"desenvolupament usada per actualitzar"

#: src/help.rs:31
msgid "New options:"
msgstr "Opcions noves:"

#: src/help.rs:32
msgid "       --repo              Assume targets are from the repositories"
msgstr ""
"       --repo              Assumeix que els paquets són dels repositoris"

#: src/help.rs:33
msgid ""
"       --pkgbuilds         Assume targets are from pkgbuild repositories"
msgstr ""
"       --pkgbuilds         Assumeix que els objectius són de dipòsits de "
"PKGBUILDs"

#: src/help.rs:34
msgid "    -a --aur               Assume targets are from the AUR"
msgstr "    -a --aur               Assumeix que els paquets són de l'AUR"

#: src/help.rs:35
msgid "    --mode      <mode>     Sets where paru looks for targets"
msgstr "    --mode      <mode>     Indica on el paru busca objectius"

#: src/help.rs:37
msgid ""
"    --interactive          Enable interactive package selection for -S, -R, "
"-Ss and -Qs"
msgstr ""

#: src/help.rs:39
msgid "    --aururl    <url>      Set an alternative AUR URL"
msgstr "    --aururl    <url>      Especifica una URL alternativa per l'AUR"

#: src/help.rs:40
msgid ""
"    --aurrpcur  <url>      Set an alternative URL for the AUR /rpc endpoint"
msgstr ""
"    --aurrpcur  <url>      Indica una URL alternativa per l'endpoint /rpc de "
"l'AUR"

#: src/help.rs:41
msgid "    --clonedir  <dir>      Directory used to download and run PKGBUILDs"
msgstr ""
"    --clonedir  <dir>      El directori usat per descarregar i executar els "
"PKGBUILD"

#: src/help.rs:43
msgid "    --makepkg   <file>     makepkg command to use"
msgstr "    --makepkg   <file>     La comanda «makepkg» a usar"

#: src/help.rs:44
msgid "    --mflags    <flags>    Pass arguments to makepkg"
msgstr "    --mflags    <flags>    Passa arguments al «makepkg»"

#: src/help.rs:45
msgid "    --pacman    <file>     pacman command to use"
msgstr "    --pacman    <file>     La comanda «pacman» a usar"

#: src/help.rs:46
msgid "    --git       <file>     git command to use"
msgstr "    --git       <file>     La comanda «git» a usar"

#: src/help.rs:47
msgid "    --gitflags  <flags>    Pass arguments to git"
msgstr "    --gitflags  <flags>     Passa arguments al «git»"

#: src/help.rs:48
msgid "    --sudo      <file>     sudo command to use"
msgstr "    --sudo      <file>     La comanda «sudo» a usar"

#: src/help.rs:49
msgid "    --sudoflags <flags>    Pass arguments to sudo"
msgstr "    --sudoflags <flags>    Passa arguments al «sudo»"

#: src/help.rs:50
#, fuzzy
msgid "    --pkgctl    <file>     pkgctl command to use"
msgstr "    --git       <file>     La comanda «git» a usar"

#: src/help.rs:51
msgid "    --bat       <file>     bat command to use"
msgstr "    --bat       <file>     La comanda «bat» a usar"

#: src/help.rs:52
msgid "    --batflags  <flags>    Pass arguments to bat"
msgstr "    --batflags  <flags>    Passa arguments al «bat»"

#: src/help.rs:53
msgid "    --gpg       <file>     gpg command to use"
msgstr "    --gpg       <file>     La comanda «gpg» a usar"

#: src/help.rs:54
msgid "    --gpgflags  <flags>    Pass arguments to gpg"
msgstr "    --gpgflags  <flags>    Passa arguments al «gpg»"

#: src/help.rs:55
msgid "    --fm        <file>     File manager to use for PKGBUILD review"
msgstr ""
"    --fm        <file>     Gestor de fitxers usat per revisar els PKGBUILD"

#: src/help.rs:56
msgid "    --fmflags   <flags>    Pass arguments to file manager"
msgstr "    --fmflags   <flags>    Passa arguments al gestor de fitxers"

#: src/help.rs:58
msgid "    --completioninterval   <n> Time in days to refresh completion cache"
msgstr ""
"    --completioninterval   <n> Temps en dies per refrescar la memòria cau de "
"compleció"

#: src/help.rs:59
msgid ""
"    --sortby    <field>    Sort AUR results by a specific field during search"
msgstr ""
"    --sortby    <field>    Ordena els resultats de la cerca a l'AUR per un "
"camp específic"

#: src/help.rs:60
msgid "    --searchby  <field>    Search for packages using a specified field"
msgstr "    --searchby  <field>    Cerca paquets per un camp específic"

#: src/help.rs:61
msgid ""
"    --limit     <limit>    Limits the number of items returned in a search"
msgstr ""
"    --limit     <límit>    Limita el número d'ítems retornats en una cerca"

#: src/help.rs:62
msgid "    -x --regex             Enable regex for aur search"
msgstr "    -x --regex             Habilita regex a la cerca a l'AUR"

#: src/help.rs:64
msgid "    --skipreview           Skip the review process"
msgstr "    --skipreview           Omet el procés de revisió"

#: src/help.rs:65
msgid "    --review               Don't skip the review process"
msgstr "    --review               No ometis el procés de revisió"

#: src/help.rs:66
msgid "    --[no]upgrademenu      Show interactive menu to skip upgrades"
msgstr ""
"    --[no]upgrademenu      Mostra un menú interactiu per ometre "
"actualitzacions"

#: src/help.rs:67
msgid "    --[no]removemake       Remove makedepends after install"
msgstr ""
"    --[no]removemake       Esborra les dependències de construcció després "
"de la instal·lació"

#: src/help.rs:68
msgid "    --[no]cleanafter       Remove package sources after install"
msgstr ""
"    --[no]cleanafter       Elimina les fonts dels paquets després de la "
"instal·lació"

#: src/help.rs:69
msgid "    --[no]rebuild          Always build target packages"
msgstr "    --[no]rebuild          Construeix sempre els paquets objectiu"

#: src/help.rs:70
msgid "    --[no]redownload       Always download PKGBUILDs of targets"
msgstr "    --[no]redownload       Descarrega sempre els PKGBUILD dels paquets"

#: src/help.rs:72
msgid "    --[no]pgpfetch         Prompt to import PGP keys from PKGBUILDs"
msgstr ""
"    --[no]pgpfetch         Pregunta si importar les claus PGP dels PKGBUILD"

#: src/help.rs:73
msgid ""
"    --[no]useask           Automatically resolve conflicts using pacman's "
"ask flag"
msgstr ""
"    --[no]useask           Resol els conflictes automàticament usant la "
"opció «ask» de Pacman"

#: src/help.rs:74
msgid ""
"    --[no]savechanges      Commit changes to pkgbuilds made during review"
msgstr ""
"    --[no]savechanges      Comet els canvis als PKGBUILD fets durant la "
"revisió"

#: src/help.rs:75
msgid "    --[no]newsonupgrade    Print new news during sysupgrade"
msgstr ""
"    --[no]newsonupgrade    Mostra notícies noves a l'actualitzar el sistema"

#: src/help.rs:76
msgid ""
"    --[no]combinedupgrade  Refresh then perform the repo and AUR upgrade "
"together"
msgstr ""
"    --[no]combinedupgrade  Refresca i després porta a terme les "
"actualizacions dels repositoris i l'AUR conjuntament"

#: src/help.rs:77
msgid ""
"    --[no]batchinstall     Build multiple AUR packages then install them "
"together"
msgstr ""
"    --[no]batchinstall     Construeix múltiples paquets de l'AUR i després "
"instal·la'ls conjuntament"

#: src/help.rs:78
msgid ""
"    --[no]provides         Look for matching providers when searching for "
"packages"
msgstr ""
"    --[no]provides         Busca proveïdors que coincideixin quan es busquin "
"paquets"

#: src/help.rs:79
msgid "    --[no]devel            Check development packages during sysupgrade"
msgstr ""
"    --[no]devel            Comprova els paquets de desenvolupament durant "
"una actualització del sistema"

#: src/help.rs:80
msgid ""
"    --[no]installdebug     Also install debug packages when a package "
"provides them"
msgstr ""
"    --[no]installdebug     També instal·la paquets de depuració quan un "
"paquet els proveeix"

#: src/help.rs:81
msgid ""
"    --[no]sudoloop         Loop sudo calls in the background to avoid timeout"
msgstr ""
"    --[no]sudoloop         Fes crides periòdiques a «sudo» per evitar el "
"temps d'espera"

#: src/help.rs:82
msgid "    --[no]chroot           Build packages in a chroot"
msgstr "    --[no]chroot           Construeix els paquets en un «chroot»"

#: src/help.rs:83
msgid ""
"    --[no]failfast         Exit as soon as building an AUR package fails"
msgstr "    --[no]failfast         Surt quan un paquet de l'AUR falli"

#: src/help.rs:84
msgid ""
"    --[no]keepsrc          Keep src/ and pkg/ dirs after building packages"
msgstr ""
"    --[no]keepsrc          Mantingues els directoris src/ i pkg/ després de "
"construir els paquets"

#: src/help.rs:85
msgid "    --[no]sign             Sign packages with gpg"
msgstr "    --[no]sign             Firma els paquets amb gpg"

#: src/help.rs:86
msgid "    --[no]signdb           Sign databases with gpg"
msgstr "    --[no]signdb           Signa les bases de dades amb gpg"

#: src/help.rs:87
#, fuzzy
msgid "    --[no]localrepo        Build packages into a local repo"
msgstr ""
"    --localrepo            Afegeix els paquets construïts a un repositori "
"local"

#: src/help.rs:88
msgid ""
"    --nocheck              Don't resolve checkdepends or run the check "
"function"
msgstr ""
"    --nocheck              No resolguis els «checkdepends» o executis la "
"funció «check»"

#: src/help.rs:90
msgid ""
"    --rootchrootpkgs       Packages to install in the root chroot (default: "
"base-devel)"
msgstr ""

#: src/help.rs:92
msgid ""
"    --develsuffixes        Suffixes used to decide if a package is a devel "
"package"
msgstr ""
"    --develsuffixes        Sufixos utilitzats per decidir si un paquet és un "
"paquet de desenvolupament"

#: src/help.rs:93
#, fuzzy
msgid "    --ignoredevel          Ignore devel upgrades for specified packages"
msgstr ""
"    --ignoredevel          Ignora les actualitzacions dels paquets de "
"desenvolupament pels paquets especificats"

#: src/help.rs:94
msgid ""
"    --bottomup             Shows AUR's packages first and then repository's"
msgstr "    --bottomup             Mostra els paquets de l'AUR primerament"

#: src/help.rs:95
msgid ""
"    --topdown              Shows repository's packages first and then AUR's"
msgstr ""
"    --topdown              Mostra els paquets dels repositoris primerament"

#: src/help.rs:97
msgid "show specific options:"
msgstr "opcions específiques de «show»:"

#: src/help.rs:98
msgid "    -c --complete         Used for completions"
msgstr "    -c --complete         Utilitzat per complecions"

#: src/help.rs:99
msgid "    -s --stats            Display system package statistics"
msgstr ""
"    -s --stats            Mostra estadístiques dels paquets del sistema"

#: src/help.rs:100
msgid "    -w --news             Print arch news"
msgstr "    -w --news             Mostra notícies de l'Arch"

#: src/help.rs:102
msgid "getpkgbuild specific options:"
msgstr "opcions específiques de «getpkgbuild»:"

#: src/help.rs:103
msgid "    -p --print            Print pkgbuild to stdout"
msgstr "    -p --print            Imprimeix el PKGBUILD a «stdout»"

#: src/help.rs:104
msgid "    -c --comments         Print AUR comments for pkgbuild"
msgstr ""
"    -c --comments         Imprimeix els comentaris de l'AUR pel PKGBUILD"

#: src/help.rs:105
msgid "    -s --ssh              Clone package using SSH"
msgstr "    -s --ssh              Clona el paquet usant SSH"

#: src/help.rs:107
msgid "Build specific options:"
msgstr "Opcions específiques de construcció:"

#: src/help.rs:108
msgid "    -i --install          Install package as well as building"
msgstr "    -i --install          Construeix i instal·la el(s) paquet(s)"

#: src/info.rs:86 src/info.rs:191 src/info.rs:225
msgid "Name"
msgstr "Nom"

#: src/info.rs:87 src/info.rs:192 src/info.rs:226
msgid "Version"
msgstr "Versió"

#: src/info.rs:88 src/info.rs:193 src/info.rs:227
msgid "Description"
msgstr "Descripció"

#: src/info.rs:89 src/info.rs:195 src/info.rs:235
msgid "Groups"
msgstr "Grups"

#: src/info.rs:90 src/info.rs:196 src/info.rs:236
msgid "Licenses"
msgstr "Llicències"

#: src/info.rs:91 src/info.rs:197 src/info.rs:237
msgid "Provides"
msgstr "Proporciona"

#: src/info.rs:92 src/info.rs:198 src/info.rs:238
msgid "Depends On"
msgstr "Depèn de"

#: src/info.rs:93 src/info.rs:199 src/info.rs:239
msgid "Make Deps"
msgstr "Dependències de construcció"

#: src/info.rs:94 src/info.rs:200 src/info.rs:240
msgid "Check Deps"
msgstr "Comprova les dependències"

#: src/info.rs:95 src/info.rs:201 src/info.rs:241
msgid "Optional Deps"
msgstr "Dependències opcionals"

#: src/info.rs:96 src/info.rs:202 src/info.rs:242
msgid "Conflicts With"
msgstr "Conflictes amb"

#: src/info.rs:97 src/info.rs:243
msgid "Maintainer"
msgstr "Mantenidor"

#: src/info.rs:98 src/info.rs:244
msgid "Votes"
msgstr "Vots"

#: src/info.rs:99 src/info.rs:245
msgid "Popularity"
msgstr "Popularitat"

#: src/info.rs:100 src/info.rs:246
msgid "First Submitted"
msgstr "Primera vegada enviat"

#: src/info.rs:101 src/info.rs:247
msgid "Last Modified"
msgstr "Última modificació"

#: src/info.rs:102 src/info.rs:249
msgid "Out Of Date"
msgstr "No actualitzat"

#: src/info.rs:103 src/info.rs:254
msgid "ID"
msgstr "ID"

#: src/info.rs:104 src/info.rs:255
msgid "Package Base ID"
msgstr "ID de la base del paquet"

#: src/info.rs:105 src/info.rs:256
msgid "Keywords"
msgstr "Paraules clau"

#: src/info.rs:106 src/info.rs:258
msgid "Snapshot URL"
msgstr "URL de la instantània"

#: src/info.rs:107 src/info.rs:203
msgid "Path"
msgstr "Camí"

#: src/install.rs:166 src/query.rs:48 src/lib.rs:101
msgid "error:"
msgstr "error:"

#: src/install.rs:167
msgid "could not get news"
msgstr "no s'han pogut obtenir notícies"

#: src/install.rs:172 src/install.rs:1127
msgid "Proceed with installation?"
msgstr "Voleu continuar amb la instal·lació?"

#: src/install.rs:207
msgid "could not find .SRCINFO for '{}'"
msgstr "no s'ha pogut trobar .SRINFO per a '{}'"

#: src/install.rs:353
msgid "could not find package '{pkg}' in package list for '{base}'"
msgstr ""
"no s'ha pogut trobar el paquet '{pkg}' a la llista de paquets per a '{base}'"

#: src/install.rs:451
msgid "packages failed to build: {}"
msgstr "no s'han pogut construir els paquets: {}"

#: src/install.rs:523
msgid "adding {} to the install list"
msgstr "s'està afegint {} a la llista d'instal·lació"

#: src/install.rs:553 src/install.rs:568
msgid "failed to download sources for '{}'"
msgstr "no s'han pogut baixar les fonts per a «{}»"

#: src/install.rs:577 src/install.rs:603 src/install.rs:611
msgid "failed to build '{}'"
msgstr "no s'ha pogut construir «{}»"

#: src/install.rs:580 src/install.rs:784
msgid "{}: parsing pkg list..."
msgstr "{}: s'està analitzant la llista de paquets..."

#: src/install.rs:584
msgid "package list does not match srcinfo"
msgstr "la llista de paquets no coincideix amb srcinfo"

#: src/install.rs:618
msgid "{}-{} is up to date -- skipping build"
msgstr "{}-{} està actualitzat -- s'omet la construcció"

#: src/install.rs:775
msgid "can't build {base}, deps not satisfied: {deps}"
msgstr "no es pot construir {base}, les dependències no satisfetes són: {deps}"

#: src/install.rs:846
msgid "fetching devel info..."
msgstr "s'està recuperant la informació de desenvolupament..."

#: src/install.rs:911 src/lib.rs:240
msgid "no targets specified (use -h for help)"
msgstr "no s'ha especificat cap objectiu (useu -h per ajuda)"

#: src/install.rs:1008 src/install.rs:1097 src/search.rs:450 src/search.rs:476
#: src/lib.rs:304
msgid " there is nothing to do"
msgstr " No hi ha res a fer"

#: src/install.rs:1016
msgid "Resolving dependencies..."
msgstr "S'estan resolent les dependències..."

#: src/install.rs:1077
msgid "can't install AUR package as root"
msgstr "no es pot instal·lar el paquet de l'AUR com a root"

#: src/install.rs:1080
msgid "--downloadonly can't be used for AUR packages"
msgstr "--downloadonly no pot ser usat per a paquets de l'AUR"

#: src/install.rs:1113
msgid "Remove make dependencies after install?"
msgstr ""
"Voleu suprimir les dependències de construcció després de la instal·lació?"

#: src/install.rs:1124
msgid "Proceed to review?"
msgstr "Voleu continuar a la revisió?"

#: src/install.rs:1177
msgid "no architecture"
msgstr "sense arquitectura"

#: src/install.rs:1191
msgid "The following packages are not compatible with your architecture:"
msgstr "Els següents paquets no són compatibles amb la vostra arquitectura:"

#: src/install.rs:1205
msgid "Would you like to try build them anyway?"
msgstr "Voleu provar de construir-los de totes maneres?"

#: src/install.rs:1349
msgid "duplicate packages: {}"
msgstr "paquets duplicats: {}"

#: src/install.rs:1353
msgid "could not find all required packages:"
msgstr "no s'han pogut trobar tots els paquets necessaris:"

#: src/install.rs:1365
msgid ""
"\n"
"    {missing} (wanted by: {stack})"
msgstr ""
"\n"
"    {missing} (desitjat per: {stack})"

#: src/install.rs:1379 src/install.rs:2122
msgid "{}-{} is up to date -- skipping"
msgstr "{}-{} està actualitzat -- s'omet"

#: src/install.rs:1387
msgid "Calculating conflicts..."
msgstr "Calculant conflictes..."

#: src/install.rs:1410
msgid "Calculating inner conflicts..."
msgstr "Calculant conflictes interns..."

#: src/install.rs:1422
msgid "Inner conflicts found:"
msgstr "Conflictes interns trobats:"

#: src/install.rs:1444
msgid "Conflicts found:"
msgstr "Conflictes trobats:"

#: src/install.rs:1467
msgid "Conflicting packages will have to be confirmed manually"
msgstr "Els paquets en conflicte s'hauran de confirmar manualment"

#: src/install.rs:1471
msgid "can not install conflicting packages with --noconfirm"
msgstr "no es poden instal·lar paquets en conflicte amb --noconfirm"

#: src/install.rs:1599
msgid "failed to execute file manager: {}"
msgstr "no s'ha pogut executar el gestor de fitxers: {}"

#: src/install.rs:1602
#, fuzzy
msgid "file manager '{}' did not execute successfully"
msgstr "el gestor de fitxers no s'ha executat correctament"

#: src/install.rs:1620
msgid "failed to read dir: {}"
msgstr "no s'ha pogut llegir el directori: {}"

#: src/install.rs:1677
msgid "failed to open: {}"
msgstr "no s'ha pogut obrir: {}"

#: src/install.rs:1697
msgid "binary file: {}"
msgstr "fitxer binari: {}"

#: src/install.rs:1719 src/install.rs:1790
msgid "Accept changes?"
msgstr "Accepteu els canvis?"

#: src/install.rs:1759
msgid "Paging with less. Press 'q' to quit or 'h' for help."
msgstr ""

#: src/install.rs:1794
msgid " nothing new to review"
msgstr " no hi ha res nou per revisar"

#: src/install.rs:2070
msgid "can't find package name in packagelist: {}"
msgstr "no es pot trobar el nom del paquet a la llista de paquets: {}"

#: src/install.rs:2142
msgid "Signing packages..."
msgstr "Signant els paquets..."

#: src/install.rs:2172
msgid "{}-{} is up to date -- skipping install"
msgstr "{}-{} està actualitzat -- s'està ometent la instal·lació"

#: src/keys.rs:57
msgid "keys need to be imported:"
msgstr "cal importar les claus:"

#: src/keys.rs:62
msgid "     {key} wanted by: {base}"
msgstr "    {key} buscat per: {base}"

#: src/news.rs:57
msgid "No Date "
msgstr "Sense data "

#: src/news.rs:60
msgid "No Title"
msgstr "Sense títol"

#: src/news.rs:69
msgid "no new news"
msgstr "no hi ha notícies noves"

#: src/pkgbuild.rs:91
msgid "repo {} does not have a URL or Path"
msgstr "el dipòsit {} no disposa d'una URL o camí"

#: src/pkgbuild.rs:153
#, fuzzy
msgid "repo {} not downloaded (use -Sy --pkgbuilds to download)"
msgstr ""
"el dipòsit {} no s'ha descarregat (utilitzeu -Sya per a descarregar-lo)"

#: src/pkgbuild.rs:200
msgid "Generating .SRCINFO for {repo}/{dir}..."
msgstr "Generant .SRCINFO per {repo}/{dir}..."

#: src/pkgbuild.rs:278
msgid "failed to parse srcinfo \"{}\""
msgstr "no s'ha pogut analitzar «srcinfo»"

#: src/pkgbuild.rs:368
msgid "Downloading PKGBUILD Repos..."
msgstr "S'estan baixant els dipòsits amb els PKGBUILDs..."

#: src/pkgbuild.rs:422
msgid "failed to parse srcinfo generated by makepkg"
msgstr "no s'ha pogut analitzar la «srcinfo» generada per makepkg"

#: src/query.rs:151
msgid " [ignored]"
msgstr " [ignorat]"

#: src/repo.rs:253
msgid "failed to get current exe"
msgstr "no s'ha pogut obtenir l'exe actual"

#: src/repo.rs:298
msgid "syncing local databases..."
msgstr "s'estan sincronitzant les bases de dades locals..."

#: src/repo.rs:304
msgid "  nothing to do"
msgstr "  res a fer"

#: src/repo.rs:335
msgid "there is nothing to do"
msgstr "no hi ha res a fer"

#: src/repo.rs:341
msgid "Packages"
msgstr "Paquets"

#: src/repo.rs:354
msgid "Proceed with removal?"
msgstr "Voleu continuar amb l'eliminació?"

#: src/repo.rs:415
msgid " [installed: {}]"
msgstr " [instal·lat: {}]"

#: src/repo.rs:417 src/sync.rs:144
msgid " [installed]"
msgstr " [instal·lat]"

#: src/search.rs:41
msgid "aur search failed"
msgstr "ha fallat la cerca a l'AUR"

#: src/search.rs:285 src/search.rs:338 src/search.rs:410
#, fuzzy
msgid "[installed: {}]"
msgstr " [instal·lat: {}]"

#: src/search.rs:287 src/search.rs:340 src/search.rs:412
#, fuzzy
msgid "[installed]"
msgstr " [instal·lat]"

#: src/search.rs:332
#, fuzzy
msgid "[out-of-date: {}]"
msgstr "[No actualitzat: {}]"

#: src/search.rs:347
#, fuzzy
msgid "[orphaned]"
msgstr "[Orfe]"

#: src/search.rs:491
msgid "no packages match search"
msgstr "no hi ha cap paquet que coincideixi amb la cerca"

#: src/search.rs:529
msgid "Packages to install (eg: 1 2 3, 1-3):"
msgstr "Paquets a instal·lar (p. ex.: 1 2 3, 1-3):"

#: src/search.rs:531
#, fuzzy
msgid "Select packages (eg: 1 2 3, 1-3):"
msgstr "Paquets a instal·lar (p. ex.: 1 2 3, 1-3):"

#: src/stats.rs:90
msgid "Total installed packages: {}"
msgstr "Total de paquets instal·lats: {}"

#: src/stats.rs:94
msgid "Aur packages: {}"
msgstr "Paquets de l'AUR: {}"

#: src/stats.rs:98
msgid "Repo packages: {}"
msgstr "Paquets de repositoris: {}"

#: src/stats.rs:102
msgid "Explicitly installed packages: {}"
msgstr "Paquets instal·lats explícitament: {}"

#: src/stats.rs:106
msgid "Total Size occupied by packages: {}"
msgstr "Mida total ocupada pels paquets: {}"

#: src/stats.rs:113
msgid "Ten biggest packages:"
msgstr "Els deu paquets més grans:"

#: src/upgrade.rs:126
msgid "Looking for PKGBUILD upgrades..."
msgstr "Buscant actualitzacions dels PKGBUILD..."

#: src/upgrade.rs:134
msgid "Looking for AUR upgrades..."
msgstr "Buscant actualitzacions a l'AUR..."

#: src/upgrade.rs:165
msgid "Looking for devel upgrades..."
msgstr "Buscant actualitzacions de paquets de desenvolupament..."

#: src/upgrade.rs:193 src/upgrade.rs:206
msgid "warning:"
msgstr "avís:"

#: src/upgrade.rs:195 src/upgrade.rs:208
msgid "{pkg}: ignoring package upgrade ({old} => {new})"
msgstr "{pkg}: s'ignora l'actualització ({old} => {new})"

#: src/upgrade.rs:400
msgid "Packages to exclude (eg: 1 2 3, 1-3):"
msgstr "Paquets a excloure (p. ex.: 1 2 3, 1-3):"

#: src/util.rs:121
msgid "[Y/n]:"
msgstr "[S/n]:"

#: src/util.rs:123
msgid "[y/N]:"
msgstr "[s/N]:"

#: src/util.rs:142
msgid "y"
msgstr "s"

#: src/util.rs:142
msgid "yes"
msgstr "sí"

#: src/util.rs:300
msgid "Enter a number (default=1): "
msgstr "Introduïu un nombre (per defecte=1): "

#: src/util.rs:317
msgid "invalid number: {}"
msgstr "número no vàlid: {}"

#: src/util.rs:327
msgid "invalid value: {n} is not between 1 and {max}"
msgstr "valor no vàlid: {n} no és entre 1 i {max}"

#: src/resolver.rs:83
msgid "There are {} members in group"
msgstr "Hi ha {} membres al grup"

#: src/resolver.rs:108
msgid ""
"\n"
"\n"
"Enter a selection (default=all): "
msgstr ""
"\n"
"\n"
"Introduïu una selecció (per defecte=tot): "

#: src/lib.rs:206
msgid "can not use chroot builds: devtools is not installed"
msgstr ""
"no es poden utilitzar les construccions amb «chroot»: devtools no està "
"instal·lat"

#: src/lib.rs:313
msgid "no operation specified (use -h for help)"
msgstr "no s'ha especificat cap operació (useu -h per l'ajuda)"

#~ msgid "[Installed: {}]"
#~ msgstr "[Instal·lat: {}]"

#~ msgid "[Installed]"
#~ msgstr "[Instal·lat]"

#~ msgid "Aur ({})"
#~ msgstr "AUR ({})"

#~ msgid "Pkgbuilds ({})"
#~ msgstr "PKGBUILDs ({})"

#~ msgid "could not get current directory"
#~ msgstr "no s'ha pogut obtenir el directori actual"

#~ msgid "can not get repo packages: asp is not installed"
#~ msgstr ""
#~ "no es poden obtenir els paquets de dipòsit: «asp» no està instal·lat"

#~ msgid "Missing ABS packages "
#~ msgstr "Paquets ABS que manquen "

#~ msgid "does not contain PKGBUILD: skipping"
#~ msgstr "no conté PKGBUILD: s'ometrà"

#~ msgid "{} is not installed: can not get repo packages"
#~ msgstr ""
#~ "{} no està instal·lat: no es poden obtenir els paquets de repositoris"

#~ msgid "asp returned {}"
#~ msgstr "«asp» ha retornat {}"

#~ msgid "    --asp       <file>     asp command to use"
#~ msgstr "    --asp       <file>     La comanda «asp» a usar"

#~ msgid "Generating .SRCINFO for {dir}..."
#~ msgstr "Generant .SRCINFO per {dir}..."

#~ msgid "pkgbase {base} already exists in repo {repo} -- skipping)"
#~ msgstr "el pkgbase {base} ja existeix al dipòsit {repo} -- s'omet) "

#~ msgid "upgrade specific options:"
#~ msgstr "opcions específiques d'«upgrade»"

#, fuzzy
#~ msgid "error: unknown section '{}'"
#~ msgstr "secció desconeguda '{}'"

#~ msgid "can't build package as root"
#~ msgstr "no es pot construir el paquet com a root"

#~ msgid "failed to build"
#~ msgstr "no s'ha pogut construir"

#~ msgid "parsing pkg list..."
#~ msgstr "s'està analitzant la llista de paquets..."

#~ msgid ""
#~ "{} is a directory\n"
#~ "\n"
#~ msgstr ""
#~ "{} és un directori\n"
#~ "\n"

#~ msgid "n"
#~ msgstr "n"

#~ msgid "no"
#~ msgstr "no"


================================================
FILE: po/cs.po
================================================
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE paru'S COPYRIGHT HOLDER
# This file is distributed under the same license as the paru package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: paru  2.0.0\n"
"Report-Msgid-Bugs-To: https://github.com/Morganamilo/paru\n"
"POT-Creation-Date: 2026-01-08 17:40+0000\n"
"PO-Revision-Date: 2025-12-20 02:00+0100\n"
"Last-Translator: Martin Kozák <martin.kozak@outlook.cz>\n"
"Language-Team: \n"
"Language: cs\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 3.8\n"

#: src/clean.rs:36
msgid "Do you want to clean ALL AUR packages from cache?"
msgstr "Chcete odstranit VŠECHNY AUR balíčky z mezipaměti?"

#: src/clean.rs:38
msgid "Do you want to clean all other AUR packages from cache?"
msgstr "Chcete odstranit všechny ostatní balíčky AUR z mezipaměti?"

#: src/clean.rs:41
msgid "Clone Directory: {}"
msgstr "Adresář pro klonování: {}"

#: src/clean.rs:47
msgid ""
"\n"
"Diff Directory: {}"
msgstr ""
"\n"
"Adresář rozdílů: {}"

#: src/clean.rs:49
msgid "Do you want to remove all saved diffs?"
msgstr "Přejete si smazat všechny uložené rozdíly?"

#: src/clean.rs:65
msgid "can't open diff dir: {}"
msgstr "nelze otevřít adresář rozdílů: {}"

#: src/clean.rs:76 src/clean.rs:180
msgid "could not remove '{}'"
msgstr "nelze odstranit '{}'"

#: src/clean.rs:95
msgid "can't open clone dir: {}"
msgstr "nelze otevřít adresář pro klonování: {}"

#: src/clean.rs:141
msgid "could not parse .SRCINFO for '{}'"
msgstr "nelze načíst .SRCINFO pro '{}'"

#: src/command_line.rs:134
msgid "option {} expects a value"
msgstr "volba {} očekává hodnotu"

#: src/command_line.rs:165 src/command_line.rs:382
msgid "option {} does not allow a value"
msgstr "volba {} nedovoluje hodnotu"

#: src/command_line.rs:373
msgid "unknown option --{}"
msgstr "neznámá volba --{}"

#: src/command_line.rs:376
msgid "unknown option -{}"
msgstr "neznámá volba -{}"

#: src/completion.rs:26 src/search.rs:179 src/sync.rs:113
#, fuzzy
msgid "failed to decode package list"
msgstr "nepodařilo se otevřít soubor mezipaměti '{}'"

#: src/completion.rs:35
msgid "failed to open cache file '{}'"
msgstr "nepodařilo se otevřít soubor mezipaměti '{}'"

#: src/completion.rs:83
msgid "could not update aur cache"
msgstr "nepodařilo se aktualizovat AUR mezipaměť"

#: src/config.rs:179
msgid "invalid value '{val}' for key '{key}', expected: {exp}"
msgstr "neplatná hodnota '{val}' pro klíč '{key}', očekáváno: {exp}"

#: src/config.rs:332
msgid "unknown mode {}"
msgstr "neznámý režim {}"

#: src/config.rs:564
msgid "section can not be called {}"
msgstr "sekci nelze zavolat {}"

#: src/config.rs:581
msgid "failed to find cache directory"
msgstr "nepodařilo se najít adresář mezipaměti"

#: src/config.rs:584
msgid "failed to find config directory"
msgstr "nepodařilo se najít konfigurační adresář"

#: src/config.rs:588
msgid "failed to find state directory"
msgstr "nepodařilo se najít stavový adresář"

#: src/config.rs:635
msgid "config file '{}' does not exist"
msgstr "konfigurační soubor '{}' neexistuje"

#: src/config.rs:684
msgid "only one operation may be used at a time"
msgstr "naráz může být použita pouze jedna operace"

#: src/config.rs:795
msgid "no local repo named {}"
msgstr "neexistuje lokální repozitář jménem {}"

#: src/config.rs:821
msgid "can not find local repo '{}' in pacman.conf"
msgstr "nelze najít lokální repozitář '{}' v pacman.conf"

#: src/config.rs:866
msgid "failed to initialize alpm: root={} dbpath={}"
msgstr "nepodařilo se inicializovat alpm: root={} dbpath={}"

#: src/config.rs:941 src/config.rs:1102
msgid "value can not be empty for key '{}'"
msgstr "hodnota pro klíč '{}' nemůže být prázdná"

#: src/config.rs:957
msgid "key '{}' does not belong to a section"
msgstr "klíč '{}' nepatří do oddílu"

#: src/config.rs:971 src/config.rs:988 src/config.rs:990 src/config.rs:1005
msgid "key can not be empty"
msgstr "klíč nemůže být prázdný"

#: src/config.rs:981
msgid "error: unknown option '{}' in repo"
msgstr "chyba: neznámá volba '{}' v repozitáři"

#: src/config.rs:991
msgid "key can not contain null bytes"
msgstr "klíč nesmí obsahovat nulové bajty"

#: src/config.rs:994
msgid "value can not contain null bytes"
msgstr "hodnota nesmí obsahovat nulové bajty"

#: src/config.rs:1030
msgid "error: unknown option '{}' in section [bin]"
msgstr "chyba: neznámá volba '{}' v oddílu [bin]"

#: src/config.rs:1150
msgid "error: unknown option '{}' in section [options]"
msgstr "chyba: neznámá volba '{}' v oddílu [options]"

#: src/config.rs:1155
msgid "option '{}' does not take a value"
msgstr "volba '{}' nepřijímá hodnotu"

#: src/config.rs:1187 src/resolver.rs:136
msgid "There are {n} providers available for {pkg}:"
msgstr "Pro {pkg} je dostupných {n} poskytovatelů:"

#: src/config.rs:1201 src/info.rs:85 src/info.rs:190 src/info.rs:224
#: src/resolver.rs:95 src/resolver.rs:144
msgid "Repository"
msgstr "Repozitář"

#: src/config.rs:1227
msgid "  failed to sync {}"
msgstr "  synchronizace {} se nezdařila"

#: src/devel.rs:136 src/download.rs:207
msgid "Querying AUR..."
msgstr "Dotazovaní AUR..."

#: src/devel.rs:157 src/devel.rs:181 src/install.rs:203
msgid "failed to parse srcinfo for '{}'"
msgstr "nepodařilo se načíst srcinfo pro '{}'"

#: src/devel.rs:201
msgid "Looking for devel repos..."
msgstr "Vyhledávání vývojových repozitářů..."

#: src/devel.rs:210
msgid "failed to save devel info"
msgstr "nepodařilo se uložit vývojové informace"

#: src/devel.rs:218
msgid "failed to create state directory: {}"
msgstr "nepodařilo se vytvořit stavový adresář: {}"

#: src/devel.rs:233
msgid "failed to create temporary file: {}"
msgstr "nepodařilo se vytvořit dočasný soubor: {}"

#: src/devel.rs:238
msgid "failed to write to temporary file: {}"
msgstr "nepodařilo se zapsat dočasný soubor: {}"

#: src/devel.rs:244
msgid "failed to rename '{temp}' to '{devel_toml}"
msgstr "nepodařilo se přejmenovat '{temp}' na '{devel_toml}"

#: src/devel.rs:490
msgid "package does not have an update"
msgstr "balíček nemá aktualizaci"

#: src/devel.rs:536
msgid "failed to lookup: {}"
msgstr "nepodařilo se najít: {}"

#: src/devel.rs:564
msgid "invalid toml: {}"
msgstr "neplatný toml: {}"

#: src/download.rs:100
msgid "packages not in the AUR: "
msgstr "balíčky mimo AUR: "

#: src/download.rs:111
msgid "marked out of date: "
msgstr "označené jako 
Download .txt
gitextract_za9wu6l6/

├── .dockerignore
├── .github/
│   ├── FUNDING.yml
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug-report.md
│   │   ├── feature_request.md
│   │   └── issue.md
│   └── workflows/
│       ├── build.yml
│       ├── mo.yml
│       └── paru.yml
├── .gitignore
├── CHANGELOG.md
├── CONTRIBUTING.md
├── Cargo.toml
├── Dockerfile
├── LICENSE
├── README.md
├── completions/
│   ├── bash
│   ├── fish
│   └── zsh
├── man/
│   ├── paru.8
│   └── paru.conf.5
├── paru.conf
├── po/
│   ├── ca.po
│   ├── cs.po
│   ├── de.po
│   ├── es.po
│   ├── fi.po
│   ├── fr.po
│   ├── hi.po
│   ├── hr.po
│   ├── hu.po
│   ├── it.po
│   ├── ja.po
│   ├── ko.po
│   ├── nl.po
│   ├── paru.pot
│   ├── pt.po
│   ├── pt_BR.po
│   ├── ro.po
│   ├── ru.po
│   ├── sk.po
│   ├── sv.po
│   ├── tr.po
│   ├── uk.po
│   ├── zh_CN.po
│   └── zh_TW.po
├── scripts/
│   ├── dist
│   ├── mkmo
│   ├── mkpot
│   └── updpo
├── src/
│   ├── args.rs
│   ├── auth.rs
│   ├── base.rs
│   ├── chroot.rs
│   ├── clean.rs
│   ├── command_line.rs
│   ├── completion.rs
│   ├── config.rs
│   ├── devel.rs
│   ├── download.rs
│   ├── exec.rs
│   ├── fmt.rs
│   ├── help.rs
│   ├── info.rs
│   ├── install.rs
│   ├── keys.rs
│   ├── lib.rs
│   ├── main.rs
│   ├── mock.rs
│   ├── news.rs
│   ├── order.rs
│   ├── pkgbuild.rs
│   ├── query.rs
│   ├── remove.rs
│   ├── repo.rs
│   ├── resolver.rs
│   ├── search.rs
│   ├── stats.rs
│   ├── sync.rs
│   ├── upgrade.rs
│   └── util.rs
├── testdata/
│   ├── bin/
│   │   ├── gpg
│   │   ├── makepkg.bak
│   │   ├── pacman
│   │   └── pacman.bak
│   ├── clone/
│   │   ├── auracle-git/
│   │   │   ├── .SRCINFO
│   │   │   └── PKGBUILD
│   │   ├── devel/
│   │   │   ├── .SRCINFO
│   │   │   └── PKGBUILD
│   │   ├── pacaur/
│   │   │   ├── .SRCINFO
│   │   │   └── PKGBUILD
│   │   ├── pkg/
│   │   │   ├── .SRCINFO
│   │   │   └── PKGBUILD
│   │   └── polybar/
│   │       ├── .SRCINFO
│   │       └── PKGBUILD
│   ├── db/
│   │   └── local/
│   │       ├── ALPM_DB_VERSION
│   │       ├── acl-2.3.1-1/
│   │       │   └── desc
│   │       ├── alsa-lib-1.2.4-3/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── alsa-topology-conf-1.2.4-2/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── alsa-ucm-conf-1.2.4-2/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── archlinux-keyring-20210110-1/
│   │       │   ├── desc
│   │       │   └── install
│   │       ├── argon2-20190702-3/
│   │       │   └── desc
│   │       ├── attr-2.5.1-1/
│   │       │   └── desc
│   │       ├── audit-3.0.1-1/
│   │       │   └── desc
│   │       ├── base-2-2/
│   │       │   └── desc
│   │       ├── bash-5.1.004-1/
│   │       │   └── desc
│   │       ├── bzip2-1.0.8-4/
│   │       │   └── desc
│   │       ├── ca-certificates-20181109-4/
│   │       │   └── desc
│   │       ├── ca-certificates-mozilla-3.64-1/
│   │       │   └── desc
│   │       ├── ca-certificates-utils-20181109-4/
│   │       │   └── desc
│   │       ├── cairo-1.17.4-5/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── coreutils-8.32-1/
│   │       │   └── desc
│   │       ├── cryptsetup-2.3.5-4/
│   │       │   └── desc
│   │       ├── curl-7.76.1-1/
│   │       │   └── desc
│   │       ├── dbus-1.12.20-1/
│   │       │   └── desc
│   │       ├── devel-1-1/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── device-mapper-2.03.11-5/
│   │       │   └── desc
│   │       ├── e2fsprogs-1.46.2-1/
│   │       │   └── desc
│   │       ├── expat-2.3.0-1/
│   │       │   └── desc
│   │       ├── file-5.40-2/
│   │       │   └── desc
│   │       ├── filesystem-2021.01.19-1/
│   │       │   └── desc
│   │       ├── findutils-4.8.0-1/
│   │       │   └── desc
│   │       ├── flac-1.3.3-2/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── fontconfig-2:2.13.93-4/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   ├── install
│   │       │   └── mtree
│   │       ├── freetype2-2.10.4-1/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   ├── install
│   │       │   └── mtree
│   │       ├── gawk-5.1.0-1/
│   │       │   └── desc
│   │       ├── gcc-libs-10.2.0-6/
│   │       │   └── desc
│   │       ├── gettext-0.21-1/
│   │       │   └── desc
│   │       ├── glib2-2.68.1-1/
│   │       │   └── desc
│   │       ├── glibc-2.33-4/
│   │       │   ├── desc
│   │       │   └── install
│   │       ├── gmp-6.2.1-1/
│   │       │   └── desc
│   │       ├── gnupg-2.2.27-1/
│   │       │   ├── desc
│   │       │   └── install
│   │       ├── gnutls-3.7.1-1/
│   │       │   └── desc
│   │       ├── gpgme-1.15.1-1/
│   │       │   └── desc
│   │       ├── graphite-1:1.3.14-1/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── grep-3.6-1/
│   │       │   └── desc
│   │       ├── gzip-1.10-3/
│   │       │   └── desc
│   │       ├── harfbuzz-2.8.0-3/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── hwids-20201207-1/
│   │       │   └── desc
│   │       ├── iana-etc-20210202-1/
│   │       │   └── desc
│   │       ├── icu-69.1-1/
│   │       │   └── desc
│   │       ├── iproute2-5.12.0-1/
│   │       │   └── desc
│   │       ├── iptables-1:1.8.7-1/
│   │       │   └── desc
│   │       ├── iputils-20210202-1/
│   │       │   └── desc
│   │       ├── json-c-0.15-1/
│   │       │   └── desc
│   │       ├── jsoncpp-1.9.4-1/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── kbd-2.4.0-2/
│   │       │   └── desc
│   │       ├── keyutils-1.6.3-1/
│   │       │   └── desc
│   │       ├── kmod-28-1/
│   │       │   └── desc
│   │       ├── krb5-1.19.1-1/
│   │       │   └── desc
│   │       ├── less-1:581.2-1/
│   │       │   └── desc
│   │       ├── libarchive-3.5.1-1/
│   │       │   └── desc
│   │       ├── libassuan-2.5.5-1/
│   │       │   └── desc
│   │       ├── libasyncns-0.8+3+g68cd5af-3/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── libcap-2.49-1/
│   │       │   └── desc
│   │       ├── libcap-ng-0.8.2-1/
│   │       │   └── desc
│   │       ├── libcroco-0.6.13-2/
│   │       │   └── desc
│   │       ├── libelf-0.183-3/
│   │       │   └── desc
│   │       ├── libffi-3.3-4/
│   │       │   └── desc
│   │       ├── libgcrypt-1.9.3-1/
│   │       │   └── desc
│   │       ├── libgpg-error-1.42-1/
│   │       │   └── desc
│   │       ├── libice-1.0.10-3/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── libidn2-2.3.0-1/
│   │       │   └── desc
│   │       ├── libksba-1.4.0-2/
│   │       │   └── desc
│   │       ├── libldap-2.4.58-1/
│   │       │   └── desc
│   │       ├── libmnl-1.0.4-3/
│   │       │   └── desc
│   │       ├── libmpdclient-2.19-3/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── libnetfilter_conntrack-1.0.8-1/
│   │       │   └── desc
│   │       ├── libnfnetlink-1.0.1-4/
│   │       │   └── desc
│   │       ├── libnftnl-1.1.9-1/
│   │       │   └── desc
│   │       ├── libnghttp2-1.43.0-1/
│   │       │   └── desc
│   │       ├── libnl-3.5.0-2/
│   │       │   └── desc
│   │       ├── libogg-1.3.4-2/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── libp11-kit-0.23.22-1/
│   │       │   └── desc
│   │       ├── libpcap-1.10.0-1/
│   │       │   └── desc
│   │       ├── libpng-1.6.37-3/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── libpsl-0.21.1-1/
│   │       │   └── desc
│   │       ├── libpulse-14.2-3/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── libsasl-2.1.27-3/
│   │       │   └── desc
│   │       ├── libseccomp-2.5.1-2/
│   │       │   └── desc
│   │       ├── libsecret-0.20.4-1/
│   │       │   └── desc
│   │       ├── libsm-1.2.3-2/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── libsndfile-1.0.31-1/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── libssh2-1.9.0-3/
│   │       │   └── desc
│   │       ├── libtasn1-4.16.0-1/
│   │       │   └── desc
│   │       ├── libtirpc-1.3.1-1/
│   │       │   └── desc
│   │       ├── libunistring-0.9.10-3/
│   │       │   └── desc
│   │       ├── libvorbis-1.3.7-2/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── libx11-1.7.0-4/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── libxau-1.0.9-3/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── libxcb-1.14-1/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── libxcrypt-4.4.19-1/
│   │       │   └── desc
│   │       ├── libxdmcp-1.1.3-3/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── libxext-1.3.4-3/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── libxml2-2.9.10-9/
│   │       │   └── desc
│   │       ├── libxrender-0.9.10-4/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── licenses-20200427-1/
│   │       │   └── desc
│   │       ├── linux-api-headers-5.10.13-1/
│   │       │   └── desc
│   │       ├── lz4-1:1.9.3-1/
│   │       │   └── desc
│   │       ├── lzo-2.10-3/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── mpfr-4.1.0-1/
│   │       │   └── desc
│   │       ├── ncurses-6.2-1/
│   │       │   └── desc
│   │       ├── nettle-3.7.2-1/
│   │       │   └── desc
│   │       ├── npth-1.6-3/
│   │       │   └── desc
│   │       ├── openssl-1.1.1.k-1/
│   │       │   └── desc
│   │       ├── opus-1.3.1-2/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── p11-kit-0.23.22-1/
│   │       │   ├── desc
│   │       │   └── install
│   │       ├── pacman-5.2.2-3/
│   │       │   └── desc
│   │       ├── pacman-mirrorlist-20210405-1/
│   │       │   └── desc
│   │       ├── pam-1.5.1-1/
│   │       │   └── desc
│   │       ├── pambase-20200721.1-2/
│   │       │   └── desc
│   │       ├── pciutils-3.7.0-1/
│   │       │   └── desc
│   │       ├── pcre-8.44-1/
│   │       │   └── desc
│   │       ├── pcre2-10.36-1/
│   │       │   └── desc
│   │       ├── pinentry-1.1.1-1/
│   │       │   └── desc
│   │       ├── pixman-0.40.0-1/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── polybar-1.0.0-1/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── popt-1.18-1/
│   │       │   └── desc
│   │       ├── procps-ng-3.3.17-1/
│   │       │   └── desc
│   │       ├── psmisc-23.4-1/
│   │       │   └── desc
│   │       ├── readline-8.1.0-2/
│   │       │   └── desc
│   │       ├── sed-4.8-1/
│   │       │   └── desc
│   │       ├── shadow-4.8.1-4/
│   │       │   ├── desc
│   │       │   └── install
│   │       ├── speex-1.2.0-3/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── speexdsp-1.2.0-2/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── sqlite-3.35.5-1/
│   │       │   └── desc
│   │       ├── systemd-248-5/
│   │       │   ├── desc
│   │       │   └── install
│   │       ├── systemd-libs-248-5/
│   │       │   └── desc
│   │       ├── systemd-sysvcompat-248-5/
│   │       │   └── desc
│   │       ├── tar-1.34-1/
│   │       │   └── desc
│   │       ├── tzdata-2021a-1/
│   │       │   └── desc
│   │       ├── util-linux-2.36.2-1/
│   │       │   └── desc
│   │       ├── util-linux-libs-2.36.2-1/
│   │       │   └── desc
│   │       ├── xcb-proto-1.14.1-3/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── xcb-util-0.4.0-3/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── xcb-util-cursor-0.1.3-3/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── xcb-util-image-0.4.0-3/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── xcb-util-renderutil-0.3.9-3/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── xcb-util-wm-0.4.1-3/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── xcb-util-xrm-1.3-2/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── xorgproto-2021.3-1/
│   │       │   ├── desc
│   │       │   ├── files
│   │       │   └── mtree
│   │       ├── xz-5.2.5-1/
│   │       │   └── desc
│   │       ├── zlib-1:1.2.11-4/
│   │       │   └── desc
│   │       └── zstd-1.4.9-1/
│   │           └── desc
│   ├── devel.toml
│   ├── git-repo/
│   │   ├── HEAD
│   │   ├── config
│   │   ├── objects/
│   │   │   ├── 25/
│   │   │   │   └── 45915d2a057d068a8585ebfc0592ba543189a7
│   │   │   └── 4b/
│   │   │       └── 825dc642cb6eb9a060e54bf8d69288fbee4904
│   │   ├── packed-refs
│   │   └── refs/
│   │       └── .keep
│   ├── makepkg.conf
│   ├── pacman.conf
│   ├── paru.conf
│   ├── pkgbuild-repo/
│   │   ├── a/
│   │   │   ├── .SRCINFO
│   │   │   └── PKGBUILD
│   │   ├── b/
│   │   │   ├── .SRCINFO
│   │   │   └── PKGBUILD
│   │   └── c/
│   │       ├── .SRCINFO
│   │       └── PKGBUILD
│   └── repo/
│       └── polybar-1.0.0-1-x86_64.pkg.tar.zst
└── tests/
    ├── common/
    │   ├── mod.rs
    │   └── tests.rs
    └── paru.rs
Download .txt
SYMBOL INDEX (437 symbols across 33 files)

FILE: src/args.rs
  type Arg (line 95) | pub struct Arg<S> {
  type Args (line 101) | pub struct Args<S> {
  method fmt (line 109) | fn fmt(&self, f: &mut Formatter<'_>) -> Result {
  function as_str (line 130) | pub fn as_str(&self) -> Arg<&str> {
  function args (line 140) | pub fn args(&self) -> Vec<String> {
  function has_arg (line 149) | pub fn has_arg(&self, s1: &str, s2: &str) -> bool {
  function count (line 155) | pub fn count(&self, s1: &str, s2: &str) -> usize {
  function op (line 162) | pub fn op(&mut self, op: S) -> &mut Self {
  function remove (line 167) | pub fn remove<T: AsRef<str>>(&mut self, arg: T) -> &mut Self {
  function target (line 172) | pub fn target(&mut self, target: S) {
  function targets (line 176) | pub fn targets(&mut self, targets: impl IntoIterator<Item = S>) {
  function arg (line 180) | pub fn arg(&mut self, arg: S) -> &mut Self {
  function push_value (line 189) | pub fn push_value(&mut self, arg: S, value: S) {
  function push (line 193) | pub fn push(&mut self, arg: S, value: Option<S>) {
  function as_str (line 198) | pub fn as_str(&self) -> Args<&str> {
  function parse_targets (line 208) | pub fn parse_targets(targets: &[String]) -> Vec<Targ<'_>> {

FILE: src/auth.rs
  type Pipe (line 11) | pub struct Pipe {
    method wait_ok (line 17) | fn wait_ok(&mut self) -> Result<()> {
  type LazyPipe (line 26) | pub struct LazyPipe {
    method run (line 31) | pub fn run(&self, config: &Config) -> Result<()> {
  function spawn_auth (line 45) | pub fn spawn_auth(config: &Config) -> Result<Pipe> {
  function authpipe (line 74) | pub unsafe fn authpipe(read: &str, write: &str) -> Result<i32> {

FILE: src/base.rs
  type PkgNames (line 5) | enum PkgNames<A, C> {
  type Item (line 15) | type Item = &'a str;
  method next (line 17) | fn next(&mut self) -> Option<Self::Item> {
  type CustomPackages (line 27) | pub struct CustomPackages {
    method package_base (line 120) | pub fn package_base(&self) -> &str {
    method version (line 125) | pub fn version(&self) -> String {
  type AurBase (line 38) | pub struct AurBase {
    method package_base (line 108) | pub fn package_base(&self) -> &str {
    method version (line 113) | pub fn version(&self) -> String {
  type Base (line 46) | pub enum Base {
    method package_base (line 132) | pub fn package_base(&self) -> &str {
    method version (line 140) | pub fn version(&self) -> String {
    method package_count (line 148) | pub fn package_count(&self) -> usize {
    method packages (line 156) | pub fn packages(&self) -> impl Iterator<Item = &str> {
  method fmt (line 54) | fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
  method fmt (line 76) | fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
  method fmt (line 98) | fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {

FILE: src/chroot.rs
  type Chroot (line 13) | pub struct Chroot {
    method exists (line 44) | pub fn exists(&self) -> bool {
    method create (line 48) | pub fn create(&self, config: &Config) -> Result<()> {
    method run (line 69) | pub fn run<S: AsRef<OsStr>>(&self, args: &[S]) -> Result<()> {
    method run_usr (line 72) | pub fn run_usr<S: AsRef<OsStr>>(&self, args: &[S]) -> Result<()> {
    method run_as (line 76) | fn run_as<S: AsRef<OsStr>>(&self, root: bool, args: &[S]) -> Result<()> {
    method update (line 111) | pub fn update(&self) -> Result<()> {
    method build (line 125) | pub fn build<S: AsRef<OsStr>>(
  function pacman_conf (line 25) | fn pacman_conf(pacman_conf: &str) -> Result<tempfile::NamedTempFile> {

FILE: src/clean.rs
  function clean (line 19) | pub fn clean(config: &Config) -> Result<()> {
  function clean_diff (line 58) | fn clean_diff(config: &Config) -> Result<()> {
  function clean_aur (line 83) | fn clean_aur(
  function fix_perms (line 109) | fn fix_perms(file: &Path) -> Result<()> {
  function clean_aur_pkg (line 117) | fn clean_aur_pkg(
  function do_remove (line 177) | fn do_remove(config: &Config, path: &Path, rm: bool) -> Result<()> {
  function clean_untracked (line 186) | pub fn clean_untracked(config: &Config, path: &Path) -> Result<()> {

FILE: src/command_line.rs
  type Arg (line 15) | enum Arg<'a> {
  function fmt (line 21) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
  function arg (line 30) | fn arg(self) -> String {
  function is_pacman_arg (line 37) | fn is_pacman_arg(self) -> bool {
  function is_pacman_global (line 49) | fn is_pacman_global(self) -> bool {
  type TakesValue (line 63) | enum TakesValue {
  method parse_arg (line 70) | pub fn parse_arg(
  method handle_arg (line 126) | fn handle_arg(
  function split_whitespace (line 390) | fn split_whitespace(s: &str) -> Vec<String> {
  function takes_value (line 394) | fn takes_value(arg: Arg) -> TakesValue {

FILE: src/completion.rs
  function save_aur_list (line 15) | async fn save_aur_list(aur_url: &Url, cache_dir: &Path) -> Result<()> {
  function update_aur_cache (line 45) | pub async fn update_aur_cache(aur_url: &Url, cache_dir: &Path, timeout: ...
  function aur_list (line 80) | async fn aur_list<W: Write>(config: &Config, w: &mut W, timeout: Option<...
  function repo_list (line 96) | fn repo_list<W: Write>(config: &Config, w: &mut W) {
  function pkgbuild_list (line 107) | fn pkgbuild_list<W: Write>(config: &Config, w: &mut W) {
  function print (line 120) | pub async fn print(config: &Config, timeout: Option<u64>) -> i32 {

FILE: src/config.rs
  type Alpm (line 32) | pub struct Alpm {
    type Target (line 37) | type Target = alpm::Alpm;
    method deref (line 38) | fn deref(&self) -> &Self::Target {
    method deref_mut (line 44) | fn deref_mut(&mut self) -> &mut Self::Target {
    method new (line 50) | fn new(alpm: alpm::Alpm) -> Self {
  type LocalRepos (line 56) | pub enum LocalRepos {
    method new (line 64) | pub fn new(repo: Option<&str>) -> Self {
  type Colors (line 73) | pub struct Colors {
    method from (line 105) | fn from(s: &str) -> Self {
    method new (line 115) | pub fn new() -> Colors {
  type ConfigEnum (line 149) | pub trait ConfigEnum: Sized + PartialEq + Copy + Clone + fmt::Debug + 's...
    constant VALUE_LOOKUP (line 150) | const VALUE_LOOKUP: &'static [(&'static str, Self)];
    method as_str (line 152) | fn as_str(&self) -> &'static str {
    method default_or (line 160) | fn default_or(self, key: &str, value: Option<&str>) -> Result<Self> {
    method from_str (line 164) | fn from_str(key: &str, value: &str) -> Result<Self> {
    constant VALUE_LOOKUP (line 217) | const VALUE_LOOKUP: ConfigEnumValues<Self> = &[
    constant VALUE_LOOKUP (line 253) | const VALUE_LOOKUP: ConfigEnumValues<Self> = &[
    constant VALUE_LOOKUP (line 266) | const VALUE_LOOKUP: ConfigEnumValues<Self> = &[
    constant VALUE_LOOKUP (line 289) | const VALUE_LOOKUP: ConfigEnumValues<Self> =
    constant VALUE_LOOKUP (line 350) | const VALUE_LOOKUP: ConfigEnumValues<Self> =
    constant VALUE_LOOKUP (line 362) | const VALUE_LOOKUP: ConfigEnumValues<Self> =
    constant VALUE_LOOKUP (line 375) | const VALUE_LOOKUP: ConfigEnumValues<Self> = &[
  type ConfigEnumValues (line 188) | type ConfigEnumValues<T> = &'static [(&'static str, T)];
  type Sign (line 191) | pub enum Sign {
  type Op (line 199) | pub enum Op {
    method fmt (line 235) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
  type SortBy (line 241) | pub enum SortBy {
  type SortMode (line 283) | pub enum SortMode {
  method aur (line 303) | pub fn aur(self) -> bool {
  method repo (line 307) | pub fn repo(self) -> bool {
  method pkgbuild (line 311) | pub fn pkgbuild(self) -> bool {
  type Err (line 317) | type Err = Error;
  method from_str (line 319) | fn from_str(input: &str) -> Result<Self> {
  type YesNoAll (line 343) | pub enum YesNoAll {
  type YesNoAsk (line 355) | pub enum YesNoAsk {
  type YesNoAllTree (line 367) | pub enum YesNoAllTree {
  type Config (line 384) | pub struct Config {
    method new (line 579) | pub fn new() -> Result<Self> {
    method set_op_args_globals (line 651) | pub fn set_op_args_globals(&mut self, op: Op) {
    method pacman_args (line 657) | pub fn pacman_args(&self) -> Args<&str> {
    method pacman_globals (line 661) | pub fn pacman_globals(&self) -> Args<&str> {
    method parse_args (line 665) | pub fn parse_args<S: AsRef<str>, I: IntoIterator<Item = S>>(&mut self,...
    method init_pacmanconf (line 845) | fn init_pacmanconf(&mut self) -> Result<()> {
    method new_alpm (line 862) | pub fn new_alpm(&self) -> Result<alpm::Alpm> {
    method init_alpm (line 894) | pub fn init_alpm(&mut self) -> Result<()> {
    method parse_stdin (line 899) | fn parse_stdin(&mut self) -> Result<()> {
    method need_root (line 907) | fn need_root(&self) -> bool {
    method parse_directive (line 937) | fn parse_directive(&mut self, key: &str, value: Option<&str>) -> Resul...
    method parse_repo (line 970) | fn parse_repo(&mut self, repo: &str, key: &str, value: Option<&str>) -...
    method parse_env (line 987) | fn parse_env(&mut self, key: &str, value: Option<&str>) -> Result<()> {
    method parse_bin (line 1002) | fn parse_bin(&mut self, key: &str, value: Option<&str>) -> Result<()> {
    method parse_option (line 1037) | fn parse_option(&mut self, key: &str, value: Option<&str>) -> Result<(...
    method aur_namespace (line 1161) | pub fn aur_namespace(&self) -> &str {
  type Err (line 553) | type Err = Error;
  method callback (line 555) | fn callback(&mut self, cb: Callback) -> Result<(), Self::Err> {
  function version (line 1171) | pub fn version() {
  function question (line 1179) | fn question(question: AnyQuestion, (no_confirm, c): &mut (bool, Colors)) {
  function download (line 1219) | fn download(filename: &str, event: AnyDownloadEvent, _: &mut ()) {
  function log (line 1233) | fn log(level: LogLevel, msg: &str, color: &mut Colors) {

FILE: src/devel.rs
  type _PkgInfo (line 30) | pub struct _PkgInfo {
  type RepoInfo (line 35) | pub struct RepoInfo {
    method eq (line 63) | fn eq(&self, other: &Self) -> bool {
    method borrow (line 76) | fn borrow(&self) -> &str {
  method hash (line 42) | fn hash<H: Hasher>(&self, state: &mut H) {
  method partial_cmp (line 49) | fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
  method cmp (line 55) | fn cmp(&self, other: &Self) -> Ordering {
  type PkgInfo (line 70) | pub struct PkgInfo {
  type DevelInfo (line 82) | pub struct DevelInfo {
  function ordered_map (line 92) | fn ordered_map<S, T>(value: &HashMap<String, T>, serializer: S) -> Resul...
  function ordered_set (line 101) | fn ordered_set<S, T>(value: &HashSet<T>, serializer: S) -> Result<S::Ok,...
  function gendb (line 110) | pub async fn gendb(config: &mut Config) -> Result<()> {
  function save_devel_info (line 215) | pub fn save_devel_info(config: &Config, devel_info: &DevelInfo) -> Resul...
  function ls_remote_internal (line 253) | async fn ls_remote_internal(
  function ls_remote (line 287) | async fn ls_remote(
  function parse_url (line 310) | fn parse_url(source: &str) -> Option<(String, &'_ str, Option<&'_ str>)> {
  function possible_devel_updates (line 344) | pub async fn possible_devel_updates(config: &Config) -> Result<Vec<Strin...
  function filter_devel_updates (line 393) | pub async fn filter_devel_updates(
  function pkg_has_update (line 450) | pub async fn pkg_has_update<'pkg>(
  function has_update (line 477) | async fn has_update(style: Style, git: &str, flags: &[String], url: &Rep...
  function fetch_devel_info (line 493) | pub async fn fetch_devel_info(
  function load_devel_info (line 558) | pub fn load_devel_info(config: &Config) -> Result<Option<DevelInfo>> {

FILE: src/download.rs
  type Bases (line 31) | pub struct Bases {
    method from_iter (line 36) | fn from_iter<T: IntoIterator<Item = Package>>(iter: T) -> Self {
    method from_iter (line 44) | fn from_iter<T: IntoIterator<Item = aur_depends::AurPackage>>(iter: T)...
    method new (line 52) | pub fn new() -> Self {
    method push (line 56) | pub fn push(&mut self, pkg: Package) {
    method push_aur (line 64) | pub fn push_aur(&mut self, pkg: aur_depends::AurPackage) {
    method extend_aur (line 78) | pub fn extend_aur<I: IntoIterator<Item = aur_depends::AurPackage>>(&mu...
    method extend (line 82) | pub fn extend<I: IntoIterator<Item = Package>>(&mut self, iter: I) {
  type Warnings (line 88) | pub struct Warnings<'a> {
  function missing (line 96) | pub fn missing(&self, color: Colors, cols: Option<usize>) -> &Self {
  function ood (line 107) | pub fn ood(&self, color: Colors, cols: Option<usize>) -> &Self {
  function orphans (line 118) | pub fn orphans(&self, color: Colors, cols: Option<usize>) -> &Self {
  function all (line 129) | pub fn all(&self, color: Colors, cols: Option<usize>) {
  function cache_info_with_warnings (line 136) | pub async fn cache_info_with_warnings<'a, S: AsRef<str> + Send + Sync>(
  function getpkgbuilds (line 182) | pub async fn getpkgbuilds(config: &mut Config) -> Result<i32> {
  function repo_pkgbuilds (line 233) | fn repo_pkgbuilds(config: &Config, pkgs: &[Targ<'_>]) -> Result<i32> {
  function print_download (line 256) | pub fn print_download(_config: &Config, n: usize, total: usize, pkg: &st...
  function pkgbuild_pkgbuilds (line 267) | fn pkgbuild_pkgbuilds(config: &Config, pkgbuild: &[Targ]) -> Result<i32> {
  function aur_pkgbuilds (line 325) | async fn aur_pkgbuilds(config: &Config, bases: &Bases) -> Result<()> {
  function new_aur_pkgbuilds (line 389) | pub async fn new_aur_pkgbuilds(
  function show_comments (line 434) | pub async fn show_comments(config: &mut Config) -> Result<i32> {
  function split_target_pkgbuilds (line 511) | fn split_target_pkgbuilds<'a, T: AsTarg>(
  function show_pkgbuilds (line 556) | pub async fn show_pkgbuilds(config: &mut Config) -> Result<i32> {
  function pipe_bat (line 662) | fn pipe_bat(config: &Config, pkgbuild: &[u8]) -> Result<()> {

FILE: src/exec.rs
  type Status (line 45) | pub struct Status(pub i32);
    method code (line 56) | pub fn code(self) -> i32 {
    method success (line 60) | pub fn success(self) -> Result<i32, Status> {
  method fmt (line 48) | fn fmt(&self, _f: &mut Formatter<'_>) -> std::fmt::Result {
  function command_err (line 69) | fn command_err(cmd: &Command) -> String {
  function command_status (line 81) | pub fn command_status(cmd: &mut Command) -> Result<Status> {
  function command (line 100) | pub fn command(cmd: &mut Command) -> Result<()> {
  function command_output (line 107) | pub fn command_output(cmd: &mut Command) -> Result<Output> {
  function spawn (line 132) | pub fn spawn(cmd: &mut Command) -> Result<Child> {
  function wait (line 137) | pub fn wait(cmd: &Command, child: &mut Child) -> Result<Status> {
  function spawn_sudo (line 145) | pub fn spawn_sudo(sudo: String, flags: Vec<String>) -> Result<()> {
  function sudo_loop (line 151) | fn sudo_loop<S: AsRef<OsStr>>(sudo: &str, flags: &[S]) -> Result<()> {
  function update_sudo (line 158) | fn update_sudo<S: AsRef<OsStr>>(sudo: &str, flags: &[S]) -> Result<()> {
  function wait_for_lock (line 166) | fn wait_for_lock(config: &Config) {
  function new_pacman (line 183) | fn new_pacman<S: AsRef<str> + Display + Debug>(config: &Config, args: &A...
  function pacman (line 200) | pub fn pacman<S: AsRef<str> + Display + Debug>(config: &Config, args: &A...
  function pacman_output (line 205) | pub fn pacman_output<S: AsRef<str> + Display + std::fmt::Debug>(
  function new_makepkg (line 214) | fn new_makepkg<S: AsRef<OsStr>>(
  function makepkg_dest (line 231) | pub fn makepkg_dest<S: AsRef<OsStr>>(
  function makepkg (line 241) | pub fn makepkg<S: AsRef<OsStr>>(config: &Config, dir: &Path, args: &[S])...
  function makepkg_output_dest (line 245) | pub fn makepkg_output_dest<S: AsRef<OsStr>>(
  function makepkg_output (line 255) | pub fn makepkg_output<S: AsRef<OsStr>>(config: &Config, dir: &Path, args...
  function has_command (line 259) | pub fn has_command(name: &str) -> bool {

FILE: src/fmt.rs
  type ToInstall (line 16) | struct ToInstall {
  function opt (line 23) | pub fn opt(opt: &Option<String>) -> String {
  function date (line 27) | pub fn date(date: i64) -> String {
  function ymd (line 32) | pub fn ymd(date: i64) -> String {
  function link_str (line 37) | pub fn link_str(enabled: bool, s: &str, url: &str) -> String {
  function word_len (line 45) | fn word_len(s: &str) -> usize {
  function print_indent (line 60) | pub fn print_indent<S: AsRef<str>>(
  function color_repo (line 120) | pub fn color_repo(enabled: bool, name: &str) -> String {
  function print_target (line 136) | pub fn print_target(targ: &str, quiet: bool) {
  function base_string (line 144) | fn base_string(config: &Config, base: &Base, devel: &HashSet<String>) ->...
  function to_install (line 172) | fn to_install(config: &Config, actions: &Actions, devel: &HashSet<String...
  function print_install (line 237) | pub fn print_install(config: &Config, actions: &Actions, devel: &HashSet...
  function repo (line 286) | fn repo<'a>(config: &'a Config, pkg: &str) -> &'a str {
  function old_ver (line 302) | fn old_ver<'a>(config: &'a Config, pkg: &str) -> Option<&'a Ver> {
  function print_install_verbose (line 314) | pub fn print_install_verbose(config: &Config, actions: &Actions, devel: ...

FILE: src/help.rs
  function help (line 3) | pub fn help() {

FILE: src/info.rs
  function info (line 18) | pub async fn info(conf: &mut Config, verbose: bool) -> Result<i32, Error> {
  function longest (line 83) | fn longest(config: &Config) -> usize {
  function arch_len (line 138) | fn arch_len(vec: &[ArchVec]) -> usize {
  function print_pkgbuild_info (line 146) | pub fn print_pkgbuild_info(
  function print_aur_info (line 211) | pub fn print_aur_info(
  function print (line 269) | pub fn print(color: Colors, indent: usize, cols: Option<usize>, k: &str,...
  function print_list (line 273) | fn print_list(color: Colors, indent: usize, cols: Option<usize>, k: &str...
  function print_info (line 281) | fn print_info<'a>(
  function get_terminal_width (line 301) | pub fn get_terminal_width() -> Option<usize> {

FILE: src/install.rs
  type Status (line 40) | pub struct Status(pub i32);
    method fmt (line 43) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
    method err (line 51) | pub fn err(n: i32) -> Result<()> {
  type Installer (line 56) | struct Installer {
    method new (line 100) | fn new(config: &Config) -> Self {
    method early_refresh (line 127) | fn early_refresh(&self, config: &mut Config) -> Result<()> {
    method early_pacman (line 138) | fn early_pacman(&mut self, config: &mut Config, targets: Vec<String>) ...
    method sudo_loop (line 148) | fn sudo_loop(&self, config: &Config) -> Result<()> {
    method news (line 157) | async fn news(&self, config: &Config) -> Result<()> {
    method download_pkgbuilds (line 180) | async fn download_pkgbuilds(&mut self, config: &Config, bases: &Bases)...
    method chroot_install (line 213) | fn chroot_install(&self, config: &Config, build: &[Base], repo_targs: ...
    method dep_or_exp (line 310) | fn dep_or_exp(
    method do_install (line 364) | fn do_install(&mut self, config: &Config) -> Result<()> {
    method build_cleanup (line 410) | fn build_cleanup(&self, config: &Config, build: &[Base]) -> Result<()> {
    method debug_paths (line 461) | fn debug_paths(
    method build_pkgbuild (line 531) | fn build_pkgbuild(
    method queue_install (line 632) | fn queue_install(
    method add_pkg (line 652) | fn add_pkg(
    method build_install_pkgbuild (line 700) | fn build_install_pkgbuild(
    method build_install_pkgbuilds (line 840) | async fn build_install_pkgbuilds(
    method install (line 899) | pub async fn install(&mut self, config: &mut Config, targets_str: &[St...
    method resolve_targets (line 947) | async fn resolve_targets<'a>(
    method shoud_just_pacman (line 1051) | fn shoud_just_pacman(
    method prepare_build (line 1070) | async fn prepare_build(
    method upgrade_later (line 1251) | fn upgrade_later(&self, config: &Config) -> bool {
  function install (line 77) | pub async fn install(config: &mut Config, targets_str: &[String]) -> Res...
  function build_dirs (line 83) | pub async fn build_dirs(config: &mut Config, dirs: Vec<PathBuf>) -> Resu...
  function is_debug (line 1256) | fn is_debug(pkg: &alpm::Package) -> bool {
  function print_warnings (line 1266) | fn print_warnings(config: &Config, cache: &Cache, actions: Option<&Actio...
  function fmt_stack (line 1333) | fn fmt_stack(want: &DepMissing) -> String {
  function check_actions (line 1340) | fn check_actions(
  function repo_install (line 1478) | fn repo_install(
  function asdeps (line 1536) | fn asdeps<S: AsRef<str>>(config: &Config, pkgs: &[S]) -> Result<()> {
  function asexp (line 1540) | fn asexp<S: AsRef<str>>(config: &Config, pkgs: &[S]) -> Result<()> {
  function set_install_reason (line 1544) | fn set_install_reason<S: AsRef<str>>(config: &Config, reason: &str, pkgs...
  function pre_build_command (line 1568) | fn pre_build_command(config: &Config, dir: &Path, base: &str, version: &...
  function file_manager (line 1581) | fn file_manager(
  function run_file_manager (line 1595) | fn run_file_manager(config: &Config, fm: &str, dir: &Path) -> Result<()> {
  function print_dir (line 1607) | fn print_dir(
  function review (line 1709) | pub fn review(config: &Config, fetch: &aur_fetch::Fetch, pkgs: &[&str]) ...
  function update_aur_list (line 1803) | fn update_aur_list(config: &Config) {
  function chroot (line 1813) | fn chroot(config: &Config) -> Chroot {
  function trim_dep_ver (line 1845) | fn trim_dep_ver(dep: &str, trim: bool) -> &str {
  function check_deps_local (line 1853) | fn check_deps_local<'a>(
  function check_deps_sync (line 1870) | fn check_deps_sync<'a>(
  function supported_deps (line 1887) | fn supported_deps<'a>(config: &'a Config, deps: &'a ArchVecs) -> impl It...
  function deps_not_satisfied (line 1892) | fn deps_not_satisfied<'a>(config: &'a Config, base: &'a Base) -> Result<...
  function deps_not_satisfied_by_repo (line 1971) | fn deps_not_satisfied_by_repo<'a>(config: &'a Config, base: &'a Base) ->...
  function copy_sync_args (line 2031) | pub fn copy_sync_args<'a>(config: &'a Config, args: &mut Args<&'a str>) {
  function parse_package_list (line 2053) | fn parse_package_list(
  function needs_build (line 2084) | fn needs_build(
  function sign_pkg (line 2136) | fn sign_pkg(config: &Config, paths: &[&str]) -> Result<()> {
  function needs_install (line 2163) | fn needs_install(config: &Config, base: &Base, version: &str, pkg: &str)...
  function is_ver_char (line 2185) | fn is_ver_char(c: char) -> bool {

FILE: src/keys.rs
  function check_pgp_keys (line 16) | pub fn check_pgp_keys(
  function import_keys (line 75) | fn import_keys(config: &Config, import: &HashMap<&str, Vec<&Base>>) -> R...

FILE: src/lib.rs
  type RaurHandle (line 32) | type RaurHandle = raur::Handle;
  type RaurHandle (line 34) | type RaurHandle = crate::mock::Mock;
  function debug_enabled (line 68) | fn debug_enabled() -> bool {
  function alpm_debug_enabled (line 72) | fn alpm_debug_enabled() -> bool {
  function print_error (line 76) | fn print_error(color: Style, err: Error) {
  function run (line 111) | pub async fn run<S: AsRef<str>>(args: &[S]) -> i32 {
  function run2 (line 162) | async fn run2<S: AsRef<str>>(config: &mut Config, args: &[S]) -> Result<...
  function handle_cmd (line 204) | async fn handle_cmd(config: &mut Config) -> Result<i32> {
  function handle_upgrade (line 228) | async fn handle_upgrade(config: &mut Config) -> Result<i32> {
  function handle_build (line 238) | async fn handle_build(config: &mut Config) -> Result<i32> {
  function handle_query (line 248) | async fn handle_query(config: &mut Config) -> Result<i32> {
  function handle_show (line 265) | async fn handle_show(config: &mut Config) -> Result<i32> {
  function handle_get_pkg_build (line 279) | async fn handle_get_pkg_build(config: &mut Config) -> Result<i32> {
  function handle_default (line 289) | async fn handle_default(config: &mut Config) -> Result<i32> {
  function handle_remove (line 317) | fn handle_remove(config: &mut Config) -> Result<i32> {
  function handle_test (line 321) | async fn handle_test(config: &Config) -> Result<i32> {
  function handle_sync (line 329) | async fn handle_sync(config: &mut Config) -> Result<i32> {
  function handle_repo (line 372) | fn handle_repo(config: &mut Config) -> Result<i32> {
  function handle_chroot (line 412) | fn handle_chroot(config: &Config) -> Result<i32> {

FILE: src/main.rs
  function main (line 5) | async fn main() {

FILE: src/mock.rs
  type Mock (line 12) | pub struct Mock {
    method new (line 17) | pub fn new() -> Result<Self> {
    method client (line 71) | pub fn client(&self) -> reqwest::Client {
  type Err (line 78) | type Err = raur::Error;
  method raw_info (line 80) | async fn raw_info<S: AsRef<str> + Send + Sync>(
  method search_by (line 95) | async fn search_by<S: AsRef<str> + Send + Sync>(

FILE: src/news.rs
  type Tag (line 12) | enum Tag {
  function newest_pkg (line 19) | pub fn newest_pkg(config: &Config) -> i64 {
  function news (line 32) | pub async fn news(config: &Config) -> Result<i32> {
  function parse_html (line 76) | fn parse_html(config: &Config, html: &str) {
  function parse_tag (line 110) | fn parse_tag(iter: &mut Chars) -> Tag {

FILE: src/order.rs
  function order (line 8) | pub async fn order(config: &mut Config) -> Result<i32> {
  function print_install (line 35) | fn print_install(actions: &Actions, quiet: bool) {
  function print_build (line 50) | fn print_build(config: &Config, actions: &mut Actions, quiet: bool) {
  function print_missing (line 92) | fn print_missing(actions: &Actions) {
  function print_conflicting (line 102) | fn print_conflicting(conflicts: Vec<Conflict>, type_str: &str) {
  function get_pkg_type (line 114) | fn get_pkg_type<T>(pk: &Package<T>) -> &'static str {

FILE: src/pkgbuild.rs
  type RepoSource (line 22) | pub enum RepoSource {
    method url (line 30) | pub fn url(&self) -> Option<&Url> {
    method set_path (line 37) | pub fn set_path<P: Into<PathBuf>>(&mut self, p: P) {
    method set_url (line 44) | pub fn set_url(&mut self, u: Url) {
  type PkgbuildPkg (line 54) | pub struct PkgbuildPkg {
  type PkgbuildRepo (line 61) | pub struct PkgbuildRepo {
    method new (line 72) | pub fn new(name: String, path: PathBuf) -> Self {
    method path (line 84) | pub fn path(&self) -> Result<PathBuf> {
    method pkgs (line 95) | pub fn pkgs(&self, config: &Config) -> &[PkgbuildPkg] {
    method base (line 100) | pub fn base(&self, config: &Config, base: &str) -> Option<&PkgbuildPkg> {
    method pkg (line 106) | pub fn pkg(&self, config: &Config, pkg: &str) -> Option<(&PkgbuildPkg,...
    method from_cwd (line 112) | pub fn from_cwd(config: &Config) -> Result<PkgbuildRepo> {
    method from_pkgbuilds (line 128) | pub fn from_pkgbuilds(config: &Config, dirs: &[PathBuf]) -> Result<Pkg...
    method read_pkgs (line 147) | fn read_pkgs(&self, config: &Config) -> Vec<PkgbuildPkg> {
    method generate_srcinfos (line 165) | fn generate_srcinfos(&self, config: &Config) {
    method generate_srcinfo (line 173) | fn generate_srcinfo(&self, config: &Config, path: &Path) -> Result<()> {
    method print_generate_srcinfo (line 194) | fn print_generate_srcinfo(&self, config: &Config, pkg: &str) {
    method for_each_pkgbuild (line 207) | fn for_each_pkgbuild<T, F: Fn(&Path, &mut T)>(&self, data: T, f: F) ->...
    method try_for_each_pkgbuild (line 215) | fn try_for_each_pkgbuild<T, F: Fn(&Path, &mut T) -> Result<()>>(
    method try_for_each_pkgbuild_internal (line 227) | fn try_for_each_pkgbuild_internal<T, F: Fn(&Path, &mut T) -> Result<()>>(
    method read_pkg (line 263) | fn read_pkg(&self, config: &Config, path: &Path) -> Result<PkgbuildPkg> {
  type PkgbuildRepos (line 286) | pub struct PkgbuildRepos {
    method new (line 292) | pub fn new(fetch: Fetch) -> Self {
    method add_repo (line 299) | pub fn add_repo(&mut self, name: String) -> &mut PkgbuildRepo {
    method repo (line 305) | pub fn repo(&self, name: &str) -> Option<&PkgbuildRepo> {
    method target (line 309) | pub fn target(
    method pkg (line 321) | pub fn pkg(&self, config: &Config, name: &str) -> Option<(&PkgbuildPkg...
    method repo_mut (line 328) | pub fn repo_mut(&mut self, name: &str) -> Option<&mut PkgbuildRepo> {
    method aur_depends_repo (line 332) | pub fn aur_depends_repo(&self, config: &Config) -> Vec<aur_depends::Pk...
    method refresh (line 342) | pub fn refresh(&self, config: &Config) -> Result<()> {
  function read_srcinfo_from_pkgbuild (line 418) | pub fn read_srcinfo_from_pkgbuild(config: &Config, dir: &Path) -> Result...

FILE: src/query.rs
  function print_upgrade_list (line 13) | pub async fn print_upgrade_list(config: &mut Config) -> Result<i32> {
  function print_upgrade (line 137) | fn print_upgrade(config: &Config, name: &str, local_ver: &str, new_ver: ...

FILE: src/remove.rs
  function remove (line 12) | pub fn remove(config: &mut Config) -> Result<i32> {

FILE: src/repo.rs
  function add (line 22) | pub fn add<P: AsRef<Path>, S: AsRef<OsStr>>(
  function remove (line 98) | pub fn remove<P: AsRef<Path>, S: AsRef<OsStr>>(
  function init (line 130) | pub fn init<P: AsRef<Path>>(config: &Config, path: P, name: &str) -> Res...
  function is_configured_local_db (line 135) | fn is_configured_local_db(config: &Config, db: &Db) -> bool {
  function file (line 143) | pub fn file(repo: &Db) -> Option<&str> {
  function is_local_db (line 149) | fn is_local_db(db: &alpm::Db) -> bool {
  function repo_aur_dbs (line 153) | pub fn repo_aur_dbs(config: &Config) -> (AlpmListMut<&Db>, AlpmListMut<&...
  function delete (line 162) | pub fn delete(config: &mut Config) -> Result<(), Error> {
  function refresh (line 252) | pub fn refresh<S: AsRef<OsStr>>(config: &mut Config, repos: &[S]) -> Res...
  function clean (line 310) | pub fn clean(config: &mut Config) -> Result<i32> {
  function print (line 391) | pub fn print(

FILE: src/resolver.rs
  function flags (line 12) | pub fn flags(config: &mut Config) -> aur_depends::Flags {
  function resolver (line 61) | pub fn resolver<'a, 'b>(

FILE: src/search.rs
  type AnyPkg (line 20) | pub enum AnyPkg<'a> {
  function search (line 26) | pub async fn search(config: &Config) -> Result<i32> {
  function search_pkgbuilds (line 77) | fn search_pkgbuilds<'a>(
  function search_local (line 112) | fn search_local<'a>(config: &'a Config, targets: &[String]) -> Result<Ve...
  function search_repos (line 129) | fn search_repos<'a>(config: &'a Config, targets: &[String]) -> Result<Ve...
  function search_target (line 148) | async fn search_target(config: &Config, targets: &mut Vec<String>) -> Re...
  function search_aur_regex (line 168) | async fn search_aur_regex(config: &Config, targets: &[String]) -> Result...
  function search_aur (line 192) | async fn search_aur(config: &Config, targets: &[String]) -> Result<Vec<r...
  function print_pkgbuild_pkg (line 255) | fn print_pkgbuild_pkg(
  function print_pkg (line 303) | fn print_pkg(config: &Config, pkg: &raur::Package, quiet: bool) {
  function print_alpm_pkg (line 369) | fn print_alpm_pkg(config: &Config, pkg: &alpm::Package, quiet: bool) {
  function interactive_search_local (line 439) | pub fn interactive_search_local(config: &mut Config) -> Result<()> {
  function interactive_search (line 457) | pub async fn interactive_search(config: &mut Config, install: bool) -> R...
  function interactive_menu (line 483) | pub fn interactive_menu(
  function print_any_pkg (line 574) | fn print_any_pkg(config: &Config, n: usize, pad: usize, pkg: &AnyPkg) {

FILE: src/stats.rs
  type Info (line 16) | struct Info<'a> {
  function collect_info (line 23) | async fn collect_info(config: &Config, max_n: usize) -> Result<Info<'_>> {
  function print_line_separator (line 56) | fn print_line_separator(config: &Config) {
  function stats (line 66) | pub async fn stats(config: &Config) -> Result<i32> {

FILE: src/sync.rs
  function filter (line 13) | pub async fn filter(config: &Config) -> Result<i32> {
  function list (line 28) | pub async fn list(config: &Config) -> Result<i32> {
  function list_pkgbuilds (line 78) | pub fn list_pkgbuilds(config: &Config, repos: &PkgbuildRepos, repo: &str) {
  function list_aur (line 97) | pub async fn list_aur(config: &Config) -> Result<()> {
  function print_pkg (line 125) | fn print_pkg(config: &Config, mut stdout: impl Write, line: &[u8], repo:...

FILE: src/upgrade.rs
  type Upgrades (line 17) | pub struct Upgrades {
  function repo_upgrades (line 26) | pub fn repo_upgrades(config: &Config) -> Result<Vec<&alpm::Package>> {
  function get_version_diff (line 53) | fn get_version_diff(config: &Config, old: &str, new: &str) -> (String, S...
  function print_upgrade (line 84) | fn print_upgrade(
  function get_resolver_upgrades (line 115) | async fn get_resolver_upgrades<'a, 'b>(
  function get_devel_upgrades (line 155) | async fn get_devel_upgrades(config: &Config, print: bool) -> Result<Vec<...
  function net_upgrades (line 172) | pub async fn net_upgrades<'res>(
  function get_upgrades (line 183) | pub async fn get_upgrades<'a, 'b>(
  function db_len (line 470) | fn db_len(name: &str, repo_name: &str, aurdbs: AlpmList<&Db>) -> usize {

FILE: src/util.rs
  type NumberMenu (line 20) | pub struct NumberMenu<'a> {
  function pkg_base_or_name (line 27) | pub fn pkg_base_or_name(pkg: &Package) -> &str {
  function split_repo_aur_targets (line 31) | pub fn split_repo_aur_targets<'a, T: AsTarg>(
  function split_repo_aur_info (line 86) | pub fn split_repo_aur_info<'a, T: AsTarg>(
  function ask (line 117) | pub fn ask(config: &Config, question: &str, default: bool) -> bool {
  function input (line 151) | pub fn input(config: &Config, question: &str) -> String {
  function unneeded_pkgs (line 167) | pub fn unneeded_pkgs(config: &Config, keep_optional: bool) -> Vec<&str> {
  function new (line 215) | pub fn new(input: &'a str) -> Self {
  function contains (line 285) | pub fn contains(&self, n: usize, word: &str) -> bool {
  function get_provider (line 296) | pub fn get_provider(max: usize, no_confirm: bool) -> usize {
  function split_repo_aur_pkgs (line 339) | pub fn split_repo_aur_pkgs<S: AsRef<str> + Clone>(config: &Config, pkgs:...
  function repo_aur_pkgs (line 355) | pub fn repo_aur_pkgs(config: &Config) -> (Vec<&alpm::Package>, Vec<&alpm...
  function redirect_to_stderr (line 372) | pub fn redirect_to_stderr() -> Result<OwnedFd> {
  function reopen_stdin (line 378) | pub fn reopen_stdin() -> Result<()> {
  function reopen_stdout (line 384) | pub fn reopen_stdout<Fd: AsFd>(file: Fd) -> Result<()> {
  function is_arch_repo (line 389) | pub fn is_arch_repo(name: &str) -> bool {

FILE: tests/common/mod.rs
  function run (line 12) | async fn run(run_args: &[&str], repo: bool) -> Result<(TempDir, i32)> {
  function run_normal (line 194) | pub async fn run_normal(run_args: &[&str]) -> Result<(TempDir, i32)> {
  function run_combined (line 198) | pub async fn run_combined(run_args: &[&str]) -> Result<(TempDir, i32)> {
  function run_chroot (line 204) | pub async fn run_chroot(run_args: &[&str]) -> Result<(TempDir, i32)> {
  function run_repo (line 210) | pub async fn run_repo(run_args: &[&str]) -> Result<(TempDir, i32)> {
  function run_repo_chroot (line 215) | pub async fn run_repo_chroot(run_args: &[&str]) -> Result<(TempDir, i32)> {
  function alpm (line 221) | pub fn alpm(tmp: &TempDir) -> Result<Alpm> {
  function assert_in_local_repo (line 229) | pub fn assert_in_local_repo(alpm: &Alpm, pkg: &str) {

FILE: tests/common/tests.rs
  function pacaur (line 5) | async fn pacaur() {
  function pacaur_ignore (line 22) | async fn pacaur_ignore() {
  function pacaur_as_deps (line 39) | async fn pacaur_as_deps() {
  function pacaur_as_exp (line 56) | async fn pacaur_as_exp() {
  function pacaur_no_deps (line 73) | async fn pacaur_no_deps() {
  function pacaur_assume (line 84) | async fn pacaur_assume() {
  function update (line 96) | async fn update() {
  function update_ignore (line 106) | async fn update_ignore() {
  function update_repo (line 116) | async fn update_repo() {
  function no_exist (line 126) | async fn no_exist() {
  function no_exist_r (line 132) | async fn no_exist_r() {
  function no_exist_a (line 138) | async fn no_exist_a() {
  function repo_ignore (line 144) | async fn repo_ignore() {
  function pkgbuild (line 153) | async fn pkgbuild() {
  function pkgbuild_repo (line 173) | async fn pkgbuild_repo() {
  function devel (line 193) | async fn devel() {
Condensed preview — 351 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (1,749K chars).
[
  {
    "path": ".dockerignore",
    "chars": 18,
    "preview": "target\nparu.tar.*\n"
  },
  {
    "path": ".github/FUNDING.yml",
    "chars": 54,
    "preview": "github: Morganamilo\ncustom: https://paypal.me/zzsugar\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug-report.md",
    "chars": 378,
    "preview": "---\nname: Bug Report\nabout: Report a Bug\ntitle: ''\nlabels: ''\nassignees: ''\n\n---\n\n### Affected Version\n**paru -V**\n\n### "
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature_request.md",
    "chars": 225,
    "preview": "---\nname: Feature request\nabout: Suggest an idea for this project\ntitle: ''\nlabels: ''\nassignees: ''\n\n---\n\n**Have you ch"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/issue.md",
    "chars": 376,
    "preview": "---\nname: Issue\nabout: Report an Issue\ntitle: ''\nlabels: ''\nassignees: ''\n\n---\n\n### Affected Version\n**paru -V**\n\n### De"
  },
  {
    "path": ".github/workflows/build.yml",
    "chars": 2280,
    "preview": "name: Build Release\non:\n  push:\n    tags:\n      - v*\n    branches:\n       - test-release/*\n\njobs:\n  get-version:\n    run"
  },
  {
    "path": ".github/workflows/mo.yml",
    "chars": 397,
    "preview": "name: Build Translations\n\non:\n  push:\n    paths:\n      - 'po/*.po'\n  pull_request:\n    paths:\n      - 'po/*.po'\n\nenv:\n  "
  },
  {
    "path": ".github/workflows/paru.yml",
    "chars": 1915,
    "preview": "name: Paru\n\non:\n  push:\n    paths:\n      - 'src/*.rs'\n      - 'testdata/**'\n      - 'tests/**'\n      - 'Cargo.*'\n  pull_"
  },
  {
    "path": ".gitignore",
    "chars": 50,
    "preview": "/target\nparu.tar.*\npo/*.mo\nlocale/\ntestdata/pkg/*\n"
  },
  {
    "path": "CHANGELOG.md",
    "chars": 21185,
    "preview": "# Changelog\n\n## Paru v2.1.0 (2025-07-08)\n\n### Added\n\n- Add `--chrootpkgs` flag 64ab502\n- Add `--print` flag for `-C` 2fa"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 1952,
    "preview": "# Contributing to paru\n\n## Formatting\n\nPlease format the code using `cargo fmt`\n\n## Building\n\nParu is built with cargo.\n"
  },
  {
    "path": "Cargo.toml",
    "chars": 2093,
    "preview": "[package]\nname = \"paru\"\nversion = \"2.1.0\"\nauthors = [\"morganamilo <morganamilo@archlinux.org>\"]\nedition = \"2021\"\n\ndescri"
  },
  {
    "path": "Dockerfile",
    "chars": 1154,
    "preview": "FROM debian:13 AS build-stage\n\nARG PACMAN_HASH=b9f7d4a5b0bea75953f5892621a2caecc5672de5\nARG PACMAN_VER=7.1.0\nARG DEBIAN_"
  },
  {
    "path": "LICENSE",
    "chars": 35141,
    "preview": "                    GNU GENERAL PUBLIC LICENSE\n                       Version 3, 29 June 2007\n\n Copyright (C) 2007 Free "
  },
  {
    "path": "README.md",
    "chars": 3066,
    "preview": "# Paru\n\nFeature packed AUR helper\n\n[![paru](https://img.shields.io/aur/version/paru?color=1793d1&label=paru&logo=arch-li"
  },
  {
    "path": "completions/bash",
    "chars": 4466,
    "preview": "# This file is in the public domain.\n\n_arch_compgen() {\n  local i r\n  COMPREPLY=($(compgen -W '$*' -- \"$cur\"))\n  for ((i"
  },
  {
    "path": "completions/fish",
    "chars": 18910,
    "preview": "# vim:fdm=marker foldlevel=0 tabstop=2 shiftwidth=2 filetype=fish\n# Original Author for pacman: Giorgio Lando <patroclo7"
  },
  {
    "path": "completions/zsh",
    "chars": 21512,
    "preview": "#compdef paru\n# vim:fdm=marker foldlevel=0 tabstop=2 shiftwidth=2 filetype=zsh\n\ntypeset -A opt_args\nsetopt extendedglob\n"
  },
  {
    "path": "man/paru.8",
    "chars": 24892,
    "preview": ".TH \"PARU\" \"8\" \"2021\\-03\\-24\" \"paru v1.10.0 \"Paru Manual\"\n.nh\n.ad l\n.SH NAME\nparu \\- AUR helper and pacman wrapper\n\n.SH "
  },
  {
    "path": "man/paru.conf.5",
    "chars": 14089,
    "preview": ".TH \"PARU.CONF\" \"5\" \"2021\\-03\\-24\" \"paru v1.10.0\" \"Paru Manual\"\n.nh\n.ad l\n.SH NAME\nparu.conf \\- paru configuration file\n"
  },
  {
    "path": "paru.conf",
    "chars": 479,
    "preview": "#\n# $PARU_CONF\n# /etc/paru.conf\n# ~/.config/paru/paru.conf\n#\n# See the paru.conf(5) manpage for options\n\n#\n# GENERAL OPT"
  },
  {
    "path": "po/ca.po",
    "chars": 36105,
    "preview": "# Paru Catalan translation\n# Copyright (C) 2021\n# This file is distributed under the same license as the paru package.\n#"
  },
  {
    "path": "po/cs.po",
    "chars": 33418,
    "preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE paru'S COPYRIGHT HOLDER\n# This file is distributed under the same lic"
  },
  {
    "path": "po/de.po",
    "chars": 35305,
    "preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE paru'S COPYRIGHT HOLDER\n# This file is distributed under the same lic"
  },
  {
    "path": "po/es.po",
    "chars": 35760,
    "preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE paru'S COPYRIGHT HOLDER\n# This file is distributed under the same lic"
  },
  {
    "path": "po/fi.po",
    "chars": 29350,
    "preview": "# Paru Finnish translation \n# Copyright (C) YEAR THE paru'S COPYRIGHT HOLDER\n# This file is distributed under the same l"
  },
  {
    "path": "po/fr.po",
    "chars": 36668,
    "preview": "# Paru French translation\n# Copyright (C) YEAR THE paru'S COPYRIGHT HOLDER\n# This file is distributed under the same lic"
  },
  {
    "path": "po/hi.po",
    "chars": 28825,
    "preview": "# Paru Hindi translation\n# Copyright (C) 2021\n# This file is distributed under the same license as the paru package.\n# A"
  },
  {
    "path": "po/hr.po",
    "chars": 33605,
    "preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE paru'S COPYRIGHT HOLDER\n# This file is distributed under the same lic"
  },
  {
    "path": "po/hu.po",
    "chars": 35468,
    "preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE paru'S COPYRIGHT HOLDER\n# This file is distributed under the same lic"
  },
  {
    "path": "po/it.po",
    "chars": 30104,
    "preview": "# Translation of paru into Italian.\n# This file is distributed under the same license as the paru package.\n# Francesco M"
  },
  {
    "path": "po/ja.po",
    "chars": 31073,
    "preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE paru'S COPYRIGHT HOLDER\n# This file is distributed under the same lic"
  },
  {
    "path": "po/ko.po",
    "chars": 30914,
    "preview": "# Paru Korean translation\n# Copyright (C) YEAR THE paru'S COPYRIGHT HOLDER\n# This file is distributed under the same lic"
  },
  {
    "path": "po/nl.po",
    "chars": 35863,
    "preview": "# DUTCH TRANSLATIONS.\n# Copyright (C) YEAR THE paru'S COPYRIGHT HOLDER\n# This file is distributed under the same license"
  },
  {
    "path": "po/paru.pot",
    "chars": 22755,
    "preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE paru'S COPYRIGHT HOLDER\n# This file is distributed under the same lic"
  },
  {
    "path": "po/pt.po",
    "chars": 35647,
    "preview": "# Portuguese translation of paru.\n# Copyright (C) YEAR THE paru'S COPYRIGHT HOLDER\n# This file is distributed under the "
  },
  {
    "path": "po/pt_BR.po",
    "chars": 34058,
    "preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE paru'S COPYRIGHT HOLDER\n# This file is distributed under the same lic"
  },
  {
    "path": "po/ro.po",
    "chars": 29430,
    "preview": "# Paru Romanian translation\n# Copyright (C) 2021\n# This file is distributed under the same license as the paru package.\n"
  },
  {
    "path": "po/ru.po",
    "chars": 29367,
    "preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE paru'S COPYRIGHT HOLDER\n# This file is distributed under the same lic"
  },
  {
    "path": "po/sk.po",
    "chars": 33529,
    "preview": "# Slovak translation of paru.\n# Copyright (C) YEAR THE paru'S COPYRIGHT HOLDER\n# This file is distributed under the same"
  },
  {
    "path": "po/sv.po",
    "chars": 35158,
    "preview": "# paru Swedish translation.\n# Copyright (C) YEAR THE paru'S COPYRIGHT HOLDER\n# This file is distributed under the same l"
  },
  {
    "path": "po/tr.po",
    "chars": 28729,
    "preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE paru'S COPYRIGHT HOLDER\n# This file is distributed under the same lic"
  },
  {
    "path": "po/uk.po",
    "chars": 33949,
    "preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE paru'S COPYRIGHT HOLDER\n# This file is distributed under the same lic"
  },
  {
    "path": "po/zh_CN.po",
    "chars": 30008,
    "preview": "# Paru Simplified Chinese translation\n# Copyright (C) YEAR THE paru'S COPYRIGHT HOLDER\n# This file is distributed under "
  },
  {
    "path": "po/zh_TW.po",
    "chars": 29587,
    "preview": "# Copyright (C) YEAR THE paru'S COPYRIGHT HOLDER\n# This file is distributed under the same license as the paru package.\n"
  },
  {
    "path": "scripts/dist",
    "chars": 224,
    "preview": "#!/bin/bash\nset -e\n\ncargo build --release --features generate --locked --target-dir target\nscripts/mkmo locale/\nstrip ta"
  },
  {
    "path": "scripts/mkmo",
    "chars": 221,
    "preview": "#!/bin/bash\nset -e\n\nif [ -z \"$1\" ]; then\n\techo \"usage mkmo <dir>\"\n\texit 1\nfi\n\nfor po in po/*.po; do\n\tlang=$(basename ${p"
  },
  {
    "path": "scripts/mkpot",
    "chars": 255,
    "preview": "#!/bin/sh\nset -e\n\nxtr \\\n\t-d paru \\\n\t--msgid-bugs-address https://github.com/Morganamilo/paru \\\n\t--package-name=paru\\\n\t--"
  },
  {
    "path": "scripts/updpo",
    "chars": 84,
    "preview": "#!/bin/sh\nset -e\n\nfor po in po/*.po; do\n\tmsgmerge \"$po\" \"po/paru.pot\" -o \"$po\"\ndone\n"
  },
  {
    "path": "src/args.rs",
    "chars": 4240,
    "preview": "use alpm_utils::Targ;\nuse std::fmt::{Display, Formatter, Result};\n\npub static PACMAN_FLAGS: &[&str] = &[\n    \"disable-do"
  },
  {
    "path": "src/auth.rs",
    "chars": 2299,
    "preview": "use anyhow::{Result, ensure, bail, Context};\nuse std::fs::File;\nuse std::io::{Read, Write};\nuse std::os::unix::io::FromR"
  },
  {
    "path": "src/base.rs",
    "chars": 4323,
    "preview": "use crate::{AurPackage, CustomPackage};\n\nuse std::fmt::{Display, Formatter};\n\nenum PkgNames<A, C> {\n    Aur(A),\n    Cust"
  },
  {
    "path": "src/chroot.rs",
    "chars": 4374,
    "preview": "use crate::config::Config;\nuse crate::exec;\nuse anyhow::{Context, Result};\nuse nix::unistd::{Uid, User};\nuse std::ffi::O"
  },
  {
    "path": "src/clean.rs",
    "chars": 5312,
    "preview": "use crate::config::Config;\n\nuse crate::exec;\nuse crate::print_error;\nuse crate::printtr;\nuse crate::util::ask;\n\nuse std:"
  },
  {
    "path": "src/command_line.rs",
    "chars": 19691,
    "preview": "use crate::args::{PACMAN_FLAGS, PACMAN_GLOBALS};\nuse crate::config::{\n    Colors, Config, ConfigEnum, LocalRepos, Mode, "
  },
  {
    "path": "src/completion.rs",
    "chars": 4042,
    "preview": "use crate::config::Config;\nuse crate::print_error;\n\nuse std::fs::{create_dir_all, metadata, remove_file, OpenOptions};\nu"
  },
  {
    "path": "src/config.rs",
    "chars": 37415,
    "preview": "use crate::args::Args;\nuse crate::devel::save_devel_info;\nuse crate::exec::{self, Status};\nuse crate::fmt::color_repo;\nu"
  },
  {
    "path": "src/devel.rs",
    "chars": 16715,
    "preview": "use crate::config::{Config, LocalRepos};\nuse crate::download::{self, cache_info_with_warnings, Bases};\nuse crate::print_"
  },
  {
    "path": "src/download.rs",
    "chars": 19214,
    "preview": "use crate::config::{Colors, Config, SortMode, YesNoAll};\nuse crate::exec::has_command;\nuse crate::fmt::print_indent;\nuse"
  },
  {
    "path": "src/exec.rs",
    "chars": 6999,
    "preview": "#![allow(clippy::disallowed_methods)]\n\nuse crate::args::Args;\nuse crate::config::Config;\n\nuse std::ffi::OsStr;\nuse std::"
  },
  {
    "path": "src/fmt.rs",
    "chars": 15041,
    "preview": "use std::fmt::Write;\n\nuse std::collections::HashSet;\n\nuse crate::config::Config;\nuse crate::repo;\n\nuse alpm::Ver;\nuse au"
  },
  {
    "path": "src/help.rs",
    "chars": 6697,
    "preview": "use crate::printtr;\n\npub fn help() {\n    printtr!(\"Usage:\");\n    printtr!(\"    paru\");\n    printtr!(\"    paru <operation"
  },
  {
    "path": "src/info.rs",
    "chars": 9172,
    "preview": "use crate::config::{Colors, Config};\nuse crate::download::cache_info_with_warnings;\nuse crate::exec;\nuse crate::fmt::{da"
  },
  {
    "path": "src/install.rs",
    "chars": 69948,
    "preview": "use std::collections::hash_map::Entry;\nuse std::collections::{HashMap, HashSet};\nuse std::env::var;\nuse std::ffi::OsStr;"
  },
  {
    "path": "src/keys.rs",
    "chars": 2258,
    "preview": "use crate::config::Config;\nuse crate::exec::command_status;\nuse crate::exec::{self};\nuse crate::printtr;\nuse crate::util"
  },
  {
    "path": "src/lib.rs",
    "chars": 12555,
    "preview": "mod args;\nmod chroot;\nmod clean;\nmod command_line;\nmod completion;\nmod config;\nmod devel;\nmod download;\nmod exec;\nmod fm"
  },
  {
    "path": "src/main.rs",
    "chars": 183,
    "preview": "use paru::run;\nuse std::process::exit;\n\n#[tokio::main]\nasync fn main() {\n    let args = std::env::args().skip(1).collect"
  },
  {
    "path": "src/mock.rs",
    "chars": 2909,
    "preview": "use std::collections::HashMap;\nuse std::env::var;\nuse std::path::Path;\nuse std::result::Result as StdResult;\n\nuse anyhow"
  },
  {
    "path": "src/news.rs",
    "chars": 3194,
    "preview": "use crate::config::Config;\nuse crate::fmt::print_indent;\n\nuse std::str::Chars;\n\nuse ansiterm::Style;\nuse anyhow::{bail, "
  },
  {
    "path": "src/order.rs",
    "chars": 3643,
    "preview": "use crate::config::Config;\nuse crate::resolver::flags;\nuse anyhow::Result;\nuse aur_depends::{Actions, Conflict, Package,"
  },
  {
    "path": "src/pkgbuild.rs",
    "chars": 12238,
    "preview": "use std::{\n    cell::OnceCell,\n    env::current_dir,\n    fs::{read_dir, File},\n    io::Write,\n    path::{Path, PathBuf},"
  },
  {
    "path": "src/query.rs",
    "chars": 4859,
    "preview": "use std::collections::HashSet;\n\nuse crate::config::{Config, Mode};\nuse crate::devel::{filter_devel_updates, possible_dev"
  },
  {
    "path": "src/remove.rs",
    "chars": 1486,
    "preview": "use crate::devel::{load_devel_info, save_devel_info};\nuse crate::print_error;\nuse crate::search::interactive_search_loca"
  },
  {
    "path": "src/repo.rs",
    "chars": 11999,
    "preview": "use crate::config::{Config, LocalRepos, Sign};\nuse crate::exec::{self, command_status};\nuse crate::fmt::print_indent;\nus"
  },
  {
    "path": "src/resolver.rs",
    "chars": 4913,
    "preview": "use crate::config::{Alpm, Config, LocalRepos, YesNoAll, YesNoAllTree};\nuse crate::fmt::color_repo;\nuse crate::util::{get"
  },
  {
    "path": "src/search.rs",
    "chars": 17738,
    "preview": "use std::path::Path;\n\nuse crate::config::SortBy;\nuse crate::config::{Config, SortMode};\nuse crate::fmt::{color_repo, lin"
  },
  {
    "path": "src/stats.rs",
    "chars": 3107,
    "preview": "use crate::config::{version, Config};\nuse crate::download::cache_info_with_warnings;\nuse crate::printtr;\nuse crate::util"
  },
  {
    "path": "src/sync.rs",
    "chars": 4562,
    "preview": "use crate::config::Config;\nuse crate::pkgbuild::PkgbuildRepos;\nuse crate::{exec, print_error};\n\nuse std::io::{Read, Writ"
  },
  {
    "path": "src/upgrade.rs",
    "chars": 14078,
    "preview": "use crate::config::{Config, LocalRepos};\nuse crate::devel::{filter_devel_updates, possible_devel_updates};\nuse crate::fm"
  },
  {
    "path": "src/util.rs",
    "chars": 11499,
    "preview": "use crate::config::{Config, LocalRepos};\nuse crate::repo;\n\nuse std::collections::btree_map::Entry;\nuse std::collections:"
  },
  {
    "path": "testdata/bin/gpg",
    "chars": 64,
    "preview": "#!/bin/sh\n/usr/bin/gpg --faked-system-time 20220101T000000 \"$@\"\n"
  },
  {
    "path": "testdata/bin/makepkg.bak",
    "chars": 67,
    "preview": "#!/bin/sh\nbash -x /usr/local/bin/local/makepkg \"$@\" | tee /dev/tty\n"
  },
  {
    "path": "testdata/bin/pacman",
    "chars": 80,
    "preview": "#!/bin/sh\n/usr/local/bin/pacman --config \"$PACMAN_CONF\" --dbpath \"$DBPATH\" \"$@\"\n"
  },
  {
    "path": "testdata/bin/pacman.bak",
    "chars": 108,
    "preview": "#!/bin/sh\n#/usr/local/bin/pacman --config \"$PACMAN_CONF\" --dbpath \"$DBPATH\" \"$@\"\n/usr/local/bin/pacman \"$@\"\n"
  },
  {
    "path": "testdata/clone/auracle-git/.SRCINFO",
    "chars": 522,
    "preview": "pkgbase = auracle-git\n\tpkgdesc = A flexible client for the AUR\n\tpkgver = r316.dfbd170\n\tpkgrel = 1\n\turl = https://github."
  },
  {
    "path": "testdata/clone/auracle-git/PKGBUILD",
    "chars": 260,
    "preview": "pkgname=auracle-git\n_pkgname=auracle\npkgver=r366.8739929\npkgrel=1\narch=('x86_64' 'i686')\ndepends=('pacman' 'libcurl.so' "
  },
  {
    "path": "testdata/clone/devel/.SRCINFO",
    "chars": 69,
    "preview": "pkgbase = devel\n\tpkgver = 1\n\tpkgrel = 1\n\tarch = any\n\npkgname = devel\n"
  },
  {
    "path": "testdata/clone/devel/PKGBUILD",
    "chars": 43,
    "preview": "pkgname=devel\npkgver=2\npkgrel=1\narch=(any)\n"
  },
  {
    "path": "testdata/clone/pacaur/.SRCINFO",
    "chars": 418,
    "preview": "pkgbase = pacaur\n\tpkgdesc = An AUR helper that minimizes user interaction\n\tpkgver = 4.8.6\n\tpkgrel = 1\n\turl = https://git"
  },
  {
    "path": "testdata/clone/pacaur/PKGBUILD",
    "chars": 130,
    "preview": "pkgname='pacaur'\npkgver=4.8.6\npkgrel=1\narch=('any')\ndepends=('auracle-git' 'expac' 'sudo' 'git' 'jq')\nmakedepends=('perl"
  },
  {
    "path": "testdata/clone/pkg/.SRCINFO",
    "chars": 83,
    "preview": "pkgbase = pkg\n\tpkgver = 1\n\tpkgrel = 1\n\tarch = any\n\tdepends = pacaur\n\npkgname = pkg\n"
  },
  {
    "path": "testdata/clone/pkg/PKGBUILD",
    "chars": 58,
    "preview": "pkgname=pkg\npkgver=1\npkgrel=1\narch=(any)\ndepends=(pacaur)\n"
  },
  {
    "path": "testdata/clone/polybar/.SRCINFO",
    "chars": 1006,
    "preview": "pkgbase = polybar\n\tpkgdesc = A fast and easy-to-use status bar\n\tpkgver = 3.5.6\n\tpkgrel = 1\n\turl = https://github.com/pol"
  },
  {
    "path": "testdata/clone/polybar/PKGBUILD",
    "chars": 577,
    "preview": "pkgname=polybar\npkgver=3.5.6\npkgrel=1\npkgdesc=\"A fast and easy-to-use status bar\"\narch=(\"i686\" \"x86_64\")\ndepends=(\"cairo"
  },
  {
    "path": "testdata/db/local/ALPM_DB_VERSION",
    "chars": 2,
    "preview": "9\n"
  },
  {
    "path": "testdata/db/local/acl-2.3.1-1/desc",
    "chars": 422,
    "preview": "%NAME%\nacl\n\n%VERSION%\n2.3.1-1\n\n%BASE%\nacl\n\n%DESC%\nAccess control list utilities, libraries and headers\n\n%URL%\nhttps://sa"
  },
  {
    "path": "testdata/db/local/alsa-lib-1.2.4-3/desc",
    "chars": 427,
    "preview": "%NAME%\nalsa-lib\n\n%VERSION%\n1.2.4-3\n\n%BASE%\nalsa-lib\n\n%DESC%\nAn alternative implementation of Linux sound support\n\n%URL%\n"
  },
  {
    "path": "testdata/db/local/alsa-lib-1.2.4-3/files",
    "chars": 4727,
    "preview": "%FILES%\nusr/\nusr/bin/\nusr/bin/aserver\nusr/include/\nusr/include/alsa/\nusr/include/alsa/asoundef.h\nusr/include/alsa/asound"
  },
  {
    "path": "testdata/db/local/alsa-topology-conf-1.2.4-2/desc",
    "chars": 316,
    "preview": "%NAME%\nalsa-topology-conf\n\n%VERSION%\n1.2.4-2\n\n%BASE%\nalsa-topology-conf\n\n%DESC%\nALSA topology configuration files\n\n%URL%"
  },
  {
    "path": "testdata/db/local/alsa-topology-conf-1.2.4-2/files",
    "chars": 602,
    "preview": "%FILES%\nusr/\nusr/share/\nusr/share/alsa/\nusr/share/alsa/topology/\nusr/share/alsa/topology/broadwell/\nusr/share/alsa/topol"
  },
  {
    "path": "testdata/db/local/alsa-ucm-conf-1.2.4-2/desc",
    "chars": 325,
    "preview": "%NAME%\nalsa-ucm-conf\n\n%VERSION%\n1.2.4-2\n\n%BASE%\nalsa-ucm-conf\n\n%DESC%\nALSA Use Case Manager configuration (and topologie"
  },
  {
    "path": "testdata/db/local/alsa-ucm-conf-1.2.4-2/files",
    "chars": 12424,
    "preview": "%FILES%\nusr/\nusr/share/\nusr/share/alsa/\nusr/share/alsa/ucm2/\nusr/share/alsa/ucm2/HDA-Intel/\nusr/share/alsa/ucm2/HDA-Inte"
  },
  {
    "path": "testdata/db/local/archlinux-keyring-20210110-1/desc",
    "chars": 333,
    "preview": "%NAME%\narchlinux-keyring\n\n%VERSION%\n20210110-1\n\n%BASE%\narchlinux-keyring\n\n%DESC%\nArch Linux PGP keyring\n\n%URL%\nhttps://p"
  },
  {
    "path": "testdata/db/local/archlinux-keyring-20210110-1/install",
    "chars": 474,
    "preview": "post_upgrade() {\n\tif usr/bin/pacman-key -l >/dev/null 2>&1; then\n\t\tusr/bin/pacman-key --populate archlinux\n\n\t\t# Re-enabl"
  },
  {
    "path": "testdata/db/local/argon2-20190702-3/desc",
    "chars": 397,
    "preview": "%NAME%\nargon2\n\n%VERSION%\n20190702-3\n\n%BASE%\nargon2\n\n%DESC%\nA password-hashing function (reference C implementation)\n\n%UR"
  },
  {
    "path": "testdata/db/local/attr-2.5.1-1/desc",
    "chars": 417,
    "preview": "%NAME%\nattr\n\n%VERSION%\n2.5.1-1\n\n%BASE%\nattr\n\n%DESC%\nExtended attribute support library for ACL support\n\n%URL%\nhttps://sa"
  },
  {
    "path": "testdata/db/local/audit-3.0.1-1/desc",
    "chars": 403,
    "preview": "%NAME%\naudit\n\n%VERSION%\n3.0.1-1\n\n%BASE%\naudit\n\n%DESC%\nUserspace components of the audit framework\n\n%URL%\nhttps://people."
  },
  {
    "path": "testdata/db/local/base-2-2/desc",
    "chars": 546,
    "preview": "%NAME%\nbase\n\n%VERSION%\n2-2\n\n%BASE%\nbase\n\n%DESC%\nMinimal package set to define a basic Arch Linux installation\n\n%URL%\nhtt"
  },
  {
    "path": "testdata/db/local/bash-5.1.004-1/desc",
    "chars": 437,
    "preview": "%NAME%\nbash\n\n%VERSION%\n5.1.004-1\n\n%BASE%\nbash\n\n%DESC%\nThe GNU Bourne Again shell\n\n%URL%\nhttps://www.gnu.org/software/bas"
  },
  {
    "path": "testdata/db/local/bzip2-1.0.8-4/desc",
    "chars": 358,
    "preview": "%NAME%\nbzip2\n\n%VERSION%\n1.0.8-4\n\n%BASE%\nbzip2\n\n%DESC%\nA high-quality data compression program\n\n%URL%\nhttps://sourceware."
  },
  {
    "path": "testdata/db/local/ca-certificates-20181109-4/desc",
    "chars": 484,
    "preview": "%NAME%\nca-certificates\n\n%VERSION%\n20181109-4\n\n%BASE%\nca-certificates\n\n%DESC%\nCommon CA certificates (default providers)\n"
  },
  {
    "path": "testdata/db/local/ca-certificates-mozilla-3.64-1/desc",
    "chars": 421,
    "preview": "%NAME%\nca-certificates-mozilla\n\n%VERSION%\n3.64-1\n\n%BASE%\nnss\n\n%DESC%\nMozilla's set of trusted CA certificates\n\n%URL%\nhtt"
  },
  {
    "path": "testdata/db/local/ca-certificates-utils-20181109-4/desc",
    "chars": 534,
    "preview": "%NAME%\nca-certificates-utils\n\n%VERSION%\n20181109-4\n\n%BASE%\nca-certificates\n\n%DESC%\nCommon CA certificates (utilities)\n\n%"
  },
  {
    "path": "testdata/db/local/cairo-1.17.4-5/desc",
    "chars": 443,
    "preview": "%NAME%\ncairo\n\n%VERSION%\n1.17.4-5\n\n%BASE%\ncairo\n\n%DESC%\n2D graphics library with support for multiple output devices\n\n%UR"
  },
  {
    "path": "testdata/db/local/cairo-1.17.4-5/files",
    "chars": 1532,
    "preview": "%FILES%\nusr/\nusr/bin/\nusr/bin/cairo-sphinx\nusr/bin/cairo-trace\nusr/include/\nusr/include/cairo/\nusr/include/cairo/cairo-d"
  },
  {
    "path": "testdata/db/local/coreutils-8.32-1/desc",
    "chars": 415,
    "preview": "%NAME%\ncoreutils\n\n%VERSION%\n8.32-1\n\n%BASE%\ncoreutils\n\n%DESC%\nThe basic file, shell and text manipulation utilities of th"
  },
  {
    "path": "testdata/db/local/cryptsetup-2.3.5-4/desc",
    "chars": 543,
    "preview": "%NAME%\ncryptsetup\n\n%VERSION%\n2.3.5-4\n\n%BASE%\ncryptsetup\n\n%DESC%\nUserspace setup tool for transparent encryption of block"
  },
  {
    "path": "testdata/db/local/curl-7.76.1-1/desc",
    "chars": 448,
    "preview": "%NAME%\ncurl\n\n%VERSION%\n7.76.1-1\n\n%BASE%\ncurl\n\n%DESC%\nAn URL retrieval utility and library\n\n%URL%\nhttps://curl.haxx.se\n\n%"
  },
  {
    "path": "testdata/db/local/dbus-1.12.20-1/desc",
    "chars": 495,
    "preview": "%NAME%\ndbus\n\n%VERSION%\n1.12.20-1\n\n%BASE%\ndbus\n\n%DESC%\nFreedesktop.org message bus system\n\n%URL%\nhttps://wiki.freedesktop"
  },
  {
    "path": "testdata/db/local/devel-1-1/desc",
    "chars": 191,
    "preview": "%NAME%\ndevel\n\n%VERSION%\n1-1\n\n%BASE%\ndevel\n\n%DESC%\n\n\n%URL%\n\n\n%ARCH%\nany\n\n%BUILDDATE%\n1697290439\n\n%INSTALLDATE%\n1697290651"
  },
  {
    "path": "testdata/db/local/devel-1-1/files",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "testdata/db/local/device-mapper-2.03.11-5/desc",
    "chars": 429,
    "preview": "%NAME%\ndevice-mapper\n\n%VERSION%\n2.03.11-5\n\n%BASE%\nlvm2\n\n%DESC%\nDevice mapper userspace library and tools\n\n%URL%\nhttp://s"
  },
  {
    "path": "testdata/db/local/e2fsprogs-1.46.2-1/desc",
    "chars": 421,
    "preview": "%NAME%\ne2fsprogs\n\n%VERSION%\n1.46.2-1\n\n%BASE%\ne2fsprogs\n\n%DESC%\nExt2/3/4 filesystem utilities\n\n%URL%\nhttp://e2fsprogs.sou"
  },
  {
    "path": "testdata/db/local/expat-2.3.0-1/desc",
    "chars": 329,
    "preview": "%NAME%\nexpat\n\n%VERSION%\n2.3.0-1\n\n%BASE%\nexpat\n\n%DESC%\nAn XML parser library\n\n%URL%\nhttps://libexpat.github.io/\n\n%ARCH%\nx"
  },
  {
    "path": "testdata/db/local/file-5.40-2/desc",
    "chars": 415,
    "preview": "%NAME%\nfile\n\n%VERSION%\n5.40-2\n\n%BASE%\nfile\n\n%DESC%\nFile type identification utility\n\n%URL%\nhttps://www.darwinsys.com/fil"
  },
  {
    "path": "testdata/db/local/filesystem-2021.01.19-1/desc",
    "chars": 320,
    "preview": "%NAME%\nfilesystem\n\n%VERSION%\n2021.01.19-1\n\n%BASE%\nfilesystem\n\n%DESC%\nBase Arch Linux files\n\n%URL%\nhttps://www.archlinux."
  },
  {
    "path": "testdata/db/local/findutils-4.8.0-1/desc",
    "chars": 354,
    "preview": "%NAME%\nfindutils\n\n%VERSION%\n4.8.0-1\n\n%BASE%\nfindutils\n\n%DESC%\nGNU utilities to locate files\n\n%URL%\nhttps://www.gnu.org/s"
  },
  {
    "path": "testdata/db/local/flac-1.3.3-2/desc",
    "chars": 362,
    "preview": "%NAME%\nflac\n\n%VERSION%\n1.3.3-2\n\n%BASE%\nflac\n\n%DESC%\nFree Lossless Audio Codec\n\n%URL%\nhttps://xiph.org/flac/\n\n%ARCH%\nx86_"
  },
  {
    "path": "testdata/db/local/flac-1.3.3-2/files",
    "chars": 985,
    "preview": "%FILES%\nusr/\nusr/bin/\nusr/bin/flac\nusr/bin/metaflac\nusr/include/\nusr/include/FLAC++/\nusr/include/FLAC++/all.h\nusr/includ"
  },
  {
    "path": "testdata/db/local/fontconfig-2:2.13.93-4/desc",
    "chars": 544,
    "preview": "%NAME%\nfontconfig\n\n%VERSION%\n2:2.13.93-4\n\n%BASE%\nfontconfig\n\n%DESC%\nLibrary for configuring and customizing font access\n"
  },
  {
    "path": "testdata/db/local/fontconfig-2:2.13.93-4/files",
    "chars": 13507,
    "preview": "%FILES%\netc/\netc/fonts/\netc/fonts/conf.d/\netc/fonts/conf.d/README\netc/fonts/fonts.conf\nusr/\nusr/bin/\nusr/bin/fc-cache\nus"
  },
  {
    "path": "testdata/db/local/fontconfig-2:2.13.93-4/install",
    "chars": 737,
    "preview": "post_upgrade() {\n  if (( $(vercmp $2 2:2.13.93-1) < 0 )); then\n    echo \"Creating fontconfig configuration...\"\n    find "
  },
  {
    "path": "testdata/db/local/freetype2-2.10.4-1/desc",
    "chars": 390,
    "preview": "%NAME%\nfreetype2\n\n%VERSION%\n2.10.4-1\n\n%BASE%\nfreetype2\n\n%DESC%\nFont rasterization library\n\n%URL%\nhttps://www.freetype.or"
  },
  {
    "path": "testdata/db/local/freetype2-2.10.4-1/files",
    "chars": 2658,
    "preview": "%FILES%\netc/\netc/profile.d/\netc/profile.d/freetype2.sh\nusr/\nusr/include/\nusr/include/freetype2/\nusr/include/freetype2/fr"
  },
  {
    "path": "testdata/db/local/freetype2-2.10.4-1/install",
    "chars": 211,
    "preview": "post_upgrade() {\n  if (( $(vercmp $2 2.7-1) < 0 )); then\n    cat <<MSG\n  The Arch-specific FT2_SUBPIXEL_HINTING has been"
  },
  {
    "path": "testdata/db/local/gawk-5.1.0-1/desc",
    "chars": 351,
    "preview": "%NAME%\ngawk\n\n%VERSION%\n5.1.0-1\n\n%BASE%\ngawk\n\n%DESC%\nGNU version of awk\n\n%URL%\nhttps://www.gnu.org/software/gawk/\n\n%ARCH%"
  },
  {
    "path": "testdata/db/local/gcc-libs-10.2.0-6/desc",
    "chars": 520,
    "preview": "%NAME%\ngcc-libs\n\n%VERSION%\n10.2.0-6\n\n%BASE%\ngcc\n\n%DESC%\nRuntime libraries shipped by GCC\n\n%URL%\nhttps://gcc.gnu.org\n\n%AR"
  },
  {
    "path": "testdata/db/local/gettext-0.21-1/desc",
    "chars": 443,
    "preview": "%NAME%\ngettext\n\n%VERSION%\n0.21-1\n\n%BASE%\ngettext\n\n%DESC%\nGNU internationalization library\n\n%URL%\nhttps://www.gnu.org/sof"
  },
  {
    "path": "testdata/db/local/glib2-2.68.1-1/desc",
    "chars": 649,
    "preview": "%NAME%\nglib2\n\n%VERSION%\n2.68.1-1\n\n%BASE%\nglib2\n\n%DESC%\nLow level core library\n\n%URL%\nhttps://wiki.gnome.org/Projects/GLi"
  },
  {
    "path": "testdata/db/local/glibc-2.33-4/desc",
    "chars": 375,
    "preview": "%NAME%\nglibc\n\n%VERSION%\n2.33-4\n\n%BASE%\nglibc\n\n%DESC%\nGNU C Library\n\n%URL%\nhttps://www.gnu.org/software/libc\n\n%ARCH%\nx86_"
  },
  {
    "path": "testdata/db/local/glibc-2.33-4/install",
    "chars": 49,
    "preview": "post_upgrade() {\n  locale-gen\n\n  ldconfig -r .\n}\n"
  },
  {
    "path": "testdata/db/local/gmp-6.2.1-1/desc",
    "chars": 329,
    "preview": "%NAME%\ngmp\n\n%VERSION%\n6.2.1-1\n\n%BASE%\ngmp\n\n%DESC%\nA free library for arbitrary precision arithmetic\n\n%URL%\nhttps://gmpli"
  },
  {
    "path": "testdata/db/local/gnupg-2.2.27-1/desc",
    "chars": 545,
    "preview": "%NAME%\ngnupg\n\n%VERSION%\n2.2.27-1\n\n%BASE%\ngnupg\n\n%DESC%\nComplete and free implementation of the OpenPGP standard\n\n%URL%\nh"
  },
  {
    "path": "testdata/db/local/gnupg-2.2.27-1/install",
    "chars": 595,
    "preview": "_global_units() {\n\t_units=(dirmngr.socket gpg-agent.socket gpg-agent-{browser,extra,ssh}.socket)\n\t_dir=/etc/systemd/user"
  },
  {
    "path": "testdata/db/local/gnutls-3.7.1-1/desc",
    "chars": 489,
    "preview": "%NAME%\ngnutls\n\n%VERSION%\n3.7.1-1\n\n%BASE%\ngnutls\n\n%DESC%\nA library which provides a secure layer over a reliable transpor"
  },
  {
    "path": "testdata/db/local/gpgme-1.15.1-1/desc",
    "chars": 392,
    "preview": "%NAME%\ngpgme\n\n%VERSION%\n1.15.1-1\n\n%BASE%\ngpgme\n\n%DESC%\nA C wrapper library for GnuPG\n\n%URL%\nhttps://www.gnupg.org/relate"
  },
  {
    "path": "testdata/db/local/graphite-1:1.3.14-1/desc",
    "chars": 374,
    "preview": "%NAME%\ngraphite\n\n%VERSION%\n1:1.3.14-1\n\n%BASE%\ngraphite\n\n%DESC%\nreimplementation of the SIL Graphite text processing engi"
  },
  {
    "path": "testdata/db/local/graphite-1:1.3.14-1/files",
    "chars": 2508,
    "preview": "%FILES%\nusr/\nusr/bin/\nusr/bin/gr2fonttest\nusr/include/\nusr/include/graphite2/\nusr/include/graphite2/Font.h\nusr/include/g"
  },
  {
    "path": "testdata/db/local/grep-3.6-1/desc",
    "chars": 337,
    "preview": "%NAME%\ngrep\n\n%VERSION%\n3.6-1\n\n%BASE%\ngrep\n\n%DESC%\nA string search utility\n\n%URL%\nhttps://www.gnu.org/software/grep/\n\n%AR"
  },
  {
    "path": "testdata/db/local/gzip-1.10-3/desc",
    "chars": 342,
    "preview": "%NAME%\ngzip\n\n%VERSION%\n1.10-3\n\n%BASE%\ngzip\n\n%DESC%\nGNU compression utility\n\n%URL%\nhttps://www.gnu.org/software/gzip/\n\n%A"
  },
  {
    "path": "testdata/db/local/harfbuzz-2.8.0-3/desc",
    "chars": 553,
    "preview": "%NAME%\nharfbuzz\n\n%VERSION%\n2.8.0-3\n\n%BASE%\nharfbuzz\n\n%DESC%\nOpenType text shaping engine\n\n%URL%\nhttps://www.freedesktop."
  },
  {
    "path": "testdata/db/local/harfbuzz-2.8.0-3/files",
    "chars": 7678,
    "preview": "%FILES%\nusr/\nusr/bin/\nusr/bin/hb-ot-shape-closure\nusr/bin/hb-shape\nusr/bin/hb-subset\nusr/bin/hb-view\nusr/include/\nusr/in"
  },
  {
    "path": "testdata/db/local/hwids-20201207-1/desc",
    "chars": 307,
    "preview": "%NAME%\nhwids\n\n%VERSION%\n20201207-1\n\n%BASE%\nhwids\n\n%DESC%\nhardware identification databases\n\n%URL%\nhttps://github.com/gen"
  },
  {
    "path": "testdata/db/local/iana-etc-20210202-1/desc",
    "chars": 335,
    "preview": "%NAME%\niana-etc\n\n%VERSION%\n20210202-1\n\n%BASE%\niana-etc\n\n%DESC%\n/etc/protocols and /etc/services provided by IANA\n\n%URL%\n"
  },
  {
    "path": "testdata/db/local/icu-69.1-1/desc",
    "chars": 468,
    "preview": "%NAME%\nicu\n\n%VERSION%\n69.1-1\n\n%BASE%\nicu\n\n%DESC%\nInternational Components for Unicode library\n\n%URL%\nhttp://site.icu-pro"
  },
  {
    "path": "testdata/db/local/iproute2-5.12.0-1/desc",
    "chars": 450,
    "preview": "%NAME%\niproute2\n\n%VERSION%\n5.12.0-1\n\n%BASE%\niproute2\n\n%DESC%\nIP Routing Utilities\n\n%URL%\nhttps://git.kernel.org/pub/scm/"
  },
  {
    "path": "testdata/db/local/iptables-1:1.8.7-1/desc",
    "chars": 428,
    "preview": "%NAME%\niptables\n\n%VERSION%\n1:1.8.7-1\n\n%BASE%\niptables\n\n%DESC%\nLinux kernel packet control tool (using legacy interface)\n"
  },
  {
    "path": "testdata/db/local/iputils-20210202-1/desc",
    "chars": 413,
    "preview": "%NAME%\niputils\n\n%VERSION%\n20210202-1\n\n%BASE%\niputils\n\n%DESC%\nNetwork monitoring tools, including ping\n\n%URL%\nhttp://www."
  },
  {
    "path": "testdata/db/local/json-c-0.15-1/desc",
    "chars": 367,
    "preview": "%NAME%\njson-c\n\n%VERSION%\n0.15-1\n\n%BASE%\njson-c\n\n%DESC%\nA JSON implementation in C\n\n%URL%\nhttps://github.com/json-c/json-"
  },
  {
    "path": "testdata/db/local/jsoncpp-1.9.4-1/desc",
    "chars": 443,
    "preview": "%NAME%\njsoncpp\n\n%VERSION%\n1.9.4-1\n\n%BASE%\njsoncpp\n\n%DESC%\nC++ library for interacting with JSON\n\n%URL%\nhttps://github.co"
  },
  {
    "path": "testdata/db/local/jsoncpp-1.9.4-1/files",
    "chars": 608,
    "preview": "%FILES%\nusr/\nusr/include/\nusr/include/json/\nusr/include/json/allocator.h\nusr/include/json/assertions.h\nusr/include/json/"
  },
  {
    "path": "testdata/db/local/kbd-2.4.0-2/desc",
    "chars": 377,
    "preview": "%NAME%\nkbd\n\n%VERSION%\n2.4.0-2\n\n%BASE%\nkbd\n\n%DESC%\nKeytable files and keyboard utilities\n\n%URL%\nhttp://www.kbd-project.or"
  },
  {
    "path": "testdata/db/local/keyutils-1.6.3-1/desc",
    "chars": 353,
    "preview": "%NAME%\nkeyutils\n\n%VERSION%\n1.6.3-1\n\n%BASE%\nkeyutils\n\n%DESC%\nLinux Key Management Utilities\n\n%URL%\nhttps://www.kernel.org"
  },
  {
    "path": "testdata/db/local/kmod-28-1/desc",
    "chars": 489,
    "preview": "%NAME%\nkmod\n\n%VERSION%\n28-1\n\n%BASE%\nkmod\n\n%DESC%\nLinux kernel module management tools and library\n\n%URL%\nhttps://git.ker"
  },
  {
    "path": "testdata/db/local/krb5-1.19.1-1/desc",
    "chars": 625,
    "preview": "%NAME%\nkrb5\n\n%VERSION%\n1.19.1-1\n\n%BASE%\nkrb5\n\n%DESC%\nThe Kerberos network authentication system\n\n%URL%\nhttps://web.mit.e"
  },
  {
    "path": "testdata/db/local/less-1:581.2-1/desc",
    "chars": 358,
    "preview": "%NAME%\nless\n\n%VERSION%\n1:581.2-1\n\n%BASE%\nless\n\n%DESC%\nA terminal based program for viewing text files\n\n%URL%\nhttps://www"
  },
  {
    "path": "testdata/db/local/libarchive-3.5.1-1/desc",
    "chars": 410,
    "preview": "%NAME%\nlibarchive\n\n%VERSION%\n3.5.1-1\n\n%BASE%\nlibarchive\n\n%DESC%\nMulti-format archive and compression library\n\n%URL%\nhttp"
  },
  {
    "path": "testdata/db/local/libassuan-2.5.5-1/desc",
    "chars": 400,
    "preview": "%NAME%\nlibassuan\n\n%VERSION%\n2.5.5-1\n\n%BASE%\nlibassuan\n\n%DESC%\nIPC library used by some GnuPG related software\n\n%URL%\nhtt"
  },
  {
    "path": "testdata/db/local/libasyncns-0.8+3+g68cd5af-3/desc",
    "chars": 382,
    "preview": "%NAME%\nlibasyncns\n\n%VERSION%\n0.8+3+g68cd5af-3\n\n%BASE%\nlibasyncns\n\n%DESC%\nA C library for executing name service queries "
  },
  {
    "path": "testdata/db/local/libasyncns-0.8+3+g68cd5af-3/files",
    "chars": 339,
    "preview": "%FILES%\nusr/\nusr/include/\nusr/include/asyncns.h\nusr/lib/\nusr/lib/libasyncns.so\nusr/lib/libasyncns.so.0\nusr/lib/libasyncn"
  },
  {
    "path": "testdata/db/local/libcap-2.49-1/desc",
    "chars": 369,
    "preview": "%NAME%\nlibcap\n\n%VERSION%\n2.49-1\n\n%BASE%\nlibcap\n\n%DESC%\nPOSIX 1003.1e capabilities\n\n%URL%\nhttps://sites.google.com/site/f"
  },
  {
    "path": "testdata/db/local/libcap-ng-0.8.2-1/desc",
    "chars": 442,
    "preview": "%NAME%\nlibcap-ng\n\n%VERSION%\n0.8.2-1\n\n%BASE%\nlibcap-ng\n\n%DESC%\nLibrary making programming with POSIX capabilities easier "
  },
  {
    "path": "testdata/db/local/libcroco-0.6.13-2/desc",
    "chars": 339,
    "preview": "%NAME%\nlibcroco\n\n%VERSION%\n0.6.13-2\n\n%BASE%\nlibcroco\n\n%DESC%\nA CSS parsing library\n\n%URL%\nhttps://gitlab.gnome.org/GNOME"
  },
  {
    "path": "testdata/db/local/libelf-0.183-3/desc",
    "chars": 412,
    "preview": "%NAME%\nlibelf\n\n%VERSION%\n0.183-3\n\n%BASE%\nelfutils\n\n%DESC%\nHandle ELF object files and DWARF debugging information (libra"
  },
  {
    "path": "testdata/db/local/libffi-3.3-4/desc",
    "chars": 357,
    "preview": "%NAME%\nlibffi\n\n%VERSION%\n3.3-4\n\n%BASE%\nlibffi\n\n%DESC%\nPortable foreign function interface library\n\n%URL%\nhttps://sourcew"
  },
  {
    "path": "testdata/db/local/libgcrypt-1.9.3-1/desc",
    "chars": 360,
    "preview": "%NAME%\nlibgcrypt\n\n%VERSION%\n1.9.3-1\n\n%BASE%\nlibgcrypt\n\n%DESC%\nGeneral purpose cryptographic library based on the code fr"
  },
  {
    "path": "testdata/db/local/libgpg-error-1.42-1/desc",
    "chars": 324,
    "preview": "%NAME%\nlibgpg-error\n\n%VERSION%\n1.42-1\n\n%BASE%\nlibgpg-error\n\n%DESC%\nSupport library for libgcrypt\n\n%URL%\nhttps://www.gnup"
  },
  {
    "path": "testdata/db/local/libice-1.0.10-3/desc",
    "chars": 330,
    "preview": "%NAME%\nlibice\n\n%VERSION%\n1.0.10-3\n\n%BASE%\nlibice\n\n%DESC%\nX11 Inter-Client Exchange library\n\n%URL%\nhttps://xorg.freedeskt"
  },
  {
    "path": "testdata/db/local/libice-1.0.10-3/files",
    "chars": 545,
    "preview": "%FILES%\nusr/\nusr/include/\nusr/include/X11/\nusr/include/X11/ICE/\nusr/include/X11/ICE/ICE.h\nusr/include/X11/ICE/ICEconn.h\n"
  },
  {
    "path": "testdata/db/local/libidn2-2.3.0-1/desc",
    "chars": 411,
    "preview": "%NAME%\nlibidn2\n\n%VERSION%\n2.3.0-1\n\n%BASE%\nlibidn2\n\n%DESC%\nFree software implementation of IDNA2008, Punycode and TR46\n\n%"
  },
  {
    "path": "testdata/db/local/libksba-1.4.0-2/desc",
    "chars": 404,
    "preview": "%NAME%\nlibksba\n\n%VERSION%\n1.4.0-2\n\n%BASE%\nlibksba\n\n%DESC%\nLibrary for working with X.509 certificates, CMS data and rela"
  },
  {
    "path": "testdata/db/local/libldap-2.4.58-1/desc",
    "chars": 362,
    "preview": "%NAME%\nlibldap\n\n%VERSION%\n2.4.58-1\n\n%BASE%\nopenldap\n\n%DESC%\nLightweight Directory Access Protocol (LDAP) client librarie"
  },
  {
    "path": "testdata/db/local/libmnl-1.0.4-3/desc",
    "chars": 372,
    "preview": "%NAME%\nlibmnl\n\n%VERSION%\n1.0.4-3\n\n%BASE%\nlibmnl\n\n%DESC%\nMinimalistic user-space library oriented to Netlink developers.\n"
  },
  {
    "path": "testdata/db/local/libmpdclient-2.19-3/desc",
    "chars": 375,
    "preview": "%NAME%\nlibmpdclient\n\n%VERSION%\n2.19-3\n\n%BASE%\nlibmpdclient\n\n%DESC%\nC library to implement a MPD client\n\n%URL%\nhttps://ww"
  },
  {
    "path": "testdata/db/local/libmpdclient-2.19-3/files",
    "chars": 1552,
    "preview": "%FILES%\nusr/\nusr/include/\nusr/include/mpd/\nusr/include/mpd/async.h\nusr/include/mpd/audio_format.h\nusr/include/mpd/capabi"
  },
  {
    "path": "testdata/db/local/libnetfilter_conntrack-1.0.8-1/desc",
    "chars": 436,
    "preview": "%NAME%\nlibnetfilter_conntrack\n\n%VERSION%\n1.0.8-1\n\n%BASE%\nlibnetfilter_conntrack\n\n%DESC%\nLibrary providing an API to the "
  },
  {
    "path": "testdata/db/local/libnfnetlink-1.0.1-4/desc",
    "chars": 393,
    "preview": "%NAME%\nlibnfnetlink\n\n%VERSION%\n1.0.1-4\n\n%BASE%\nlibnfnetlink\n\n%DESC%\nLow-level library for netfilter related kernel/users"
  },
  {
    "path": "testdata/db/local/libnftnl-1.1.9-1/desc",
    "chars": 369,
    "preview": "%NAME%\nlibnftnl\n\n%VERSION%\n1.1.9-1\n\n%BASE%\nlibnftnl\n\n%DESC%\nNetfilter library providing interface to the nf_tables subsy"
  },
  {
    "path": "testdata/db/local/libnghttp2-1.43.0-1/desc",
    "chars": 378,
    "preview": "%NAME%\nlibnghttp2\n\n%VERSION%\n1.43.0-1\n\n%BASE%\nlibnghttp2\n\n%DESC%\nFraming layer of HTTP/2 is implemented as a reusable C "
  },
  {
    "path": "testdata/db/local/libnl-3.5.0-2/desc",
    "chars": 343,
    "preview": "%NAME%\nlibnl\n\n%VERSION%\n3.5.0-2\n\n%BASE%\nlibnl\n\n%DESC%\nLibrary for applications dealing with netlink sockets\n\n%URL%\nhttps"
  },
  {
    "path": "testdata/db/local/libogg-1.3.4-2/desc",
    "chars": 362,
    "preview": "%NAME%\nlibogg\n\n%VERSION%\n1.3.4-2\n\n%BASE%\nlibogg\n\n%DESC%\nOgg bitstream and framing library\n\n%URL%\nhttps://www.xiph.org/og"
  },
  {
    "path": "testdata/db/local/libogg-1.3.4-2/files",
    "chars": 4955,
    "preview": "%FILES%\nusr/\nusr/include/\nusr/include/ogg/\nusr/include/ogg/config_types.h\nusr/include/ogg/ogg.h\nusr/include/ogg/os_types"
  },
  {
    "path": "testdata/db/local/libp11-kit-0.23.22-1/desc",
    "chars": 408,
    "preview": "%NAME%\nlibp11-kit\n\n%VERSION%\n0.23.22-1\n\n%BASE%\np11-kit\n\n%DESC%\nLoads and enumerates PKCS#11 modules (library)\n\n%URL%\nhtt"
  },
  {
    "path": "testdata/db/local/libpcap-1.10.0-1/desc",
    "chars": 396,
    "preview": "%NAME%\nlibpcap\n\n%VERSION%\n1.10.0-1\n\n%BASE%\nlibpcap\n\n%DESC%\nA system-independent interface for user-level packet capture\n"
  },
  {
    "path": "testdata/db/local/libpng-1.6.37-3/desc",
    "chars": 364,
    "preview": "%NAME%\nlibpng\n\n%VERSION%\n1.6.37-3\n\n%BASE%\nlibpng\n\n%DESC%\nA collection of routines used to create PNG format graphics fil"
  },
  {
    "path": "testdata/db/local/libpng-1.6.37-3/files",
    "chars": 743,
    "preview": "%FILES%\nusr/\nusr/bin/\nusr/bin/libpng-config\nusr/bin/libpng16-config\nusr/bin/png-fix-itxt\nusr/bin/png2pnm\nusr/bin/pngfix\n"
  },
  {
    "path": "testdata/db/local/libpsl-0.21.1-1/desc",
    "chars": 381,
    "preview": "%NAME%\nlibpsl\n\n%VERSION%\n0.21.1-1\n\n%BASE%\nlibpsl\n\n%DESC%\nPublic Suffix List library\n\n%URL%\nhttps://github.com/rockdaboot"
  },
  {
    "path": "testdata/db/local/libpulse-14.2-3/desc",
    "chars": 569,
    "preview": "%NAME%\nlibpulse\n\n%VERSION%\n14.2-3\n\n%BASE%\npulseaudio\n\n%DESC%\nA featureful, general-purpose sound server (client library)"
  },
  {
    "path": "testdata/db/local/libpulse-14.2-3/files",
    "chars": 2909,
    "preview": "%FILES%\netc/\netc/pulse/\netc/pulse/client.conf\nusr/\nusr/bin/\nusr/bin/pacat\nusr/bin/pactl\nusr/bin/padsp\nusr/bin/pamon\nusr/"
  },
  {
    "path": "testdata/db/local/libsasl-2.1.27-3/desc",
    "chars": 381,
    "preview": "%NAME%\nlibsasl\n\n%VERSION%\n2.1.27-3\n\n%BASE%\nlibsasl\n\n%DESC%\nCyrus Simple Authentication Service Layer (SASL) Library\n\n%UR"
  }
]

// ... and 151 more files (download for full content)

About this extraction

This page contains the full source code of the Morganamilo/paru GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 351 files (1.6 MB), approximately 500.2k tokens, and a symbol index with 437 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!