packages feed

aura 3.2.9 → 3.2.10

raw patch · 46 files changed

+2101/−1890 lines, 46 filesdep ~timedep ~versions

Dependency ranges changed: time, versions

Files

CHANGELOG.md view
@@ -1,5 +1,18 @@ # Aura Changelog +## 3.2.10 (2024-07-17)++#### Added++- Hindi translations thanks to "yozachar". धन्यवाद!+- A `--turkish` flag to activate the Turkish localisations.++#### Fixed++- Corrections made to the Mandarin Chinese translation.+- Don't attempt to remove VCS dirs if they don't exist.+- Updated dependencies.+ ## 3.2.9 (2022-05-23)  #### Fixed
aura.cabal view
@@ -1,6 +1,6 @@ cabal-version:      2.2 name:               aura-version:            3.2.9+version:            3.2.10 synopsis:           A secure package manager for Arch Linux and the AUR. description:   Aura is a package manager for Arch Linux. It connects to both the@@ -19,17 +19,17 @@ extra-source-files:   README.md   CHANGELOG.md-  doc/aura.8-  doc/aura.conf-  doc/aura.conf.5-  doc/completions/bashcompletion.sh-  doc/completions/_aura+  misc/aura.8+  misc/aura.conf+  misc/aura.conf.5+  misc/completions/bashcompletion.sh+  misc/completions/_aura   test/pacman.conf   test/good.PKGBUILD   test/bad.PKGBUILD  common commons-  default-language:   Haskell2010+  default-language:   GHC2021   default-extensions:     NoImplicitPrelude     OverloadedStrings@@ -46,11 +46,11 @@     , megaparsec  >=7      && <10     , rio         ^>=0.1.17     , text        >=1.2 && < 1.3 || ^>= 2.0-    , versions    ^>=5+    , versions    ^>=6.0.3  common libexec   build-depends:-    , aeson                        ^>=2.0+    , aeson                        >=2.1 && < 2.3     , aur                          ^>=7.0.5     , http-client                  >=0.5 && <0.8     , prettyprinter                >=1.2 && <1.8@@ -90,14 +90,14 @@     Aura.Utils    build-depends:-    , algebraic-graphs  >=0.1 && <0.7+    , algebraic-graphs  >=0.1 && <0.8     , filepath          ^>=1.4     , hashable          ^>=1.4     , http-types        >=0.9 && <0.13     , language-bash     >=0.8 && <0.10     , network-uri       ^>=2.6     , stm               ^>=2.5-    , time              >=1.8 && <1.12+    , time              >=1.8 && <1.13  executable aura   import:         commons, libexec
− doc/aura.8
@@ -1,730 +0,0 @@-'\" t-.\" Man page for `aura`-.\" Written by Colin Woodbury <colin@fosskers.ca>-.-.TH aura 8 "2021 September" "Aura" "Aura Manual"-.-.de SAMPLE      \" Indented example - on its own paragraph.-.  P-.  RS-.  EX-..-.de ESAMPLE     \" End of Indented example.-.  EE-.  RE-..-.de RSAMPLE     \" Relative sample - even more indented example.-.  RS-.  SAMPLE-..-.de ERSAMPLE    \" End of Relative sample.-.  ESAMPLE-.  RE-..-.-.ds ellipsis \&.\|.\|.\&-.\" Format repeatable parameter (1 or more) with ellipsis.-.ds multi                 \fI\\$1\fP\fR\\ \\*[ellipsis]\fP-.\" Format optional repeatable parameter (0 or more)-.\" with ellipsis and square brackets.-.ds multi-optional \fR[\fP\fI\\$1\fP\fR\\ \\*[ellipsis]]\fP-.ds packages          \\*[multi          packages]-.ds packages-optional \\*[multi-optional packages]-.-.SH NAME-.-aura \- package manager utility and AUR helper-.-.SH SYNOPSIS-.-.SY aura-.I OPERATION-\*[multi-optional OPTIONS]-\*[multi-optional targets]-.YS-.-.SH DESCRIPTION-.-.B aura-is a secure, multilingual package manager for Arch Linux written in Haskell.-.-It connects to both the official Arch repositories and to the-Arch User Repositories (AUR),-allowing easy control of all packages on an Arch system.-.-Aura allows-.I all-pacman operations and provides-.I new-custom ones for dealing with AUR packages.-.-.SH OPERATIONS-.-.TP-.BR \-A ", " \-\-aursync " \*[packages-optional]"-.-Perform actions involving the-.BR A UR.-.-Default action installs packages from the AUR.-.-.IP-During building, makepkg output is-.I not-shown by default.-.-After building, the built-.I *.pkg.tar.xz-file is moved to the package cache and installed from there.-.-This allows for easy AUR package downgrading.-.-.TP-.BR -B ", " \-\-save-.-Manage the saving and restoring of the global package state.-.-Default action stores a record of all currently installed packages and their-versions.-.-.TP-.BR -C ", " \-\-downgrade " \*[packages-optional]"-.-Perform actions involving the package-.BR C ache.-.-Default action downgrades specified-.IR packages .-.-.IP-This process is interactive, allowing the user to choose from any previous-version they have available in the package cache.-.-.TP-.BR \-L ", " \-\-viewlog-.-Perform actions involving the pacman-.BR L ogfile.-.-Default action opens the log for read-only viewing.-.-.TP-.BR \-O ", " \-\-orphans " \*[packages-optional]"-.-Perform actions involving-.BR O rphan-packages.-.-Default action is to list the current orphans.-.-.IP-Orphan packages are packages installed as dependencies,-but are no longer required by any other package.-.-.TP-.BR \-P ", " \-\-analysis-.-Perform security analysis of a-.BR P KGBUILD.-.-Default action reads PKGBUILD from stdin.-.-.IP-Useful for package maintainers and sysadmins to verify the safety of the-PKGBUILD files that they write.-.-To test any package on the AUR, try the following:-.-.RSAMPLE-.BI "aura -Ap " "package" " | aura -P"-.ERSAMPLE-.-.SH AUR SYNC OPTIONS (\fR\-A\fP)-.-.TP-.BR \-a ", " \-\-delmakedeps-.-Uninstalls build dependencies that are no longer required after installing the-main package.-.-This prevents the creation of orphan packages.-.-Also note that while the package itself will be uninstalled,-its package file will remain in the cache.-.-.TP-.BR \-c ", " \-\-clean-.-After a package's tarball has been built and copied to the package cache,-delete its build directory immediately.-.-.TP-.BR \-d ", " \-\-deps " \*[packages]"-.-View all dependencies of-.IR packages .-.-This process is recursive for AUR packages,-so all dependencies of dependencies (and so on) will also be shown.-.-This can aid the pre-install package research process.-.-.TP-.BR \-i ", " \-\-info " \*[packages]"-.-View information about AUR-.IR packages .-.-.TP-.BR \-k ", " \-\-diff-.-Show PKGBUILD diffs.-.-When upgrading, using this option will compare the most and second-most recent-PKGBUILDs and output changes in colour.-.-.TP-.BR \-p ", " \-\-pkgbuild " \*[packages]"-.-View PKGBUILDs of AUR-.IR packages .-.-Use this before installing new packages to confirm that the build scripts-aren't doing anything fishy.-.-.TP-.BR \-q ", " \-\-quiet-.-Display less information about certain-.B \-A-operations-(this is useful when processing Aura's output in a script).-.-In particular, search and view dependencies will only show uncoloured package-names.-.-.TP-.BR \-s ", " \-\-search " \*[multi word]"-.-Search AUR for packages containing-.IR word s-(not regex) in their names or descriptions.-.-Multiple terms will narrow down the search.-.-Results are sorted by votes.-.-Suboptions:-.-.RS-.-.  TP-.  B \-\-abc-.-Sorts results alphabetically.-.-.  TP-.  BR \-\-head [ =\fIN\fR ]-.-Only show the first-.I N-results.-.I N-defaults to 10.-.-.  TP-.  BR \-\-tail [ =\fIN\fR ]-.-Only show the last-.I N-results.-.I N-defaults to 10.-.-.  TP-.  BR \-r ", " \-\-both-.-Show results from the official repos as well.-.-.RE-.-.TP-.BR \-u ", " \-\-sysupgrade-.-Upgrade all installed AUR packages.-.B -Au-is like-.B -Su-but for AUR packages.-.-.TP-.BR \-w ", " \-\-downloadonly " \*[packages]"-.-Retrieve AUR-.I packages-source tarballs,-but do not build/install/upgrade anything.-.-.TP-.BR \-x ", " \-\-unsuppress-.-Unsuppress-.BR makepkg (8)-output during building.-.-By default this output is suppressed for a more silent install.-.-Note that when this option isn't used,-.B makepkg-output is actually collected and printed if any errors occur.-.-.TP-.B \-\-json \*[packages]-.-Query the AUR RPC for-.I packages-info as raw JSON.-.-Good for debugging.-.-.TP-.BI \-\-build " path"-.-Specify build-.I path-when building AUR packages.-.-Only the-.I full-path of a pre-existing directory can be used.-.-Example:-.-.RSAMPLE-aura -A foo --build=/full/path/to/build/location/-.ERSAMPLE-.-.TP-.BI \-\-builduser " user"-.-Specify the-.I user-to build packages as.-.-This can be useful when logged in as root and a build user is available.-.-.TP-.B \-\-devel-.-When ran with-.BR \-Au ,-adds all development packages to the queue of packages to upgrade.-.-Devel packages are those pulled directly from online repositories,-via git / mercurial / etc.-.-.TP-.B \-\-dryrun-.-When ran with-.BR \-A " or " \-Au ,-update checks,-PKGBUILD diffs,-and dependency checks will be performed,-but nothing will be built.-.-Also usable with-.BR \-M .-.-.TP-.B \-\-force-.-Always (re)build the specified packages.-.-Usually Aura will not rebuild packages whose versions are already available in-the local package cache.-.-.TP-.B \-\-hotedit-.-Before building, prompt the user if they wish to view/edit the-.IR PKGBUILD ,-as well as any-.IR .install " or " .patch-files.-.-However, research into packages (and by extension, their PKGBUILDs) should be-done by the user before any building occurs.-.-Please use-.BR \-Ap " and " \-Ad-for this,-as they will be much faster at presenting information than searching the AUR-website manually.-.-Note that, since aura is run through sudo,-your local value of-.RB $ EDITOR-may not be preserved.-.-Run as-\(lqsudo-.B \-E-aura -A --hotedit \*[ellipsis]\(rq-to preserve your environment.-.-To always allow environment variables to be passed,-have a look at the-.IR env_reset " and " env_keep-options in-.BR sudoers (5).-.-.TP-.B \-\-skipdepcheck-.-Perform no dependency solving.-.-Consider this when using-.B \-\-hotedit-to avoid building annoying dependencies that aren't necessary for your special-use-case.-.-.TP-.BI \-\-vcspath " path"-.-Save the cloned sources of VCS packages (i.e.\& those that end in-.IR *-git ,-etc.) in the given-.IR path ,-instead of the default-.IR /var/cache/aura/vcs/ .-.-.SH GLOBAL PACKAGE STATE OPTIONS (\fR\-B\fP)-.-.TP-.BR \-c ", " \-\-clean \c-.I " states-to-retain-.-Retains a given number of the most recently saved package states and removes the-rest.-.-.TP-.BR \-r ", " \-\-restore-.-Restores a record kept with-.BR \-B .-.-Attempts to downgrade any packages that were upgraded since the chosen save.-.-Will remove any that weren't installed at the time.-.-.TP-.BR \-l ", " \-\-list-.-Show all saved package state filenames.-.-.SH DOWNGRADE OPTIONS (\fR\-C\fP)-.-.TP-.BR \-b ", " \-\-backup \c-.I " path-.-Backup the package cache to a given directory.-.-The given directory must already exist.-.-During copying, progress will be shown.-.-If the copy takes too long,-you may want to reduce the number of older versions of each package by using-.BR \-Cc .-.-.TP-.BR \-c ", " \-\-clean \c-.I " versions-to-retain-.-Retains a given number of package versions for each package,-and deletes the rest from the package cache.-.-Count is made from the most recent version, so using:-.-.RSAMPLE-aura -Cc 3-.ERSAMPLE-.-.IP-would save the three most recent versions of each package file.-.-Giving the number 0 as an argument is identical to-.BR \-Scc .-.-.TP-.B \-\-notsaved-.-Remove only those package files which are not saved in a package record (a la-.BR \-B ).-.-.TP-.BR \-s ", " \-\-search \c-.I " regex-.-Search the package cache via a-.IR regex .-.-Any package name that matches the regex will be output as-is.-.-.SH LOGFILE OPTIONS (\fR\-L\fP)-.-.TP-.BR \-i ", " \-\-info " \*[packages]"-.-Displays install/upgrade history for given-.IR packages .-.-Under the \(lqRecent Actions\(rq section,-only the last five entries will be displayed.-.-If there are less than five actions ever performed with the package,-what is available will be printed.-.-.TP-.BR \-s ", " \-\-search \c-.I " regex-.-Search the pacman log file via a-.IR regex .-.-Useful for singling out any and all actions performed on a package.-.-.SH ORPHAN PACKAGE OPTIONS (\fR\-O\fP)-.-.TP-.BR \-a ", " \-\-adopt " \*[packages]"-.-Mark-.I packages-as being explicitly installed (i.e.\& it's not a dependency).-.-.TP-.BR \-j ", " \-\-abandon-.-Uninstall all orphan packages.-.-.SH ANALYSIS OPTIONS (\fR\-P\fP)-.-.TP-.BR \-f ", " \-\-file \c-.I " path-.-Analyse a PKGBUILD at the specified-.IR path .-.-.TP-.BR \-d ", " \-\-dir \c-.I " path-.-Analyse a-.IR path /PKGBUILD-found in the specified directory.-.-.TP-.BR \-a ", " \-\-audit-.-Analyse the PKGBUILDs of all locally installed AUR packages.-.-.SH PACMAN / AURA DUAL FUNCTIONALITY OPTIONS-.-.TP-.B \-\-noconfirm-.-Never ask for any Aura or Pacman confirmation.-.-Any time a prompt would appear,-say before building or installation,-it is assumed the user answered in whatever way would progress the program.-.-.TP-.B \-\-needed-.-Don't rebuild/reinstall packages that are already up to date.-.-.TP-.B \-\-debug-.-View some handy debugging information.-.-.TP-.BI \-\-color " when"-.-Specify when to enable colouring.-.-Without this flag, both Aura and Pacman will attempt to colour text if the-terminal allows it.-.-Otherwise, you can pass-.BR always " or " never-to be specific about your wants.-.-.TP-.BI \-\-overwrite " glob"-.-If there are file conflicts during installation,-overwrite conflicting files that match the given-.I glob-pattern.-.-.SH EXPOSED MAKEPKG OPTIONS-.-.TP-.B \-\-ignorearch-.-Ignores processor architecture when building packages.-.-.TP-.B \-\-allsource-.-Creates a-.I .src-file containing all the downloaded sources (code, etc.\&)-and stores it at-.IR /var/cache/aura/src/ .-.-To change the location where sources are stored,-use the-.B \-\-allsourcepath-flag on command line or via-.BR aura.conf (5).-.-.TP-.B \-\-skipinteg-.-Skip package source integrity checks (hash sums).-.-.TP-.B \-\-skippgpcheck-.-Skip all PGP checks.-.-.SH LANGUAGE OPTIONS-.-Aura is available in multiple languages.-.-As options, they can be used with either their English names or their real-names written in their native characters.-.-The available languages are, in option form:-.-.TS \" Tab-separated-l l.-\fB\-\-english\fP	(default)-\fB\-\-japanese\fP	\fB\-\-日本語\fP-\fB\-\-polish\fP	\fB\-\-polski\fP-\fB\-\-croatian\fP	\fB\-\-hrvatski\fP-\fB\-\-swedish\fP	\fB\-\-svenska\fP-\fB\-\-german\fP	\fB\-\-deutsch\fP-\fB\-\-spanish\fP	\fB\-\-español\fP-\fB\-\-portuguese\fP	\fB\-\-português\fP-\fB\-\-french\fP	\fB\-\-français\fP-\fB\-\-russian\fP	\fB\-\-русский\fP-\fB\-\-italian\fP	\fB\-\-italiano\fP-\fB\-\-serbian\fP	\fB\-\-српски\fP-\fB\-\-norwegian\fP	\fB\-\-norsk\fP-\fB\-\-indonesian\fP-\fB\-\-chinese\fP	\fB\-\-中文\fP-\fB\-\-esperanto\fP-\fB\-\-dutch\fP	\fB\-\-nederlands\fP-\fB\-\-romanian\fP	\fB\-\-română\fP-\fB\-\-vietnamese\fP-\fB\-\-czech\fP	\fB\-\-čeština\fP-.TE-.-.SH PRO TIPS-.-.IP \(bu 2n-.-If you build a package and then choose not to install it,-the built package file will still be moved to the cache.-You can then install it whenever you want with-.BR \-C .-.-.IP \(bu 2n-.-Research packages using-.BR \-Ad \ ( \-\-deps ),-.BR \-Ai \ ( \-\-info )-and-.BR \-Ap \ ( \-\-pkgbuild )!-.-.IP \(bu 2n-.-When upgrading, use-.B \-Akua-instead of just-.BR \-Au .-.-This will remove make deps, as well as show PKGBUILD diffs before building.-.-.SH SEE ALSO-.-.BR aura.conf (5),-.BR pacman (8),-.BR pacman.conf (5),-.BR makepkg (8)-.-.SH BUGS-.-It is not recommended to install non-AUR packages with pacman or aura.-.-Aura will assume they are AUR packages during a-.B \-Au-and attempt to upgrade them.-.-If a name collision occurs (that is, if there is a legitimate AUR package with-the same name as the one you installed) previous installations could be-overwritten.-.-.SH AUTHOR-.-Colin Woodbury <colin@fosskers.ca>-.-.SH CONTRIBUTORS-.-.TS \" Tab-separated-l .-Chris Warrick-Brayden Banks-Denis Kasak-Edwin Marshall-Jimmy Brisson-Kyle Raftogianis-Nicholas Clarke-.TE-.-.SH TRANSLATORS-.-.TS \" Tab-separated-c l .-Polish	Chris Warrick and Michał Kurek-Croatian	Denis Kasak and "stranac"-Swedish	Fredrik Haikarainen and Daniel Beecham-German	Lukas Niederbremer-Spanish	Alejandro Gómez, Sergio Conde, and Max Ferrer-Portuguese	Henry Kupty, Thiago Perrotta, and Wagner Amaral-French	Ma Jiehong and Fabien Dubosson-Russian	Kyrylo Silin and Alexey Kotlyarov-Italian	Bob Valantin and Cristian Tentella-Serbian	Filip Brcic-Norwegian	"chinatsun"-Indonesian	"pak tua Greg"-Chinese	Kai Zhang-Japanese	Onoue Takuro and Colin Woodbury-Esperanto	Zachary Matthews-Dutch	Joris Blanken and Heimen Stoffels-Turkish	Cihan Alkan-Arabic	"Array in a Matrix"-Ukrainian	Andriy Cherniy-Romanian	"90" and "benone"-Vietnamese	"Kritiqual"-Czech	Daniel Rosel-Korean	"Nioden"-.TE
− doc/aura.conf
@@ -1,68 +0,0 @@-# --- Aura Config --- #-#-# Template updated on: Mon 11 May 2020-#-# You can uncomment the various settings below in order to activate them.-# Otherwise, Aura will use its internal defaults.--# --- Language --- #-# Aura can be used in different human languages. This field must be a 2-letter-# language code, similar to those used in LOCALE. The available codes are:-#-# |------+------------|-# | Code | Language   |-# |------+------------|-# | nl   | Dutch      |-# | en   | English    |-# | de   | German     |-# | nb   | Norwegian  |-# | sv   | Swedish    |-# |------+------------|-# | fr   | French     |-# | it   | Italian    |-# | pt   | Portuguese |-# | es   | Spanish    |-# | ro   | Romanian   |-# |------+------------|-# | ar   | Arabic     |-# |------+------------|-# | hr   | Croatian   |-# | cs   | Czech      |-# | pl   | Polish     |-# | ru   | Russian    |-# | sr   | Serbian    |-# | uk   | Ukrainian  |-# |------+------------|-# | zh   | Chinese    |-# | id   | Indonesian |-# | ja   | Japanese   |-# | vi   | Vietnamese |-# |------+------------|-# | eo   | Esperanto  |-# |------+------------|--# Uncomment to activate:-# language = en--# --- Build Settings --- #-# Aura runs via `sudo` but builds packages as the underlying non-root user.-# Here, you can alter who that user is, and where packages are built.--# Uncomment to activate:-# user = YOU-# buildpath = /tmp-# allsourcepath = /var/cache/aura/src-# vcspath = /var/cache/aura/vcs--# --- PKGBUILD Analysis --- #-# Aura automatically scans PKGBUILDs for malicious bash usage and other "bad-# practices". Here, you can turn those scans off.--# Uncomment to activate:-# analyse = True--# --- Misc. --- #--# The editor to use with `--hotedit`.-# Uncomment to activate:-# editor = vi
− doc/aura.conf.5
@@ -1,150 +0,0 @@-'\" t-.\" Man page for `aura.conf`-.\" Written by Colin Woodbury <colin@fosskers.ca>-.-.TH aura.conf 5 "2021 January" "Aura" "Aura Manual"-.-.de SAMPLE      \" Indented example - on its own paragraph.-.  P-.  RS-.  EX-..-.de ESAMPLE     \" End of Indented example.-.  EE-.  RE-..-.de RSAMPLE     \" Relative sample - even more indented example.-.  RS-.  SAMPLE-..-.de ERSAMPLE    \" End of Relative sample.-.  ESAMPLE-.  RE-..-.-.SH NAME-.-aura.conf \- aura package manager configuration file-.-.SH SYNOPSIS-.-/etc/aura.conf-.-.SH DESCRIPTION-.-Aura can be configured at runtime by commandline flags,-but for users who use the same options all the time-(say, build paths or language flags) this can be verbose.-.I aura.conf-lets you make these common settings permanent.-.-.SH EXAMPLE-.-Overview of options in-.IR aura.conf :-.-.SAMPLE-#-# aura.conf-#--#[ Language ]-language = en--#[ Build Settings ]-user = <you>-buildpath = /tmp-vcspath = /var/cache/aura/vcs--#[ Misc. ]-editor = vi-.ESAMPLE-.-.SH OPTIONS-.-.TP-.B language-.-Aura can be used in different human languages.-This field must be a 2-letter language code,-similar to those used in LOCALE.-The available codes are:-.-.TS \" Tab-separated-box;-l l.-Code	Language--nl	Dutch-en	English-de	German-nb	Norwegian-sv	Swedish--fr	French-it	Italian-pt	Portuguese-es	Spanish-ro	Romanian--hr	Croatian-cs	Czech-pl	Polish-ru	Russian-sr	Serbian-uk	Ukrainian--ar	Arabic--zh	Chinese-id	Indonesian-ja	Japanese-vi	Vietnamese--eo	Esperanto-.TE-.-.TP-.B user-.-The real, non-sudo user to build packages as.-.-.TP-.B buildpath-.-The location on the filesystem in which to build packages.-.-.TP-.B allsourcepath-.-The location on the filesystem in which to save "source packages" built with-.BR \-\-allsource .-.-.TP-.B vcspath-.-The location on the filesystem in which to store the cloned repositories of-\fI*-git\fR, etc., packages.-.-.TP-.B analyse-.-Aura automatically scans PKGBUILDs for malicious bash usage-and other "bad practices".-Set this to-.B False-to turn off.-.-.TP-.B editor-.-The editor to use during-.BR \-\-hotedit .-.-.SH SEE ALSO-.-.BR aura (8)-.-.SH AUTHOR-.-Colin Woodbury <colin@fosskers.ca>
− doc/completions/_aura
@@ -1,590 +0,0 @@-#compdef aura--# Zsh completion file for Aura, based on pacman's-# copy this file to /usr/share/site-functions/_aura--typeset -A opt_args-setopt extendedglob--# options for passing to _arguments: main aura commands-_aura_opts_commands=(-    {-A,--aursync}'[Install and manage AUR packages]'-    {-B,--save}'[Manage the global package state]'-    {-C,--downgrade}'[Manage the package cache]'-    {-L,--viewlog}'[Analyse the pacman log file]'-    {-M,--abssync}'[Build and install from the ABS tree]'-    {-O,--orphans}'[Manage orphan packages]'-    {-Q,--query}'[Query the package database]'-    {-R,--remove}'[Remove a packags]'-    {-S,--sync}'[Synchronize repo packages]'-    {-U,--upgrade}'[Upgrade packages]'-    {-V,--version}'[Display version information]'-    '--viewconf[View the pacman config file read-only]'-    '--languages[Display available output languages]'-    '(-h --help)'{-h,--help}'[Help message]'-)--# options for passing to _arguments: options common to all commands-_aura_opts_common=(-    {-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'-    '--debug[Display debug messages]'-    '--gpgdir[Set an alternate home directory for GnuPG]:_files -/'-    '--logfile[An alternate log file]:config file:_files'-    '--noconfirm[Do not ask for confirmation]'-    '--no-pp[Do not use powerpill]'-    '--noprogressbar[Do not show a progress bar when downloading files]'-    '--noscriptlet[Do not execute the install scriptlet if one exists]'-    '--print[Only print the targets instead of performing the operation]'-)--# options for passing to _arguments: options for --upgrade commands-_aura_opts_pkgfile=(-    '*-d[Skip dependency checks]'-    '*--nodeps[Skip dependency checks]'-    '--dbonly[Only remove database entry, do not remove files]'-    '--force[Overwrite conflicting files]'-    '--needed[Do not reinstall up to date packages]'-    '*:package file:_files -g "*.pkg.tar*~*.sig(.,@)"'-)--# options for passing to _arguments: subactions for --query command-_aura_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-_aura_opts_query_modifiers=(-    {-c,--changelog}'[List package changelog]'-    {-d,--deps}'[List packages installed as dependencies]'-    {-e,--explicit}'[List packages explicitly installed]'-    {\*-i,\*--info}'-i[View package information]'-    #'-ii[View package information including backup files]'-    {\*-k,\*--check}'[Check package files]'-    {-l,--list}'-l[List package contents]'-    {-m,--foreign}'-m[List installed packages not found in sync db(s)]'-    {-n,--native}'[List installed packages found in sync db(s)]'-    {-q,--quiet}'[Display less information for certain operations.]'-    {-t,--unrequired}'[List packages not required by any package]'-    {-u,--upgrades}'[List packages that can be upgraded]'-)--# options for passing to _arguments: options for --remove command-_aura_opts_remove=(-    {-c,--cascade}'[Remove all dependent packages]'-    {*-d,*--nodeps}'[Skip dependency checks]'-    {-n,--nosave}'[Remove protected configuration files]'-    {\*-s,\*--recursive}'[Remove dependencies not required by other packages]'-    '--dbonly[Only remove database entry, do not remove files]'-    '*:installed package:_aura_completions_installed_packages'-)--# options for passing to _arguments: options for commands dealing with the database-_aura_opts_database=(-    '--asdeps[mark packages as non-explicitly installed]'-    '--asexplicit[mark packages as explicitly installed]'-    '*:installed package:_aura_completions_installed_packages'-)--# options for passing to _arguments: options for --sync command-_aura_opts_sync_actions=(-    '(-S --sync)'{-S,--sync}-    {\*-c,\*--clean}'[Remove old packages from cache]:\*:clean:->sync_clean'-    #'*-cc[Remove all 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-_aura_opts_sync_modifiers=(-    {\*-d,\*--nodeps}'[Skip dependency checks]'-    {\*-i,\*--info}'[View package information]'-    {-l,--list}'[List all packages in a repository]'-    {-p,--print}'[Print download URIs for each package to be installed]'-    {\*-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: _aura_completions_all_packages'-    '*--ignoregroup[Ignore a group upgrade]:package group:_aura_completions_all_groups'-    '--asdeps[Install packages as non-explicitly installed]'-    '--asexplicit[Install packages as explicitly installed]'-    '--force[Overwrite conflicting files]'--    #'-q[Display less information for certain operations.]'-)--# options for passing to _arguments: options for --aursync command-_aura_opts_aursync_actions=(-    '(-A --aursync)'{-A,--aursync}-    {-p,--pkgbuild}'[Display an AUR package''s PKGBUILD]'-    {-s,--search}'[Search AUR package names and descriptions]'-    {-w,--downloadonly}'[Download an AUR package''s source tarball]'-)--# options for passing to _arguments: options for --aursync command-_aura_opts_aursync_modifiers=(-    {-a,--delmakedeps}'[Uninstall unneeded build deps after installation]'-    {-d,--deps}'[Display package dependencies. Recursive for AUR packages]'-    {\*-i,\*--info}'[Display AUR package information]'-    {-k,--diff}'[Show PKGBUILD diffs when upgrading]'-    {-u,--sysupgrade}'[Upgrade all installed AUR packages]'-    {-x,--unsuppress}'[Unsuppress makepkg output during building]'-    '*--aurignore[Ignore AUR packages when installing]:package: _aura_completions_aur_packages'-    '--build[Build packages in specified path]'-    '--builduser[Use specified user to build packages]'-    {--dev,--devel}'[With -Au, also upgrades all development packages]'-    "--dryrun[Perform checks, but don't build]"-    '--hotedit[Prompt user to edit PKGBUILD before dep checks]'-    '--ignorearch[makepkg will ignore processor architecture]'-)--# options for passing to _arguments: options for --save commands-_aura_opts_save=(-    {-c,--clean}'[Given n, save n recent package states and remove the rest]'-    {-r,--restore}'[Restore a previously saved package state]'-)--# options for passing to _arguments: options for --downgrade commands-_aura_opts_downgrade=(-    {-b,--backup}'[Backup the cache to a given directory]'-    {-c,--clean}'[Given n, save n versions of each package file]'-    {-s,--search}'[Search the cache via a regex]'-    '*:installed package:_aura_completions_installed_packages'-)--# options for passing to _arguments: options for --viewlog commands-typeset -a _aura_opts_viewlog-_aura_opts_viewlog=(-    '-i[View package installation history.]'-    '-s[Search log file via a regex.]'-)--# options for passing to _arguments: options for --orphans commands-typeset -a _aura_opts_orphans-_aura_opts_orphans=( '-j[Uninstall all orphan packages.]' )--# handles --help subcommand-_aura_action_help() {-    _arguments -s : \-        "$_aura_opts_commands[@]"-}--# handles cases where no subcommand has yet been given-_aura_action_none() {-    _arguments -s : \-        "$_aura_opts_commands[@]"-}--# handles --query subcommand-_aura_action_query() {-    local context state line-    typeset -A opt_args--    case $state in-        query_file)-            _arguments -s : \-                "$_aura_opts_common[@]" \-                "$_aura_opts_query_modifiers[@]" \-                '*:package file:_files -g "*.pkg.tar*~*.sig(.,@)"'-            ;;-        query_group)-            _arguments -s : \-                "$_aura_opts_common[@]" \-                "$_aura_opts_query_modifiers[@]" \-                '*:groups:_aura_completions_installed_groups'-            ;;-        query_owner)-            _arguments -s : \-                "$_aura_opts_common[@]" \-                "$_aura_opts_query_modifiers[@]" \-                '*:file:_files'-            ;;-        query_search)-            _arguments -s : \-                "$_aura_opts_common[@]" \-                "$_aura_opts_query_modifiers[@]" \-                '*:search text: '-            ;;-        *)-            _arguments -s : \-                "$_aura_opts_common[@]" \-                "$_aura_opts_query_actions[@]" \-                "$_aura_opts_query_modifiers[@]" \-                '*:package:_aura_completions_installed_packages'-            ;;-    esac-}--# handles --remove subcommand-_aura_action_remove() {-    _arguments -s : \-        '(--remove -R)'{-R,--remove} \-        "$_aura_opts_common[@]" \-        "$_aura_opts_remove[@]"-}--# handles --database subcommand-_aura_actions_database() {-    _arguments -s : \-        '(--database -D)'{-D,--database} \-        "$_aura_opts_common[@]" \-        "$_aura_opts_database[@]"-}--# handles --deptest subcommand-_aura_action_deptest() {-    _arguments -s : \-        '(--deptest)-T' \-        "$_aura_opts_aura_common[@]" \-        ":packages:_aura_all_packages"-}--# handles --sync subcommand-_aura_action_sync() {-    local context state line-    typeset -A opt_args--    case $state in-        sync_clean)-            _arguments -s : \-                {\*-c,\*--clean}'[Remove old packages from cache]'-                "$_aura_opts_common[@]" \-                "$_aura_opts_sync_modifiers[@]" \-                ;;-        sync_group)-            _arguments -s : \-                "$_aura_opts_common[@]" \-                "$_aura_opts_sync_modifiers[@]" \-                '(-g --group)'{-g,--groups} \-                '*:package group:_aura_completions_all_groups'-            ;;-        sync_search)-            _arguments -s : \-                "$_aura_opts_common[@]" \-                "$_aura_opts_sync_modifiers[@]" \-                '*:search text: '-            ;;-        *)-            _arguments -s : \-                "$_aura_opts_common[@]" \-                "$_aura_opts_sync_actions[@]" \-                "$_aura_opts_sync_modifiers[@]" \-                '*:package:_aura_completions_repo_packages'-            ;;-    esac-}--# handles --upgrade subcommand-_aura_action_upgrade() {-    _arguments -s : \-        '(-U --upgrade)'{-U,--upgrade} \-        "$_aura_opts_common[@]" \-        "$_aura_opts_pkgfile[@]"-}--# handles --version subcommand-_aura_action_version() {-    # no further arguments-    return 0-}--# provides completions for package groups-_aura_completions_all_groups() {-    local -a cmd groups-    _aura_get_command-    groups=( $(_call_program groups $cmd[@] -Sg) )-    typeset -U groups-    compadd "$@" -a groups-}--# provides completions for packages available from repositories-# these can be specified as either 'package' or 'repository/package'-_aura_completions_repo_packages() {-    local -a cmd packages repositories packages_long-    _aura_get_command--    if compset -P '*/'; then-        packages=( $(_call_program packages $cmd[@] -Sql ${words[CURRENT]%/*}) )-        typeset -U packages-        _wanted repo_packages expl "repository/package" compadd ${(@)packages}-    else-        packages=( $(_call_program packages $cmd[@] -Sql) )-        typeset -U packages-        _wanted packages expl "packages" compadd - "${(@)packages}"--        repositories=( aur ${(o)${${${(M)${(f)"$(</etc/pacman.conf)"}:#\[*}/\[/}/\]/}:#options} )-        typeset -U repositories-        _wanted repo_packages expl "repository/package" compadd -S "/" $repositories-    fi-}--# provides completions for packages in the AUR-_aura_completions_aur_packages() {-    local -a cmd packages repositories packages_long-    _aura_get_command--    packages=()-    if [[ -d /var/aur ]]; then-        packages=( $(ls /var/aur) )-    fi-    typeset -U packages-    _wanted aur_packages expl "packages" compadd - "${(@)packages}"-}--# provides completions for packages available from repositories and the AUR-# these can be specied as either 'package' or 'repository/package'-_aura_completions_all_packages() {-    _alternative : \-        'aurpkgs:aur packages:_aura_completions_aur_packages' \-        'repopkgs:repository packages:_aura_completions_repo_packages'-}--_aura_all_packages() {-    _alternative : \-        'localpkgs:local packages:_aura_completions_installed_packages' \-        'aurpkgs:aur packages:_aura_completions_aur_packages' \-        'repopkgs:repository packages:_aura_completions_repo_packages'-}--# provides completions for package groups-_aura_completions_installed_groups() {-    local -a cmd groups-    _aura_get_command-    groups=(${(o)${(f)"$(_call_program groups $cmd[@] -Qg)"}% *})-    typeset -U groups-    compadd "$@" -a groups-}--# provides completions for installed packages-_aura_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-}--# provides completions for repository names-_aura_completions_repositories() {-    local -a cmd repositories-    repositories=(${(o)${${${(M)${(f)"$(</etc/pacman.conf)"}:#\[*}/\[/}/\]/}:#options})-    # 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-_aura_get_command() {-    # this is mostly nicked from _perforce-    cmd=( "aura" "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-}--_aura_comp() {-    local -a args cmds-    local tmp-    args=( ${${${(M)words:#-*}#-}:#-*} )-    _message 'now what'-    for tmp in $words; do-        cmds+=("${${_aura_opts_commands[(r)*$tmp\[*]%%\[*}#*\)}")-    done-    case $args in #$words[2] in-        h*)-            if (( ${(c)#args} <= 1 && ${(w)#cmds} <= 1 )); then-                _aura_action_help-            else-                _message "no more arguments"-            fi-            ;;-        *h*)-            _message "no more arguments"-            ;;-        D*)-            _aura_action_database-            ;;-        Q*g*) # ipkg groups-            _arguments -s : \-                "$_aura_opts_common[@]" \-                "$_aura_opts_query_modifiers[@]" \-                '*:groups:_aura_completions_installed_groups'-            ;;-        Q*o*) # file-            _arguments -s : \-                "$_aura_opts_common[@]" \-                "$_aura_opts_query_modifiers[@]" \-                '*:package file:_files'-            ;;-        Q*p*) # file *.pkg.tar.*-            _arguments -s : \-                "$_aura_opts_common[@]" \-                "$_aura_opts_query_modifiers[@]" \-                '*:package file:_files -g "*.pkg.tar*~*.sig(.,@)"'-            ;;-        T*)-            _aura_action_deptest-            ;;-        Q*)-            _aura_action_query-            ;;-        R*)-            _aura_action_remove-            ;;-        S*c*)-            _arguments -s : \-                '(-S --sync)'{-S,--sync} \-                '(-c --clean)'{\*-c,\*--clean}'[Remove all files from the cache]' \-                "$_aura_opts_common[@]"-            ;;-        S*l*) # repos-            _arguments -s : \-                "$_aura_opts_common[@]" \-                "$_aura_opts_sync_modifiers[@]" \-                '*:package repo:_aura_completions_repositories' \-                ;;-        S*g*) # pkg groups-            _arguments -s : \-                "$_aura_opts_common[@]" \-                "$_aura_opts_sync_modifiers[@]" \-                '*:package group:_aura_completions_all_groups'-            ;;-        S*s)-            _arguments -s : \-                "$_aura_opts_common[@]" \-                "$_aura_opts_sync_modifiers[@]" \-                '*:search text: '-                ;;-        S*)-            _aura_action_sync-            ;;-        U*)-            _aura_action_upgrade-            ;;-        V*)-            _aura_action_version-            ;;-        A*)-            _arguments -s : \-                "$_aura_opts_common[@]" \-                "$_aura_opts_aursync_modifiers[@]" \-                "$_aura_opts_aursync_actions[@]" \-                '*:package:_aura_completions_aur_packages'-                ;;-        B*)-            _arguments -s : \-                '(-B --save)'{-B,--save} \-                "$_aura_opts_common[@]" \-                "$_aura_opts_save[@]"-      ;;-        C*)-            _arguments -s : \-                '(-C --downgrade)'{-C,--downgrade} \-                "$_aura_opts_common[@]" \-                "$_aura_opts_downgrade[@]"-            ;;-        L*)-            _arguments -s : \-                '(-L --viewlog)'{-L,--viewlog} \-                "$_aura_opts_common[@]" \-                "$_aura_opts_viewlog[@]"-            ;;-        M*)-            _arguments -s : \-                '(-M --abssync)'{-M,--abssync} \-                "$_aura_opts_common[@]"-            ;;-        O*)-            _arguments -s : \-                '(-O --orphans)'{-O,--orphans} \-                "$_aura_opts_common[@]" \-                "$_aura_opts_orphans[@]"-            ;;-        *)-            case ${(M)words:#--*} in-                *--help*)-                    if (( ${(W)#cmds} == 1 )); then-                        _aura_action_help-                    else-                        return 0-                    fi-                    ;;-                *--sync*)-                    _aura_action_sync-                    ;;-                *--query*)-                    _aura_action_query-                    ;;-                *--remove*)-                    _aura_action_remove-                    ;;-                *--deptest*)-                    _aura_action_deptest-                    ;;-                *--database*)-                    _aura_action_database-                    ;;-                *--version*)-                    _aura_action_version-                    ;;-                *--upgrade*)-                    _aura_action_upgrade-                    ;;--                *--aursync*)-                    _arguments -s : \-                        "$_aura_opts_common[@]" \-                        "$_aura_opts_aursync_modifiers[@]" \-                        "$_aura_opts_aursync_actions[@]" \-                        '*:package:_aura_completions_aur_packages'-                    ;;-                *--save*)-                    _arguments -s : \-                        '(-B --save)'{-B,--save} \-                        "$_aura_opts_common[@]" \-                        "$_aura_opts_save[@]"-                    ;;-                *--downgrade*)-                    _arguments -s : \-                        '(-C --downgrade)'{-C,--downgrade} \-                        "$_aura_opts_common[@]" \-                        "$_aura_opts_downgrade[@]"-                    ;;-                *--viewlog*)-                    _arguments -s : \-                        '(-L --viewlog)'{-L,--viewlog} \-                        "$_aura_opts_common[@]" \-                        "$_aura_opts_viewlog[@]"-                    ;;-                *--orphans*)-                    _arguments -s : \-                        '(-O --orphans)'{-O,--orphans} \-                        "$_aura_opts_common[@]" \-                        "$_aura_opts_orphans[@]"-                    ;;-                *)-                    _aura_action_none-                    ;;-            esac-            ;;-    esac-}--# run the main dispatcher-_aura_comp "$@"
− doc/completions/bashcompletion.sh
@@ -1,104 +0,0 @@-# This file is in the public domain.--_aura_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-}--_aura_ptr2comp() {-  local list= x y-  for x; do-    for y in '0 --' '1 -'; do-      eval 'set -- ${'$x'[${y% *}]}'-      list+=\ ${@/#/${y#* }}-    done-  done-  _aura_compgen $list-}--_aura_incomp() {-  local r="[[:space:]]-(-${1#* }[[:space:]]|[[:alnum:]_]*${1% *})"; [[ $COMP_LINE =~ $r ]]-}--_aura_pkg() {-  _aura_compgen "$(-    if [[ $2 ]]; then-      \pacman -$1 2>/dev/null | \cut -d' ' -f1 | \sort -u-    else-      \pacman -$1 2>/dev/null-    fi-  )"-}--_aura_repo_list() {-  _aura_compgen "$(pacman-conf --repo-list)"-}--_aura() {-  compopt -o default-  local common core database files query remove sync upgrade o-  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' 'c n p s u')-  sync=('asdeps asexplicit clean dbonly downloadonly 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 needed nodeps assume-installed print recursive' 'p')-  common=('arch cachedir color config confirm dbpath debug gpgdir help hookdir logfile-           noconfirm noprogressbar noscriptlet quiet root verbose' 'b d h q r v')-  core=('aursync save downgrade database files viewlog help orphans analysis query remove sync upgrade version' 'A B C D F L O P Q R S U V h')--  for o in 'D database' 'F files' 'Q query' 'R remove' 'S sync' 'U upgrade'; do-    _aura_incomp "$o" && break-  done--  if [[ $? != 0 ]]; then-    _aura_ptr2comp core-  elif [[ ! $prev =~ ^-[[:alnum:]_]*[Vbhr] &&-    ! $prev = --@(cachedir|color|config|dbpath|help|hookdir|gpgdir|logfile|root|version) ]]-  then-    [[ $cur = -* ]] && _aura_ptr2comp ${o#* } common ||-      case ${o% *} in-      # Pacman Commands-      D|R)-          _aura_pkg Qq;;-      F)-        { _aura_incomp 'l list'   && _aura_pkg Slq ; }       ||-          compopt +o default;;-      Q)-        { _aura_incomp 'g groups' && _aura_pkg Qg sort; }    ||-        { _aura_incomp 'p file'   && _aura_file; }           ||-        { _aura_incomp 's search' && compopt +o default; }     ||-        { _aura_incomp 'u upgrades' && compopt +o default; }   ||-          _aura_incomp 'o owns'   ||-          _aura_pkg Qq;;-      S)-        { _aura_incomp 'g groups' && _aura_pkg Sg; }      ||-        { _aura_incomp 'l list'   && _aura_repo_list; } ||-        { _aura_incomp 's search' && compopt +o default; }  ||-          _aura_pkg Slq;;-      U)-          _aura_file;;-      esac-  fi-  true-}--_aura_file() {-  compopt -o filenames; _filedir 'pkg.tar*'-}--complete -F _aura aura--# ex:et ts=2 sw=2 ft=sh
exec/Aura/Commands/A.hs view
@@ -5,7 +5,7 @@  -- | -- Module    : Aura.Commands.A--- Copyright : (c) Colin Woodbury, 2012 - 2021+-- Copyright : (c) Colin Woodbury, 2012 - 2024 -- License   : GPL3 -- Maintainer: Colin Woodbury <colin@fosskers.ca> --
exec/Aura/Commands/B.hs view
@@ -3,7 +3,7 @@  -- | -- Module    : Aura.Commands.B--- Copyright : (c) Colin Woodbury, 2012 - 2021+-- Copyright : (c) Colin Woodbury, 2012 - 2024 -- License   : GPL3 -- Maintainer: Colin Woodbury <colin@fosskers.ca> --
exec/Aura/Commands/C.hs view
@@ -5,7 +5,7 @@  -- | -- Module    : Aura.Commands.C--- Copyright : (c) Colin Woodbury, 2012 - 2021+-- Copyright : (c) Colin Woodbury, 2012 - 2024 -- License   : GPL3 -- Maintainer: Colin Woodbury <colin@fosskers.ca> --@@ -200,5 +200,7 @@ cleanDir = do   ss <- asks settings   let !vcsPath = fromMaybe vcsStore . vcsPathOf $ buildConfigOf ss-  notify ss cleanCache_6-  listDirectory vcsPath >>= traverse_ (removeDirectoryRecursive . (</>) vcsPath)+  exists <- doesDirectoryExist vcsPath+  when exists $ do+    notify ss cleanCache_6+    listDirectory vcsPath >>= traverse_ (removeDirectoryRecursive . (</>) vcsPath)
exec/Aura/Commands/L.hs view
@@ -1,6 +1,6 @@ -- | -- Module    : Aura.Commands.L--- Copyright : (c) Colin Woodbury, 2012 - 2021+-- Copyright : (c) Colin Woodbury, 2012 - 2024 -- License   : GPL3 -- Maintainer: Colin Woodbury <colin@fosskers.ca> --
exec/Aura/Commands/O.hs view
@@ -1,6 +1,6 @@ -- | -- Module    : Aura.Commands.O--- Copyright : (c) Colin Woodbury, 2012 - 2021+-- Copyright : (c) Colin Woodbury, 2012 - 2024 -- License   : GPL3 -- Maintainer: Colin Woodbury <colin@fosskers.ca> --
exec/Aura/Commands/P.hs view
@@ -3,7 +3,7 @@  -- | -- Module    : Aura.Commands.P--- Copyright : (c) Colin Woodbury, 2012 - 2021+-- Copyright : (c) Colin Woodbury, 2012 - 2024 -- License   : GPL3 -- Maintainer: Colin Woodbury <colin@fosskers.ca> --
exec/Aura/Flags.hs view
@@ -569,7 +569,7 @@  language :: Parser Language language = foldr1 (<|>) $ NEL.map (\(f, v) -> flag' v (long f <> hidden)) langs-  where langs = [ ( "japanese",   Japanese ),   ( "日本語",      Japanese )+  where langs = [ ( "japanese",   Japanese ),   ( "日本語",     Japanese )                 , ( "polish",     Polish ),     ( "polski",     Polish )                 , ( "croatian",   Croatian ),   ( "hrvatski",   Croatian )                 , ( "swedish",    Swedish ),    ( "svenska",    Swedish )@@ -582,15 +582,17 @@                 , ( "serbian",    Serbian ),    ( "српски",     Serbian )                 , ( "norwegian",  Norwegian ),  ( "norsk",      Norwegian )                 , ( "indonesian", Indonesia )-                , ( "chinese",    Chinese ),    ( "中文",        Chinese )+                , ( "chinese",    Chinese ),    ( "中文",       Chinese )                 , ( "esperanto",  Esperanto )                 , ( "dutch",      Dutch ),      ( "nederlands", Dutch )-                , ( "arabic",     Arabic ),     ( "العربية",       Arabic )+                , ( "turkish",    Turkish )+                , ( "arabic",     Arabic ),     ( "العربية",    Arabic )                 , ( "ukrainian",  Ukrainian ),  ( "українська", Ukrainian)-                , ( "vietnamese", Vietnamese )                 , ( "romanian",   Romanian ),   ( "română",     Romanian )-                , ( "czech",      Czech ),      ( "český",       Czech )-                , ( "korean",     Korean),      ( "한국어",      Korean )+                , ( "vietnamese", Vietnamese )+                , ( "czech",      Czech ),      ( "český",      Czech )+                , ( "korean",     Korean),      ( "한국어",     Korean )+                , ( "hindi",      Hindi),       ( "हिंदी",       Hindi )                 ]  logLevel :: Parser LogLevel
exec/Aura/Settings/Runtime.hs view
@@ -2,7 +2,7 @@  {- -Copyright 2012 - 2021 Colin Woodbury <colin@fosskers.ca>+Copyright 2012 - 2024 Colin Woodbury <colin@fosskers.ca>  This file is part of Aura. 
exec/aura.hs view
@@ -4,7 +4,7 @@  {- -Copyright 2012 - 2021 Colin Woodbury <colin@fosskers.ca>+Copyright 2012 - 2024 Colin Woodbury <colin@fosskers.ca>  This file is part of Aura. 
lib/Aura/Build.hs view
@@ -3,7 +3,7 @@  -- | -- Module    : Aura.Build--- Copyright : (c) Colin Woodbury, 2012 - 2021+-- Copyright : (c) Colin Woodbury, 2012 - 2024 -- License   : GPL3 -- Maintainer: Colin Woodbury <colin@fosskers.ca> --
lib/Aura/Cache.hs view
@@ -2,7 +2,7 @@  -- | -- Module    : Aura.Cache--- Copyright : (c) Colin Woodbury, 2012 - 2021+-- Copyright : (c) Colin Woodbury, 2012 - 2024 -- License   : GPL3 -- Maintainer: Colin Woodbury <colin@fosskers.ca> --
lib/Aura/Colour.hs view
@@ -1,6 +1,6 @@ -- | -- Module    : Aura.Colour--- Copyright : (c) Colin Woodbury, 2012 - 2021+-- Copyright : (c) Colin Woodbury, 2012 - 2024 -- License   : GPL3 -- Maintainer: Colin Woodbury <colin@fosskers.ca> --
lib/Aura/Core.hs view
@@ -4,7 +4,7 @@  -- | -- Module    : Aura.Core--- Copyright : (c) Colin Woodbury, 2012 - 2021+-- Copyright : (c) Colin Woodbury, 2012 - 2024 -- License   : GPL3 -- Maintainer: Colin Woodbury <colin@fosskers.ca> --
lib/Aura/Dependencies.hs view
@@ -4,7 +4,7 @@  -- | -- Module    : Aura.Dependencies--- Copyright : (c) Colin Woodbury, 2012 - 2021+-- Copyright : (c) Colin Woodbury, 2012 - 2024 -- License   : GPL3 -- Maintainer: Colin Woodbury <colin@fosskers.ca> --@@ -171,8 +171,8 @@     | isVersionConflict reqVer curVer = Just $ VerConflict failMsg2     | otherwise                       = Nothing     where pn       = pname pkg-          curVer   = pver pkg & release .~ []-          reqVer   = dDemand dep & _VersionDemand . release .~ []+          curVer   = pver pkg & release .~ Nothing+          reqVer   = dDemand dep & _VersionDemand . release .~ Nothing           lang     = langOf ss           toIgnore = ignoresOf ss           failMsg1 = getRealPkgConflicts_2 pn lang
lib/Aura/IO.hs view
@@ -1,6 +1,6 @@ -- | -- Module    : Aura.IO--- Copyright : (c) Colin Woodbury, 2012 - 2021+-- Copyright : (c) Colin Woodbury, 2012 - 2024 -- License   : GPL3 -- Maintainer: Colin Woodbury <colin@fosskers.ca> --
lib/Aura/Install.hs view
@@ -4,7 +4,7 @@  -- | -- Module    : Aura.Install--- Copyright : (c) Colin Woodbury, 2012 - 2021+-- Copyright : (c) Colin Woodbury, 2012 - 2024 -- License   : GPL3 -- Maintainer: Colin Woodbury <colin@fosskers.ca> --
lib/Aura/Languages.hs view
@@ -8,7 +8,7 @@  -- | -- Module    : Aura.Languages--- Copyright : (c) Colin Woodbury, 2012 - 2021+-- Copyright : (c) Colin Woodbury, 2012 - 2024 -- License   : GPL3 -- Maintainer: Colin Woodbury <colin@fosskers.ca> --@@ -45,7 +45,7 @@     , (Serbian,    "Filip Brcic")     , (Norwegian,  "\"chinatsun\"")     , (Indonesia,  "\"pak tua Greg\"")-    , (Chinese,    "Kai Zhang")+    , (Chinese,    "Kai Zhang / Alex3236")     , (Japanese,   "Onoue Takuro / Colin Woodbury")     , (Esperanto,  "Zachary Matthews")     , (Dutch,      "Joris Blanken / Heimen Stoffels")@@ -56,6 +56,7 @@     , (Vietnamese, "\"Kritiqual\"")     , (Czech,      "Daniel Rosel")     , (Korean,     "\"Nioden\"")+    , (Hindi,      "@yozachar")     ]  translatorMsgTitle :: Language -> Text@@ -83,6 +84,7 @@     Vietnamese -> "Dịch giả của Aura:"     Czech      -> "Překladači Aury:"     Korean     -> "Aura 번역자:"+    Hindi      -> "Aura अनुवादकों:"     _          -> "Aura Translators:"  translatorMsg :: Language -> [Text]@@ -95,7 +97,7 @@     names = mapMaybe (\l -> formatLang . (,l) <$> M.lookup l translators) [English ..]      formatLang :: (Text, Language) -> Text-    formatLang (translator, lang') = " (" <> (T.pack $ show lang') <> ") " <> translator+    formatLang (translator, lang') = " (" <> T.pack (show lang') <> ") " <> translator  -- | Make some `Text` cyan. Previous wrapped things in backticks. bt :: Pretty a => a -> Doc AnsiStyle@@ -131,6 +133,7 @@   "vi" -> Just Vietnamese   "cs" -> Just Czech   "ko" -> Just Korean+  "hi" -> Just Hindi   _    -> Nothing  ----------------------@@ -160,6 +163,7 @@     Vietnamese -> "Cơ sở dữ liệu của gói đã bị khóa. Nhấn Enter sau khi nó được mở khóa để tiếp tục."     Czech      -> "Databáze balíčků je uzamčena. Až bude odemčena, stiskněte Enter pro pokračování."     Korean     -> "패키지 데이터베이스가 잠겨있습니다. 계속하려면 Enter 키를 누르시오."+    Hindi      -> "पैकेज डेटाबेस लॉक है. जारी रखने के लिए अनलॉक होने पर एंटर दबाएँ।"     _          -> "The package database is locked. Press enter when it's unlocked to continue."  trueRoot_3 :: Language -> Doc AnsiStyle@@ -182,6 +186,7 @@     Vietnamese -> "Kể từ makepkg v4.2, build bằng quyền root không còn khả dụng."     Czech      -> "Od makepkg v4.2 již není sestavení jako root možné."     Korean     -> "makepkg v4.2부터는 루트 권한으로 빌드 할 수 없습니다."+    Hindi      -> "मेकपीकेजी v4.2 के अनुसार, रूट के रूप में निर्माण अब संभव नहीं है।"     _          -> "As of makepkg v4.2, building as root is no longer possible."  mustBeRoot_1 :: Language -> Doc AnsiStyle@@ -201,7 +206,7 @@     Serbian    -> "Морате да користите " <> sudo <> " за ову радњу."     Norwegian  -> "Du må bruke " <> sudo <> " for det."     Indonesia  -> "Anda harus menggunakan " <> sudo <> " untuk melakukannya."-    Chinese    -> "除非是根用户,否则不能执行此操作。"+    Chinese    -> "需要" <> sudo <> "以执行此操作。"     Esperanto  -> "Vi ne povas fari ĉi tiun operacion, sen " <> sudo <> "."     Dutch      -> "U kunt deze actie niet uitvoeren zonder " <> sudo <> " te gebruiken."     Ukrainian  -> "Для цієї дії, потрібно використати " <> sudo <> "."@@ -209,6 +214,7 @@     Vietnamese -> "Bạn không thể thực hiện hành động này nếu không dùng " <> sudo <> "."     Czech      -> "Tuto operaci nelze provést bez použití sudo."     Korean     -> "루트 권한으로 실행해야 합니다."+    Hindi      -> "आप सूडो का उपयोग किए बिना यह ऑपरेशन नहीं कर सकते।"     _          -> "You cannot perform this operation without using sudo."  -----------------------@@ -239,6 +245,7 @@     Vietnamese -> "Đang build " <> p <> "..."     Czech      -> "Kompilace " <> p <> "..."     Korean     -> p <> "빌드 중..."+    Hindi      -> "बिल्डिंग " <> p <> "..."     _          -> "Building " <> p <> "..."  buildPackages_2 :: Language -> Doc AnsiStyle@@ -252,6 +259,8 @@     Czech      -> "Bylo nalezeno '-allsource'. Žádné skutečné instalovatelné balíčky nebudou sestaveny."     Korean     -> "'--allsource' 감지되었습니다. 실제 설치 가능한 패키지는 빌드되지 않습니다."     Dutch      -> "--allsource gedetecteerd. Er worden geen installeerbare pakketten gebouwd."+    Hindi      -> "'--allsource' का पता चला। कोई वास्तविक इंस्टाल करने योग्य पैकेज नहीं बनाया जाएगा।"+    Chinese    -> "检测到 '--allsource'。不会构建实际的可安装软件包。"     _          -> "'--allsource' detected. No actual installable packages will be built."  buildPackages_3 :: FilePath -> Language -> Doc AnsiStyle@@ -266,25 +275,31 @@     Czech      -> "Všechny soubory .src.tar.gz byly vytvořeny a zkopírovány do: " <> pretty fp     Dutch      -> "Alle .src.tar.gz-bestanden zijn gebouwd en gekopieerd naar " <> pretty fp     Korean     -> "모든 .src.tar.gz 파일은 빌드되고 복사됩니다:" <> pretty fp+    Hindi      -> "सभी .src.tar.gz फ़ाइलें बनाई गईं और यहां कॉपी की गईं: " <> pretty fp+    Chinese    -> "所有 .src.tar.gz 文件已经构建并复制到:" <> pretty fp     _          -> "All .src.tar.gz files were built and copied to: " <> pretty fp  buildPackages_4 :: Language -> Doc AnsiStyle buildPackages_4 = \case-    Romanian -> bt @Text "--hotedit" <+> "detectat, dar acestea au date în cache și vor fi omise din editare:"+    Romanian   -> bt @Text "--hotedit" <+> "detectat, dar acestea au date în cache și vor fi omise din editare:"     Vietnamese -> bt @Text "--hotedit" <+> "được sử dụng, những gói sau có trong cache và sẽ được bỏ qua để chỉnh sửa:"-    Czech    -> bt @Text "--hotedit" <+> "zjištěno, ale následující položky mají položky mezipaměti a budou přeskočeny pro úpravy:"-    Korean   -> bt @Text "--hotedit" <+> "감지되었지만 캐시 목록이 있으므로 편집을 위해 건너뜁니다."+    Czech      -> bt @Text "--hotedit" <+> "zjištěno, ale následující položky mají položky mezipaměti a budou přeskočeny pro úpravy:"+    Korean     -> bt @Text "--hotedit" <+> "감지되었지만 캐시 목록이 있으므로 편집을 위해 건너뜁니다."     Dutch      -> "--hotedit gedetecteerd. De volgende pakketten zijn gecachet en zullen niet worden bewerkt:"-    _        -> bt @Text "--hotedit" <+> "detected, but the following have cache entries and will be skipped for editing:"+    Hindi      -> bt @Text "--hotedit" <+> "पता चला, लेकिन निम्नलिखित में कैश प्रविष्टियाँ हैं और इन्हें संपादन के लिए छोड़ दिया जाएगा:"+    Chinese    -> "检测到" <+> bt @Text "--hotedit" <+> ",但以下条目已缓存,将跳过编辑:"+    _          -> bt @Text "--hotedit" <+> "detected, but the following have cache entries and will be skipped for editing:"  buildPackages_5 :: Language -> Doc AnsiStyle buildPackages_5 = \case-    Romanian -> "Se poate folosi" <+> bt @Text "--force" <+> "pentru a trece peste acest comportament."+    Romanian   -> "Se poate folosi" <+> bt @Text "--force" <+> "pentru a trece peste acest comportament."     Vietnamese -> "Bạn có thể dùng" <+> bt @Text "--force" <+> "để ghi đè hành động này."-    Czech    -> "Můžete použít" <+> bt @Text "--force" <+> "k potlačení tohoto chování."-    Korean   -> bt @Text "--force" <+> "를 사용하여 이 동작을 무시할 수 있습니다."+    Czech      -> "Můžete použít" <+> bt @Text "--force" <+> "k potlačení tohoto chování."+    Korean     -> bt @Text "--force" <+> "를 사용하여 이 동작을 무시할 수 있습니다."     Dutch      -> "U kunt" <+> bt @Text "--force" <+> "toekennen om dit gedrag te omzeilen."-    _        -> "You can use" <+> bt @Text "--force" <+> "to override this behaviour."+    Hindi      -> "आप इस व्यवहार को ओवरराइड करने के लिए" <+> bt @Text "--force" <+> "का उपयोग कर सकते हैं।"+    Chinese    -> "使用" <+> bt @Text "--force" <+> "可忽略此行为。"+    _          -> "You can use" <+> bt @Text "--force" <+> "to override this behaviour."  buildFail_5 :: Language -> Doc AnsiStyle buildFail_5 = \case@@ -310,6 +325,7 @@     Vietnamese -> "Build thất bại."     Czech      -> "Budování se nezdařilo."     Korean     -> "빌드 실패"+    Hindi      -> "बिल्डिंग फेल हो गई।"     _          -> "Building failed."  -- NEEDS TRANSLATION@@ -327,7 +343,7 @@     French     -> "Voulez-vous tout de même continuer ?"     Russian    -> "Продолжить, несмотря ни на что?"     Indonesia  -> "Apakah anda tetap ingin melanjutkan?"-    Chinese    -> "你仍然希望继续吗?"+    Chinese    -> "仍要继续吗?"     Swedish    -> "Vill du fortsätta ändå?"     Esperanto  -> "Ĉu vi volas daŭrigi?"     Dutch      -> "Wilt u toch doorgaan?"@@ -336,6 +352,7 @@     Vietnamese -> "Bạn có muốn tiếp tục không?"     Czech      -> "Chcete přesto pokračovat?"     Korean     -> "계속하시겠습니까?"+    Hindi      -> "क्या आप फिर भी जारी रखना चाहेंगे?"     _          -> "Would you like to continue anyway?"  -- NEEDS TRANSLATION@@ -350,7 +367,7 @@     Indonesia  -> "Gagal mendapatkan skrip untuk " <> p <> "."     Russian    -> "Не удалось получить сценарии сборки для " <> p <> "."     Italian    -> "Non è stato possibile ottenere gli script di compilazione per " <> p <> "."-    Chinese    -> "无法获得 " <> p <> " 的构建脚本。"+    Chinese    -> "无法获取 " <> p <> " 的构建脚本。"     Swedish    -> "Kunde inte hämta byggskript för " <> p <> "."     Esperanto  -> "Paneis akiri muntaj skriptoj de " <> p <> "."     Dutch      -> "De bouwscripts van " <> p <> " kunnen niet worden opgehaald."@@ -359,6 +376,7 @@     Vietnamese -> "Không thể lấy tập lệnh build cho " <> p <> "."     Czech      -> "Nepodařilo se získat sestavení skriptů pro " <> p <> "."     Korean     -> p <> "의 빌드 스크립트를 가져올 수 없습니다."+    Hindi      -> "" <> p <> "के लिए बिल्ड स्क्रिप्ट प्राप्त करने में विफल।"     _          -> "Failed to obtain build scripts for " <> p <> "."  buildFail_8 :: Language -> Doc AnsiStyle@@ -377,22 +395,26 @@     Vietnamese -> "Có lỗi khi makepkg."     Czech      -> "Došlo k chybě makepkg."     Korean     -> "makepkg를 실패했습니다."+    Hindi      -> "मेकपेकेजी विफलता थी।"+    Chinese    -> "makepkg 失败。"     _          -> "There was a makepkg failure."  buildFail_9 :: Language -> Doc AnsiStyle buildFail_9 = \case-  Polish    -> "Nie udało się zlokalizować żadnych zbudowanych pakietów (*.pkg.tar.xz)."-  Arabic    -> ".(*.pkg.tar.xz) فشل في اكتشاف اي ملف من ملفات البناء"-  Spanish   -> "Error al detectar todos los archivo de paquete (*.pkg.tar.xz)."-  Italian   -> "Non è stato possibile trovare nessun archivio risultante dalla compilazione del pacchetto (*.pkg.tar.xz)."-  Esperanto -> "Paneis detekti ĉiujn dosierojn de pakaĵoj (*.pkg.tar.xz)."-  Dutch     -> "Er zijn geen gebouwde pakketbestanden aangetroffen (*.pkg.tar.xz)."-  Ukrainian -> "Не вдалось знайти жодного файлу пакунку (*.pkg.tar.xz)."-  Romanian  -> "Nu s-a detectat nici un pachet construit (*.pkg.tar.xz)."+  Polish     -> "Nie udało się zlokalizować żadnych zbudowanych pakietów (*.pkg.tar.xz)."+  Arabic     -> ".(*.pkg.tar.xz) فشل في اكتشاف اي ملف من ملفات البناء"+  Spanish    -> "Error al detectar todos los archivo de paquete (*.pkg.tar.xz)."+  Italian    -> "Non è stato possibile trovare nessun archivio risultante dalla compilazione del pacchetto (*.pkg.tar.xz)."+  Esperanto  -> "Paneis detekti ĉiujn dosierojn de pakaĵoj (*.pkg.tar.xz)."+  Dutch      -> "Er zijn geen gebouwde pakketbestanden aangetroffen (*.pkg.tar.xz)."+  Ukrainian  -> "Не вдалось знайти жодного файлу пакунку (*.pkg.tar.xz)."+  Romanian   -> "Nu s-a detectat nici un pachet construit (*.pkg.tar.xz)."   Vietnamese -> "Không thể phát hiện các tệp đã được build (*.pkg.tar.xz)."-  Czech     -> "Nepodařilo se detekovat žádné soubory zabudovaného balíčku (*.pkg.tar.xz)."-  Korean    -> "빌드된 패키지 파일 (*.pkg.tar.xz)을 검색하지 못했습니다."-  _         -> "Failed to detect any built package files (*.pkg.tar.xz)."+  Czech      -> "Nepodařilo se detekovat žádné soubory zabudovaného balíčku (*.pkg.tar.xz)."+  Korean     -> "빌드된 패키지 파일 (*.pkg.tar.xz)을 검색하지 못했습니다."+  Hindi      -> "किसी भी निर्मित पैकेज फ़ाइल (*.pkg.tar.xz) का पता लगाने में विफल।"+  Chinese    -> "未能发现任何已构建的包 (*.pkg.tar.xz)。"+  _          -> "Failed to detect any built package files (*.pkg.tar.xz)."  buildFail_10 :: Language -> Doc AnsiStyle buildFail_10 = \case@@ -407,6 +429,8 @@   Vietnamese -> "Tất cả các gói build thất bại."   Czech      -> "Sestavení každého balíčku se nezdařilo."   Korean     -> "모든 패키지를 빌드하지 못했습니다."+  Hindi      -> "हर पैकेज बनाने में असफल रहा।"+  Chinese    -> "所有包都未能构建。"   _          -> "Every package failed to build."  buildFail_11 :: Language -> Doc AnsiStyle@@ -423,6 +447,8 @@   Vietnamese -> "Build thất bại. Bạn có muốn xem lịch sử lỗi?"   Czech      -> "Budování se nezdařilo. Chcete vidět chybu?"   Korean     -> "빌드를 실패했습니다. 오류를 확인하시겠습니까?"+  Hindi      -> "बिल्डिंग विफल हो गई। क्या आप त्रुटि देखना चाहेंगे?"+  Chinese    -> "构建失败。要检查错误吗?"   _          -> "Building failed. Would you like to see the error?"  buildFail_12 :: Language -> Doc AnsiStyle@@ -436,6 +462,8 @@     Czech      -> "Nepodařilo se 'git stáhnout' nejnovější aktualizace."     Korean     -> "최신 버전 'git pull'을 실패했습니다."     Dutch      -> "Het uitvoeren van ‘git pull’ om de nieuwste bestanden op te halen is mislukt."+    Hindi      -> "नवीनतम अपडेट को 'गिट पुल' करने में विफल।"+    Chinese    -> "未能从 'git pull' 获取最新更新。"     _          -> "Failed to 'git pull' the latest updates."  ------------------------------@@ -458,7 +486,7 @@     Serbian    -> "Зависност " <> p <> " захтева верзију " <> d <> ", али најновија верзија је " <> r <> "."     Norwegian  -> "Avhengigheten " <> p <> " krever versjon " <> d <>", men den nyeste versjonen er " <> r <> "."     Indonesia  -> "Dependensi " <> p <> " meminta versi " <> d <> " namun versi paling baru adalah " <> r <> "."-    Chinese    -> "依赖 " <> p <> " 需要版本 " <> d <> ",但是最新的版本是 " <> r <> "。"+    Chinese    ->  p <> " 依赖于版本 " <> d <> ",但最新版本是 " <> r <> "。"     Esperanto  -> "La pakaĵo, " <> prnt <> ", dependas de versio " <> d <> " de " <> p <> ", sed la plej nova versio estas " <> r <> "."     Dutch      -> prnt <> " is afhankelijk van versie " <> d <> " van " <> p <> ", maar de nieuwste versie is " <> r <> "."     Ukrainian  -> "Залежність " <> p <> " потребує версію " <> d <> ", проте останньою версією є " <> r <> "."@@ -466,6 +494,7 @@     Vietnamese -> "Gói " <> prnt <> " phụ thuộc vào bản " <> d <> " của " <> p <> ", nhưng bản mới nhất là " <> r <> "."     Czech      -> "Balík " <> prnt <> " závisí na verzi " <> d <> " z " <> p <> ", ale nejnovější verze je " <> r <> "."     Korean     -> prnt <> " 패키지는 " <> p <> "의 버전 " <> d <> "에 의존하지만 가장 최신 버전은 " <> r <> "입니다."+    Hindi      -> "पैकेज " <> prnt <> " " <> p <> " के संस्करण " <> d <> " पर निर्भर करता है, लेकिन सबसे हालिया संस्करण " <> r <> " है।"     _          -> "The package " <> prnt <> " depends on version " <> d <> " of " <> p <> ", but the most recent version is " <> r <> "."  getRealPkgConflicts_2 :: PkgName -> Language -> Doc AnsiStyle@@ -484,7 +513,7 @@   Serbian    -> "Пакет " <> p <> " је игнорисан! Видите ваш фајл „pacman.conf“."   Norwegian  -> p <> " er en ignorert pakke! Sjekk din `pacman.conf`-fil."   Indonesia  -> p <> " merupakan paket yang diabaikan! Lihat `pacman.conf` anda."-  Chinese    -> p <> " 是一个被忽略的包!请查看你的 `pacman.conf` 文件。"+  Chinese    -> p <> " 是一个被忽略的包!请检查 `pacman.conf` 文件。"   Esperanto  -> p <> " estas malatenta pakaĵo! Vidu vian `pacman.conf` dosieron."   Dutch      -> p <> " wordt genegeerd! Bekijk uw `pacman.conf`-bestand."   Ukrainian  -> "Пакунок " <> p <> " буде проігноровано! Перевірте ваш файл `pacman.conf`."@@ -492,6 +521,7 @@   Vietnamese -> "Gói " <> p <> "đã bị bỏ qua! Hãy xem trong `pacman.conf` của bạn."   Czech      -> p <> " je ignorovaný balíček! Podívejte se na svůj soubor `pacman.conf`."   Korean     -> p <> "은(는) 무시된 패키지입니다! `pacman.conf`를 확인하시오."+  Hindi      -> p <> " एक उपेक्षित पैकेज है! अपनी `pacman.conf` फ़ाइल देखें।"   _          -> p <> " is an ignored package! See your `pacman.conf` file."  missingPkg_2 :: [DepError] -> Language -> Doc AnsiStyle@@ -513,6 +543,8 @@   Vietnamese -> "Không thể tìm thấy các gói phụ thuộc của " <> bt s <> "."   Czech      -> "Nebyla nalezena závislost " <> bt s <> " z " <> bt par <> "."   Korean     -> bt par <> "의 종속성 " <> bt s <> "을(를) 찾을 수 없습니다."+  Hindi      -> "निर्भरता " <> bt s <> " की " <> bt par <> " नहीं मिल सकी।"+  Chinese    -> "未能找到 " <> bt par <> " 的依赖 " <> bt s <> "。"   _          -> "The dependency " <> bt s <> " of " <> bt par <> " couldn't be found."  depError l (BrokenProvides (PkgName pkg) (Provides (PkgName pro)) (PkgName n)) = case l of@@ -527,6 +559,8 @@   Vietnamese -> "Gói " <> bt pkg <> " cần " <> bt n <> ", để cung cấp " <> bt pro <> "."   Czech      -> "Balík " <> bt pkg <> " potřebuje " <> bt n <> ", který poskytuje " <> bt pro <> "."   Korean     -> bt pkg <> " 패키지는 " <> bt pro <> "를 제공하는 " <> bt n <> "이(가) 필요합니다."+  Hindi      -> "पैकेज " <> bt pkg <> " को " <> bt n <> " की आवश्यकता है, जो " <> bt pro <> " प्रदान करता है।"+  Chinese    -> bt pkg <> " 需要 " <> bt n <> " 以提供 " <> bt pro <> "。"   _          -> "The package " <> bt pkg <> " needs " <> bt n <> ", which provides " <> bt pro <> "."  missingPkg_3 :: Language -> Doc AnsiStyle@@ -541,6 +575,8 @@   Vietnamese -> "Có lỗi trong quá trình xây dựng biểu đồ gói phụ thuộc. Nếu bạn thấy điều này, có gì đó không đúng."   Czech      -> "Při reorganizaci grafu závislostí došlo k chybě. Pokud vidíte toto, něco je velmi špatně."   Korean     -> "종속성 그래프를 재구성하는 동안 오류가 발생했습니다."+  Hindi      -> "निर्भरता ग्राफ़ को पुनर्व्यवस्थित करने में एक त्रुटि हुई। यदि आप इसे देखते हैं, तो कुछ बहुत गलत है।"+  Chinese    -> "重组依赖关系时出现错误。请注意,这是一个严重的错误。"   _          -> "There was an error reorganizing the dependency graph. If you see this, something is very wrong."  missingPkg_4 :: [NonEmpty PkgName] -> Language -> Doc AnsiStyle@@ -555,6 +591,8 @@   Vietnamese -> vsep $ "Phát hiện chu kỳ gói phụ thuộc: " : pns'   Czech      -> vsep $ "Byly zjištěny následující cykly závislostí:" : pns'   Korean     -> vsep $ "다음과 같은 종속성 주기가 발견되었습니다:" : pns'+  Hindi      -> vsep $ "निम्नलिखित निर्भरता चक्रों का पता लगाया गया:" : pns'+  Chinese    -> vsep $ "检测到循环依赖:" : pns'   _          -> vsep $ "The following dependency cycles were detected:" : pns'   where     pns' :: [Doc ann]@@ -572,6 +610,8 @@   Vietnamese -> bt p <> " không tồn tại."   Czech      -> bt p <> " neexistuje."   Korean     -> bt p <> "은(는) 존재하지 않습니다."+  Hindi      -> bt p <> " मौजूद नहीं है।"+  Chinese    -> bt p <> " 不存在。"   _          -> bt p <> " does not exist."  -----------------@@ -593,7 +633,7 @@     Serbian    -> "Доступни су следећи језици:"     Norwegian  -> "Følgende språk er tilgjengelig:"     Indonesia  -> "Berikut ini adalah bahasa yang tersedia:"-    Chinese    -> "以下语言是可用的:"+    Chinese    -> "可用语言如下:"     Esperanto  -> "La sekvaj lingvo estas disponebla:"     Dutch      -> "De volgende talen zijn beschikbaar:"     Ukrainian  -> "Доступні наступні мови:"@@ -601,6 +641,7 @@     Vietnamese -> "Ngôn ngữ khả dụng:"     Czech      -> "K dispozici jsou následující jazyky:"     Korean     -> "다음 언어는 이용 가능합니다:"+    Hindi      -> "निम्नलिखित भाषाएँ उपलब्ध हैं:"     _          -> "The following languages are available:"  ----------------------------@@ -621,7 +662,7 @@     Russian    -> "Доступно обновление Aura. Обновить сперва её?"     Italian    -> "È disponibile un nuovo aggiornamento per Aura. Eseguirlo subito?"     Indonesia  -> "Pemutakhiran aura tersedia. Mutakhirkan aura dulu?"-    Chinese    -> "Aura 可以升级。先升级 aura?"+    Chinese    -> "Aura 有新版本可用。要先更新吗?"     Swedish    -> "Det finns en uppdatering tillgänglig till Aura. Vill du uppdatera Aura först?"     Esperanto  -> "Ĝisdatigo de Aura estas disponebla. Ĉu ĝisdatigas ĝin?"     Dutch      -> "Er is een update van Aura beschikbaar. Wilt u Aura nu bijwerken?"@@ -630,6 +671,7 @@     Vietnamese -> "Đã có cập nhật cho Aura. Cập nhật?"     Czech      -> "K dispozici aktualizace Aury. Nejprve ji aktualizovat?"     Korean     -> "Aura의 최신버전이 있습니다. 업데이트를 하시겠습니까?"+    Hindi      -> "Aura अपडेट उपलब्ध है। पहले इसे अपडेट करें?"     _          -> "Aura update available. Update it first?"  install_2 :: Language -> Doc AnsiStyle@@ -648,7 +690,7 @@     Serbian    -> "Ниједан исправан пакет није специфициран."     Norwegian  -> "Ingen gyldige pakker er valgte."     Indonesia  -> "Tidak ada paket valid yang dispesifikkan."-    Chinese    -> "没有指定有效的包。"+    Chinese    -> "未指定有效的包。"     Esperanto  -> "Ne validajn pakaĵojn specifis"     Dutch      -> "Er zijn geen geldige pakketten opgegeven."     Ukrainian  -> "Валідні пакунки не вказані."@@ -656,6 +698,7 @@     Vietnamese -> "Tên của gói được yêu cầu không đúng."     Czech      -> "Nejsou zadány žádné platné balíčky."     Korean     -> "유효한 패키지가 지정되지 않았습니다."+    Hindi      -> "कोई वैध पैकेज निर्दिष्ट नहीं है।"     _          -> "No valid packages specified."  install_3 :: Language -> Doc AnsiStyle@@ -683,6 +726,7 @@     Vietnamese -> "Tiếp tục?"     Czech      -> "Pokračovat?"     Korean     -> "계속하시겠습니까?"+    Hindi      -> "जारी रखें?"     _          -> "Continue?"  install_4 :: Language -> Doc AnsiStyle@@ -701,7 +745,7 @@     Serbian    -> "Инсталација је ручно прекинута."     Norwegian  -> "Installasjonen ble avbrutt manuelt."     Indonesia  -> "Instalasi dibatalkan secara paksa."-    Chinese    -> "手动安装已中止。"+    Chinese    -> "安装被手动中止。"     Esperanto  -> "Instalon ĉesigi permane"     Dutch      -> "De installatie is handmatig afgebroken."     Ukrainian  -> "Встановлення скасовано користувачем."@@ -709,6 +753,7 @@     Vietnamese -> "Quá trình cài đặt được hủy."     Czech      -> "Instalace byla ručně přerušena."     Korean     -> "설치가 중지되었습니다."+    Hindi      -> "इंस्टॉलेशन मैन्युअल रूप से निरस्त किया गया।"     _          -> "Installation manually aborted."  install_5 :: Language -> Doc AnsiStyle@@ -735,6 +780,7 @@     Vietnamese -> "Xác định các gói phụ thuộc..."     Czech      -> "Určování závislostí..."     Korean     -> "종속성 확인 중..."+    Hindi      -> "निर्भरता का निर्धारण..."     _          -> "Determining dependencies..."  -- 2014 December  7 @ 14:45 - NEEDS TRANSLATIONS@@ -747,7 +793,7 @@     Portuguese -> p <> " está marcado como Ignorado. Deseja instalar mesmo assim?"     Russian    -> p <> " отмечен как игнорируемый. Всё равно установить?"     Italian    -> p <> " è marcato come pacchetto ignorato. Installarlo comunque?"-    Chinese    -> p <> " 已被标记为忽略。仍然安装?"+    Chinese    -> p <> " 已被标记为忽略。仍要安装吗?"     Swedish    -> p <> " är markerad som ignorerad. Vill du installera ändå?"     Esperanto  -> p <> " estas markita kiel malatenta. Ĉu instali?"     Dutch      -> p <> " is gemarkeerd als genegeerd. Wilt u het pakket toch installeren?"@@ -755,6 +801,7 @@     Vietnamese -> p <> " được đánh dấu là Bỏ qua. Vẫn cài đặt nó?"     Czech      -> p <> " je označeno jako ignorováno. Přesto nainstalovat?"     Korean     -> p <> "은(는) 무시됨으로 표시됩니다. 설치를 하시겠습니까?"+    Hindi      -> p <> " को उपेक्षित के रूप में चिह्नित किया गया है। फिर भी इंस्टॉल करें?"     _          -> p <> " is marked as Ignored. Install anyway?"  -- NEEDS UPDATE TO REFLECT CHANGED ENGLISH@@ -782,6 +829,7 @@     Vietnamese -> "Các gói sau không thuộc AUR:"     Czech      -> "Následující nejsou balíčky AUR:"     Korean     -> "AUR 패키지가 아닙니다:"+    Hindi      -> "निम्नलिखित AUR पैकेज नहीं हैं:"     _          -> "The following are not AUR packages:"  -- NEEDS TRANSLATION@@ -804,6 +852,7 @@     Vietnamese -> "Các gói sau đã sẵn sàng cài đặt:"     Czech      -> "Následující balíčky jsou již nainstalovány:"     Korean     -> "아래 패키지는 이미 설치되어 있습니다:"+    Hindi      -> "निम्नलिखित पैकेज पहले से ही इंस्टॉल हैं:"     _          -> "The following packages are already installed:"  reportPkgsToInstall_1 :: Language -> Doc AnsiStyle@@ -830,6 +879,7 @@     Vietnamese -> "Các repo phụ thuộc:"     Czech      -> "Závislosti úložiště:"     Korean     -> "리포지토리 종속성:"+    Hindi      -> "रिपोजिटरी निर्भरताएं:"     _          -> "Repository dependencies:"  -- NEEDS AN UPDATE@@ -857,6 +907,7 @@     Vietnamese -> "Gói AUR:"     Czech      -> "Balíčky AUR:"     Korean     -> "AUR 패키지:"+    Hindi      -> "AUR पैकाग्रेस:"     _          -> "AUR Packages:"  reportPkgsToInstall_3 :: Language -> Doc AnsiStyle@@ -881,6 +932,8 @@     Vietnamese -> "Gói phụ thuộc của AUR:"     Czech      -> "Závislosti AUR:"     Korean     -> "AUR 종속성:"+    Hindi      -> "AUR निर्भरताएं:"+    Chinese    -> "AUR 依赖:"     _          -> "AUR dependencies:"  -- NEEDS TRANSLATION@@ -899,7 +952,7 @@     Serbian    -> p <> " још нема похрањен PKGBUILD."     Norwegian  -> p <> " har ingen PKGBUILD ennå."     Indonesia  -> p <> " tidak mempunyai PKGBUILD yang tersimpan untuk saat ini."-    Chinese    -> p <> " 还没有保存的 PKGBUILD。"+    Chinese    -> p <> " 的 PKGBUILD 尚未保存。"     Swedish    -> p <> " har ännu ingen PKGBUILD."     Esperanto  -> p <> " ne havas PKGBUILD jam."     Dutch      -> p <> " heeft nog geen opgeslagen PKGBUILD."@@ -908,6 +961,7 @@     Vietnamese -> p <> " không có sẵn PKGBUILD."     Czech      -> p <> " ještě nemá uložený PKGBUILD."     Korean     -> p <> "의 PKGBUILD는 저장되지 않았습니다."+    Hindi      -> p <> " में अभी तक कोई PKGBUILD संग्रहीत नहीं है."     _          -> p <> " has no stored PKGBUILD yet."  -- NEEDS TRANSLATION@@ -935,6 +989,7 @@     Vietnamese -> "Thay đổi trong PKGBUILD của " <> p <> ":"     Czech      -> "Změny PKGBUILD v " <> p <> ":"     Korean     -> p <> "의 PKGBUILD 변경 사항:"+    Hindi      -> p <> "PKGBUILD परिवर्तन:"     _          -> p <> " PKGBUILD changes:"  -- NEEDS TRANSLATION@@ -962,6 +1017,7 @@     Vietnamese -> "Cập nhật các gói AUR:"     Czech      -> "Balíčky AUR k aktualizaci:"     Korean     -> "업그레이드할 AUR 패키지:"+    Hindi      -> "अपग्रेड करने के लिए AUR पैकेज:"     _          -> "AUR Packages to upgrade:"  -- NEEDS UPDATING@@ -981,7 +1037,7 @@     Serbian    -> "Следећи пакети нису ни инсталирани, те се не могу вратити на старију верзију:"     Norwegian  -> "Følgende pakker har ingen versjoner i cache, og kan derfor ikke bli nedgradert:"     Indonesia  -> "Berikut ini tidak mempunyai versi pada cache, sehingga tidak akan diturunkan:"-    Chinese    -> "以下包在缓存中没有版本,所以无法被降级:"+    Chinese    -> "以下包在缓存中没有版本,无法降级:"     Esperanto  -> "La sekvaj pakaĵoj havas ne kaŝmemorigitajn versiojn, do ĝi ne povas malpromociigi:"     Dutch      -> "De volgende pakketten zijn niet gecachet en kunnen daarom niet worden afgewaardeerd."     Ukrainian  -> "Наступних пакунків немає в кеші. Отже, вони не можуть відкотитися до старої версії:"@@ -989,6 +1045,7 @@     Vietnamese -> "Những gói sau không có bản nào trong cache, vì vậy không thể hạ cấp:"     Czech      -> "Následující nemají žádné verze v mezipaměti, a proto je nelze downgradovat:"     Korean     -> "이 패키지는 캐시에 저장된 다른 버전이 없으므로 다운그레이드를 할 수 없습니다."+    Hindi      -> "निम्नलिखित का कैश में कोई संस्करण नहीं है, और इसलिए इसे डाउनग्रेड नहीं किया जा सकता:"     _          -> "The following have no versions in the cache, and thus can’t be downgraded:"  reportBadDowngradePkgs_2 :: PkgName -> Language -> Doc AnsiStyle@@ -1002,6 +1059,8 @@   Vietnamese -> pretty p <+> "không có bản nào trong cache."   Czech      -> pretty p <+> "nemá žádnou verzi v mezipaměti."   Korean     -> pretty p <+> "의 캐시에는 저장된 다른 버전이 없습니다."+  Hindi      -> pretty p <+> "का कैश में कोई संस्करण नहीं है."+  Chinese    -> pretty p <+> "在缓存中没有版本。"   _          -> pretty p <+> "has no version in the cache."  upgradeAURPkgs_1 :: Language -> Doc AnsiStyle@@ -1028,6 +1087,7 @@     Vietnamese -> "Cập nhật thông tin của gói..."     Czech      -> "Načítání informací o balíčku..."     Korean     -> "패키지 정보 가져오는 중..."+    Hindi      -> "पैकेज की जानकारी प्राप्त की जा रही है..."     _          -> "Fetching package information..."  upgradeAURPkgs_2 :: Language -> Doc AnsiStyle@@ -1054,6 +1114,7 @@     Vietnamese -> "So sánh phiên bản của gói..."     Czech      -> "Porovnání verzí balíčků..."     Korean     -> "패키지 버전 비교 중..."+    Hindi      -> "पैकेज संस्करणों की तुलना करना..."     _          -> "Comparing package versions..."  upgradeAURPkgs_3 :: Language -> Doc AnsiStyle@@ -1080,6 +1141,7 @@     Vietnamese -> "Không có cập nhật cho các gói AUR."     Czech      -> "Není nutné žádné aktualizace balíčku AUR."     Korean     -> "업그레이드가 필요하지 않습니다."+    Hindi      -> "कोई AUR पैकेज अपग्रेड आवश्यक नहीं है।"     _          -> "No AUR package upgrades necessary."  removeMakeDepsAfter_1 :: Language -> Doc AnsiStyle@@ -1106,6 +1168,7 @@     Vietnamese -> "Loại bỏ các gói phụ thuộc khi make không cần thiết..."     Czech      -> "Odstranění nepotřebných make závislostí..."     Korean     -> "필요없는 make 의존성 제거 중..."+    Hindi      -> "अनावश्यक निर्भरताएँ हटाया जा रहा है..."     _          -> "Removing unneeded make dependencies..."  ----------------------------@@ -1127,7 +1190,7 @@     French     -> s <> " états des paquets vont être conservés. Supprimer le reste ?"     Russian    -> s <> pluralRussian " состояние пакетов будет оставлено." " состояния пакетов будут оставлены." " состояний пакетов будет оставлено." n <> " Удалить оставшиеся?"     Indonesia  -> s <> " paket akan tetap sama. Hapus yang lainnya?"-    Chinese    -> s <> " 个包的状态将会保留。删除其它的?"+    Chinese    -> "保留" <> s <> " 个包的状态记录,并删除其它的?"     Swedish    -> s <> " paket kommer att bevaras. Ta bort resten?"     Esperanto  -> s <> " statoj de pakaĵoj teniĝas. Ĉu forigi la ceteron?"     Dutch      -> s <> " pakketstatussen worden behouden. Wilt u de rest verwijderen?"@@ -1136,6 +1199,7 @@     Vietnamese -> "Trạng thái của gói " <> s <> " sẽ được lưu lại. Loại bỏ phần còn lại?"     Czech      -> s <> " stavy balíčků budou zachovány. Odstranit zbytek?"     Korean     -> s <> " 패키지는 유지됩니다. 나머지를 제거하시겠습니까?"+    Hindi      -> s <> " पैकेज स्थितियों को रखा जाएगा। बाकी हटा दें?"     _          -> s <> " package states will be kept. Remove the rest?"  -- NEEDS TRANSLATION@@ -1154,7 +1218,7 @@     French     -> "Aucun état des paquets n'a été supprimé."     Russian    -> "Состояния пакетов отались нетронутыми."     Indonesia  -> "Tidak ada paket yang dihapus."-    Chinese    -> "没有删除任何包。"+    Chinese    -> "未删除任何包的状态记录。"     Swedish    -> "Inga paket togs bort."     Esperanto  -> "Ne statojn de pakaĵoj forigis."     Dutch      -> "Er zijn geen pakketstatussen verwijderd."@@ -1163,24 +1227,27 @@     Vietnamese -> "Không có trạng thái gói nào được lưu."     Czech      -> "Nebyly odstraněny žádné stavy balíčku."     Korean     -> "아무 패키지도 삭제되지 않았습니다."+    Hindi      -> "कोई पैकेज स्थिति हटाई नहीं गई थी।"     _          -> "No package states were removed."  cleanStates_4 :: Int -> Language -> Doc AnsiStyle cleanStates_4 n = \case-  Japanese  -> "現在のパッケージ状態記録:" <+> pretty n <+> "個。"-  Arabic    -> ".محفوظة " <+> pretty n <+> " لديك حاليا حالات حزمة"-  Polish    -> "Chwilowo posiadasz" <+> pretty n <+> "zapisanych stanów pakietów."-  Spanish   -> "Actualmente tiene " <+> pretty n <+> "estados de paquetes guardados."-  Russian   -> "У вас сейчас " <+> pretty n <+> pluralRussian " сохраненное состояние пакета" " сохраненных состояний пакета" " сохраненных состояний пакетов." n-  Italian   -> "Al momento ci sono" <+> pretty n <+> "stati di pacchetti salvati."-  Esperanto -> "Vi havas " <+> pretty n <+> " konservajn statojn de pakaĵoj."-  Dutch     -> "U heeft momenteel" <+> pretty n <+> "opgeslagen pakketstatussen."-  Ukrainian -> "Зараз ви маєте " <+> pretty n <+> " збережених станів пакунків."-  Romanian  -> "Momentan aveți " <+> pretty n <+> " stări de pachet salvate."+  Japanese   -> "現在のパッケージ状態記録:" <+> pretty n <+> "個。"+  Arabic     -> ".محفوظة " <+> pretty n <+> " لديك حاليا حالات حزمة"+  Polish     -> "Chwilowo posiadasz" <+> pretty n <+> "zapisanych stanów pakietów."+  Spanish    -> "Actualmente tiene " <+> pretty n <+> "estados de paquetes guardados."+  Russian    -> "У вас сейчас " <+> pretty n <+> pluralRussian " сохраненное состояние пакета" " сохраненных состояний пакета" " сохраненных состояний пакетов." n+  Italian    -> "Al momento ci sono" <+> pretty n <+> "stati di pacchetti salvati."+  Esperanto  -> "Vi havas " <+> pretty n <+> " konservajn statojn de pakaĵoj."+  Dutch      -> "U heeft momenteel" <+> pretty n <+> "opgeslagen pakketstatussen."+  Ukrainian  -> "Зараз ви маєте " <+> pretty n <+> " збережених станів пакунків."+  Romanian   -> "Momentan aveți " <+> pretty n <+> " stări de pachet salvate."   Vietnamese -> "Bạn hiện đã lưu " <+> pretty n <+> " trạng thái gói."-  Czech     -> "V současné době máte " <+> pretty n <+> " uložených stavů balíčků."-  Korean    -> "현재" <+> pretty n <+> "개의 패키지 상태가 저장되어 있습니다."-  _         -> "You currently have " <+> pretty n <+> " saved package states."+  Czech      -> "V současné době máte " <+> pretty n <+> " uložených stavů balíčků."+  Korean     -> "현재" <+> pretty n <+> "개의 패키지 상태가 저장되어 있습니다."+  Hindi      -> "वर्तमान में आपके पास " <+> pretty n <+> " सहेजी गई पैकेज स्थितियाँ हैं।"+  Chinese    -> "目前已保存 " <+> pretty n <+> " 个包的状态记录。"+  _          -> "You currently have " <+> pretty n <+> " saved package states."  cleanStates_5 :: Text -> Language -> Doc AnsiStyle cleanStates_5 t = \case@@ -1197,21 +1264,25 @@   Vietnamese -> "Lần lưu gần nhất:" <+> pretty t   Czech      -> "Naposledy uložené:" <+> pretty t   Korean     -> "최근에 저장된 패키지:" <+> pretty t+  Hindi      -> "हाल ही में सहेजा गया:" <+> pretty t+  Chinese    -> "最近一次保存:" <+> pretty t   _          -> "Most recently saved:" <+> pretty t  cleanStates_6 :: Int -> Language -> Doc AnsiStyle cleanStates_6 n = \case-  Polish    -> pretty n <+> "jest przypiętych i nie zostanie usuniętych."-  Arabic    -> ".اذا كانو مثبتين ولا يمكن ازالتهم " <+> pretty n-  Spanish   -> pretty n <+> "de estos están anclados y no se eliminarán."-  Italian   -> pretty n <+> "di questi sono stati fissati, perciò non saranno rimossi."-  Dutch     -> pretty n <+> "hiervan zijn vastgezet en worden daarom niet verwijderd."-  Ukrainian -> pretty n <+> "були закріплені та залишуться недоторканими."-  Romanian  -> pretty n <+> "dintre astea sunt fixate, și nu vor fi șterse."+  Polish     -> pretty n <+> "jest przypiętych i nie zostanie usuniętych."+  Arabic     -> ".اذا كانو مثبتين ولا يمكن ازالتهم " <+> pretty n+  Spanish    -> pretty n <+> "de estos están anclados y no se eliminarán."+  Italian    -> pretty n <+> "di questi sono stati fissati, perciò non saranno rimossi."+  Dutch      -> pretty n <+> "hiervan zijn vastgezet en worden daarom niet verwijderd."+  Ukrainian  -> pretty n <+> "були закріплені та залишуться недоторканими."+  Romanian   -> pretty n <+> "dintre astea sunt fixate, și nu vor fi șterse."   Vietnamese -> pretty n <+> "trong số chúng đã được ghim, và sẽ không bị loại bỏ."-  Czech     -> pretty n <+> "z nich jsou připnuté a nebudou odstraněny."-  Korean    -> pretty n <+> "은(는) 고정되어 삭제되지 않습니다."-  _         -> pretty n <+> "of these are pinned, and won't be removed."+  Czech      -> pretty n <+> "z nich jsou připnuté a nebudou odstraněny."+  Korean     -> pretty n <+> "은(는) 고정되어 삭제되지 않습니다."+  Hindi      -> "इनमें से" <+> pretty n <+> "को पिन कर दिया गया है, और हटाया नहीं जाएगा।"+  Chinese    -> "其中 " <+> pretty n <+> " 个已被固定,不会被删除。"+  _          -> pretty n <+> "of these are pinned, and won't be removed."  readState_1 :: Language -> Doc AnsiStyle readState_1 = \case@@ -1228,6 +1299,8 @@     Vietnamese -> "Thất bại trong việc lấy dữ liệu từ tệp. Đó có đúng là tệp JSON?"     Czech      -> "Tento stavový soubor se nepodařilo analyzovat. Je to legální JSON?"     Korean     -> "상태 파일을 분석할 수 없습니다. 올바른 JSON 입니까?"+    Hindi      -> "वह स्थिति फ़ाइल पार्स करने में विफल रही. क्या यह वैध JSON है?"+    Chinese    -> "无法解析状态文件。这是否是一个合法的 JSON 文件?"     _          -> "That state file failed to parse. Is it legal JSON?"  ----------------------------@@ -1249,7 +1322,7 @@     Serbian    -> "Коју верзију " <> p <> "-а желите?"     Norwegian  -> "Hvilken versjon av " <> p <> " vil du ha?"     Indonesia  -> "Versi dari paket " <> p <> " mana yang anda inginkan?"-    Chinese    -> "你希望安装 " <> p <> " 的哪个版本?"+    Chinese    -> "要安装哪个版本的" <> p <> "?"     Esperanto  -> "Kiu versio de " <> p <> " vi volas?"     Dutch      -> "Welke versie van " <> p <> " wilt u?"     Ukrainian  -> "Яку версію пакунку " <> p <> " ви бажаєте?"@@ -1257,6 +1330,7 @@     Vietnamese -> "Bạn muốn sử dụng phiên bản nào của " <> p <> "?"     Czech      -> "Jakou verzi " <> p <> " chcete?"     Korean     -> "어느 " <> p <> " 버전을 설치하시겠습니까?"+    Hindi      -> "आपको " <> p <> " का कौन सा संस्करण चाहिए?"     _          -> "What version of " <> p <> " do you want?"  backupCache_3 :: Language -> Doc AnsiStyle@@ -1283,6 +1357,7 @@     Vietnamese -> "Đường dẫn sao lưu không tồn tại."     Czech      -> "Umístění zálohy neexistuje."     Korean     -> "백업 위치를 찾을 수 없습니다."+    Hindi      -> "बैकअप स्थान मौजूद नहीं है।"     _          -> "The backup location does not exist."  backupCache_4 :: FilePath -> Language -> Doc AnsiStyle@@ -1309,6 +1384,7 @@     Vietnamese -> "Sao lưu cache vào " <> dir     Czech      -> "Zálohování mezipaměti do " <> dir     Korean     -> "캐시를 백업하는 중 " <> dir+    Hindi      -> "कैश का बैकअप " <> dir <> " में लिया जा रहा है।"     _          -> "Backing up cache to " <> dir  backupCache_5 :: Int -> Language -> Doc AnsiStyle@@ -1335,6 +1411,7 @@     Vietnamese -> "Các tệp của gói sẽ được sao lưu: " <> n     Czech      -> "Soubory k zálohování: " <> n     Korean     -> "백업할 패키지 파일: " <> n+    Hindi      -> "बैकअप के लिए फ़ाइलों को पैकेज करें:" <> n     _          -> "Package files to backup: " <> n  backupCache_6 :: Language -> Doc AnsiStyle@@ -1361,6 +1438,7 @@     Vietnamese -> "Tiến hành sao lưu?"     Czech      -> "Pokračovat v zálohování."     Korean     -> "백업 하시겠습니까?"+    Hindi      -> "क्या आप बैकअप जारी रखना चाहते हैं?"     _          -> "Proceed with backup?"  backupCache_7 :: Language -> Doc AnsiStyle@@ -1379,7 +1457,7 @@     Serbian    -> "Бекаповање је ручно прекинуто."     Norwegian  -> "Backup ble avbrutt manuelt."     Indonesia  -> "Proses `backup` dibatalkan secara paksa."-    Chinese    -> "手动备份已中止。"+    Chinese    -> "备份被手动中止。"     Esperanto  -> "Enarkivigadon ĉesigis permane."     Dutch      -> "Het back-upproces is handmatig afgebroken."     Ukrainian  -> "Створення резервної копії перервано користувачем."@@ -1387,6 +1465,7 @@     Vietnamese -> "Quá trình sao lưu được hủy."     Czech      -> "Zálohování ručně přerušeno."     Korean     -> "백업이 중지되었습니다."+    Hindi      -> "बैकअप मैन्युअल रूप से निरस्त किया गया।"     _          -> "Backup manually aborted."  backupCache_8 :: Language -> Doc AnsiStyle@@ -1413,6 +1492,7 @@     Vietnamese -> "Đang sao lưu. Có thể sẽ mất vài phút..."     Czech      -> "Zálohování. Může to trvat několik minut..."     Korean     -> "백업 중입니다. 몇 분 정도 걸릴 수 있습니다..."+    Hindi      -> "बैकअप लिया जा रहा है। इसमें कुछ मिनट लग सकते हैं..."     _          -> "Backing up. This may take a few minutes..."  copyAndNotify_1 :: Int -> Language -> Doc AnsiStyle@@ -1440,6 +1520,7 @@     Vietnamese -> "Sao chép #[" <> n <> "]"     Czech      -> "Kopírování #[" <> n <> "]"     Korean     -> "복사중 #[" <> n <> "]"+    Hindi      -> "कॉपी किया जा रहा है #[" <> n <> "]"     _          -> "Copying #[" <> n <> "]"  cleanCache_2 :: Language -> Doc AnsiStyle@@ -1458,7 +1539,7 @@     Serbian    -> "Ово ће избрисати ЦЕО кеш пакета."     Norwegian  -> "Dette vil slette HELE pakke-cachen."     Indonesia  -> "Akan menghapus SEMUA `cache` paket"-    Chinese    -> "这将会删除全部的包缓存。"+    Chinese    -> "这将会删除所有包缓存。"     Esperanto  -> "Ĉi tiu forigos la TUTAN kaŝmemoron de pakaĵoj."     Dutch      -> "Hiermee wordt de GEHELE pakketcache gewist."     Ukrainian  -> "Ця операція ПОВНІСТЮ видалить кеш пакунків."@@ -1466,6 +1547,7 @@     Vietnamese -> "Điều này sẽ xóa TOÀN BỘ cache của gói."     Czech      -> "Tím smažete CELOU mezipaměť balíčku."     Korean     -> "모든 패키지 캐시가 삭제됩니다."+    Hindi      -> "यह संपूर्ण पैकेज कैश हटा देगा।"     _          -> "This will delete the ENTIRE package cache."  cleanCache_3 :: Word -> Language -> Doc AnsiStyle@@ -1492,6 +1574,7 @@     Vietnamese -> "Sẽ giữ lại " <> s <> " tệp của gói."     Czech      -> s <> " každého souboru balíčku bude zachován."     Korean     -> "각 패키지 파일에 대해 " <> s <> "개의 파일이 유지되어야 합니다."+    Hindi      -> s <> "प्रत्येक पैकेज फ़ाइल को रखा जाएगा।"     _          -> s <> " of each package file will be kept."  cleanCache_4 :: Language -> Doc AnsiStyle@@ -1510,7 +1593,7 @@     Serbian    -> "Остатак ће бити избрисан. Да ли је то у реду?"     Norwegian  -> "Resten vil bli slettet. Er det OK?"     Indonesia  -> "Selainnya akan dihapus. Ikhlas kan?"-    Chinese    -> "其余的将会被删除。确定?"+    Chinese    -> "其余的将被删除。确定吗?"     Esperanto  -> "La cetero foriĝos. Ĉu bone?"     Dutch      -> "De rest wordt gewist. Weet u het zeker?"     Ukrainian  -> "Все інше буде видалено. Гаразд?"@@ -1518,6 +1601,7 @@     Vietnamese -> "Xóa bỏ phần còn lại. Ok?"     Czech      -> "Zbytek bude smazán. Ok?"     Korean     -> "나머지는 모두 삭제됩니다. 계속하시겠습니까?"+    Hindi      -> "बाकी हटा दिया जाएगा। ठीक है?"     _          -> "The rest will be deleted. Okay?"  cleanCache_5 :: Language -> Doc AnsiStyle@@ -1536,7 +1620,7 @@     Serbian    -> "Чишћење кеша је ручно прекинуто."     Norwegian  -> "Cache-rensing ble avbrutt manuelt."     Indonesia  -> "Pembersihan `cache` dibatalkan secara paksa."-    Chinese    -> "手动清理缓存已中止。"+    Chinese    -> "缓存清理被手动中止。"     Esperanto  -> "Puriganta Kaŝmemoro ĉesis permane."     Dutch      -> "De cache-opruiming is handmatig afgebroken."     Ukrainian  -> "Очищення кешу було перервано користувачем."@@ -1544,6 +1628,7 @@     Vietnamese -> "Đã hủy xóa cache."     Czech      -> "Čištění mezipaměti bylo ručně přerušeno"     Korean     -> "캐시 정리가 중지되었습니다."+    Hindi      -> "कैश की सफ़ाई मैन्युअल रूप से निरस्त कर दी गई।"     _          -> "Cache cleaning manually aborted."  cleanCache_6 :: Language -> Doc AnsiStyle@@ -1570,6 +1655,7 @@     Vietnamese -> "Xóa cache..."     Czech      -> "Čištění mezipaměti balíčků"     Korean     -> "패키지 캐시 정리 중..."+    Hindi      -> "पैकेज कैश साफ़ किया जा रहा है..."     _          -> "Cleaning package cache..."  cleanCache_7 :: Word -> Word -> Language -> Doc AnsiStyle@@ -1581,7 +1667,9 @@     Romanian   -> "Cache-ul conține " <> ps <> " pachete, consumând " <> bytes <> " MB."     Vietnamese -> "Có " <> ps <> " gói trong cache, chiếm " <> bytes <> " megabytes."     Korean     -> ps <> "개의 패키지는 " <> bytes <> "MB 사용 중입니다."+    Hindi      -> "कैश में " <> ps <> " पैकेज हैं, जो " <> bytes <> " मेगाबाइट का उपभोग करते हैं।"     Dutch      -> "De cache bevat " <> ps <> " pakketten, met een totale omvang van " <> bytes <> " megabytes."+    Chinese    -> "缓存中有 " <> ps <> " 个包,共计 " <> bytes <> " MB。"     _          -> "The cache contains " <> ps <> " packages, consuming " <> bytes <> " megabytes."  cleanCache_8 :: Word -> Language -> Doc AnsiStyle@@ -1594,7 +1682,9 @@     Vietnamese -> "Giải phóng " <> bytes <> "megabytes."     Czech      -> "Uvolněno " <> bytes <> " MB."     Korean     -> bytes <> " MB 정리되었습니다."+    Hindi      -> bytes <> "मेगाबाइट मुक्त हो गए।"     Dutch      -> bytes <> "megabytes vrijgemaakt."+    Chinese    -> "已释放 " <> bytes <> " MB。"     _          -> bytes <> " megabytes freed."  cleanCache_9 :: Word -> Language -> Doc AnsiStyle@@ -1603,7 +1693,9 @@     Vietnamese -> "Sẽ giữ lại " <> w <> " phiên bản của các gói đã cài đặt."     Czech      -> w <> " verze každého nainstalovaného balíčku budou zachovány."     Korean     -> "각각의 설치된 패키지의 " <> w <> "은(는) 유지됩니다."+    Hindi      -> w <> "प्रत्येक स्थापित पैकेज के संस्करण रखे जाएंगे।"     Dutch      -> "Er worden " <> w <> "versies van elke geïnstalleerd pakket bewaard."+    Chinese    -> "每个包将会保存 " <> w <> " 个版本。"     _          -> w <> " versions of each installed package will be kept."  -- NEEDS TRANSLATION@@ -1630,6 +1722,7 @@     Vietnamese -> "Xác định các tệp của gói không cần thiết..."     Czech      -> "Zjišťování nepotřebných souborů balíčků..."     Korean     -> "필요 없는 패키지 파일 확인 중..."+    Hindi      -> "अनावश्यक पैकेज फ़ाइलों का निर्धारण..."     _          -> "Determining unneeded package files..."  -- NEEDS TRANSLATION@@ -1656,6 +1749,7 @@     Vietnamese -> "Tìm thấy " <> s <> " gói không cần thiết. Xóa bỏ?"     Czech      -> "Nepotřebné soubory balíčků: " <> s <> ". Vymazat?"     Korean     -> s <> "는 필요 없는 패키지 파일입니다. 삭제하시겠습니까?"+    Hindi      -> s <> "अनावश्यक पैकेज फ़ाइलें मिलीं। हटाएं?"     _          -> s <> " unneeded package files found. Delete?"  ----------------------------@@ -1691,6 +1785,7 @@     Vietnamese -> "Nội dung sau không có trong tệp log:"     Czech      -> "Tyto se neobjevily v souboru log:"     Korean     -> "로그 파일에 나타나지 않음:"+    Hindi      -> "ये लॉग फ़ाइल में दिखाई नहीं दिए हैं:"     _          -> "These have not appeared in the log file:"  -------------------------------@@ -1703,30 +1798,36 @@   Vietnamese -> "Không tím thấy gói."   Czech      -> "Nebyly nalezeny žádné balíčky."   Korean     -> "패키지를 찾을 수 없습니다."+  Hindi      -> "कोई पैकेज नहीं मिला।"+  Chinese    -> "未找到软件包。"   _          -> "No packages found."  -- https://github.com/fosskers/aura/issues/498 connectFailure_1 :: Language -> Doc AnsiStyle connectFailure_1 = \case-  Polish    -> "Nie udało się nawiązać połączenia z AUR. Czy jesteś połączony z internetem?"-  Arabic    -> "هل انت متصل بالانترنت؟ .AURفشل الاتصال بـ"-  Spanish   -> "No se pudo contactar con el AUR. ¿Tienes conexión a internet?"-  Italian   -> "Non è stato possibile contattare l'AUR. Il computer è connesso ad internet?"-  Dutch     -> "Er kan geen verbinding worden gemaakt met de AUR. Bent u verbonden met het internet?"-  Ukrainian -> "Не вдалося зв'язатись з AUR. У вас є підключення до інтернету?"-  Romanian  -> "Nu s-a putut contacta AUR. Sunteți conectat pe Internet?"+  Polish     -> "Nie udało się nawiązać połączenia z AUR. Czy jesteś połączony z internetem?"+  Arabic     -> "هل انت متصل بالانترنت؟ .AURفشل الاتصال بـ"+  Spanish    -> "No se pudo contactar con el AUR. ¿Tienes conexión a internet?"+  Italian    -> "Non è stato possibile contattare l'AUR. Il computer è connesso ad internet?"+  Dutch      -> "Er kan geen verbinding worden gemaakt met de AUR. Bent u verbonden met het internet?"+  Ukrainian  -> "Не вдалося зв'язатись з AUR. У вас є підключення до інтернету?"+  Romanian   -> "Nu s-a putut contacta AUR. Sunteți conectat pe Internet?"   Vietnamese -> "Mất kết nối tới AUR. Bạn có kết nối mạng không?"-  Czech     -> "Nepodařilo se kontaktovat AUR server. Máte připojení k internetu?"-  Korean    -> "AUR에 접근하지 못했습니다. 인터넷 연결 상태를 확인하십시오."-  _         -> "Failed to contact the AUR. Do you have an internet connection?"+  Czech      -> "Nepodařilo se kontaktovat AUR server. Máte připojení k internetu?"+  Korean     -> "AUR에 접근하지 못했습니다. 인터넷 연결 상태를 확인하십시오."+  Hindi      -> "AUR से संपर्क करने में असफल। क्या आपके पास इंटरनेट कनेक्शन है?"+  Chinese    -> "无法与 AUR 通信。请检查网络。"+  _          -> "Failed to contact the AUR. Do you have an internet connection?"  dependencyLookup_1 :: Text -> Language -> Doc AnsiStyle dependencyLookup_1 t = \case-  Romanian  -> vsep ["A fost o problemă cu analiza recursivă de dependențe:", pretty t]+  Romanian   -> vsep ["A fost o problemă cu analiza recursivă de dependențe:", pretty t]   Vietnamese -> vsep ["Có lỗi trong quá trình tìm kiếm gói phụ thuộc đệ quy:", pretty t]-  Czech     -> vsep ["Při rekurzivním vyhledávání závislostí došlo k problému:", pretty t]-  Korean    -> vsep ["재귀 종속성 조회 중 문제가 발생했습니다:", pretty t]-  _         -> vsep ["There was an issue during recursive dependency lookup:", pretty t]+  Czech      -> vsep ["Při rekurzivním vyhledávání závislostí došlo k problému:", pretty t]+  Korean     -> vsep ["재귀 종속성 조회 중 문제가 발생했습니다:", pretty t]+  Hindi      -> vsep ["पुनरावर्ती निर्भरता लुकअप के दौरान एक समस्या थी:", pretty t]+  Chinese    -> vsep ["在递归依赖查找中遇到了问题:", pretty t]+  _          -> vsep ["There was an issue during recursive dependency lookup:", pretty t]  miscAURFailure_1 :: Language -> Doc AnsiStyle miscAURFailure_1 = \case@@ -1740,6 +1841,8 @@   Vietnamese -> "Bất ngờ không thể kết nối tới AUR."   Czech      -> "Kontaktování AUR se nezdařilo neznámým způsobem."   Korean     -> "알 수 없는 문제로 AUR에 접근하지 못했습니다."+  Hindi      -> "AUR से संपर्क किसी अज्ञात तरीके से विफल रहा।"+  Chinese    -> "与 AUR 通信时遇到了未知的错误。"   _          -> "Contacting the AUR failed in some unknown way."  miscAURFailure_3 :: Language -> Doc AnsiStyle@@ -1752,7 +1855,9 @@   Vietnamese -> "Không thể giải mã tệp JSON lấy từ máy chủ AUR."   Czech      -> "JSON vrácený ze serveru AUR nelze dekódovat."   Korean     -> "AUR 서버에서 받은 JSON을 디코딩할 수 없습니다."+  Hindi      -> "AUR सर्वर से लौटाया गया JSON डिकोड नहीं किया जा सका।"   Dutch      -> "De AUR-server stuurde JSON terug die niet kan worden ontsleuteld."+  Chinese    -> "无法解码 AUR 服务器返回的 JSON。网络连接是否被污染?"   _          -> "The JSON returned from the AUR server could not be decoded."  infoFields :: Language -> [Text]@@ -1795,6 +1900,7 @@     Vietnamese -> "Đã cũ!"     Czech      -> "Zastaralý!"     Korean     -> "최신 버전이 아님!"+    Hindi      -> "पुराना हो चुका है!"     _          -> "Out of Date!"  outOfDateMsg Nothing = green . \case@@ -1820,6 +1926,7 @@     Vietnamese -> "Mới nhất"     Czech      -> "Aktuální"     Korean     -> "최신 버전"+    Hindi      -> "अप टू डेट"     _          -> "Up to Date"  -- NEEDS TRANSLATION@@ -1838,7 +1945,7 @@     Russian    -> "Осиротевший!"     Italian    -> "Orfano!"     Indonesia  -> "Tak dipelihara!"-    Chinese    -> "孤包!"+    Chinese    -> "孤立包!"     Swedish    -> "Föräldralös!"     Esperanto  -> "Orfita!"     Dutch      -> "Onteigend!"@@ -1847,6 +1954,7 @@     Vietnamese -> "Gói lẻ!"     Czech      -> "Opuštěno!"     Korean     -> "관리되지 않는 패키지입니다!"+    Hindi      -> "अनाथ!"     _          -> "Orphaned!"  -----------------------@@ -1877,6 +1985,7 @@     Vietnamese -> "Đã lưu trạng thái gói."     Czech      -> "Stav balíčku byl uložen."     Korean     -> "패키지 상태가 저장되었습니다."+    Hindi      -> "सहेजे गए पैकेज की स्थिति."     _          -> "Saved package state."  -- NEEDS TRANSLATION@@ -1895,7 +2004,7 @@     French     -> "Version antérieure requise non disponible pour :"     Russian    -> "Запрошенные версии для отката не доступны для:"     Indonesia  -> "Versi yang diturunkan tidak tersedia untuk: "-    Chinese    -> "请求的降级版本对以下包不可用:"+    Chinese    -> "不存在给定降级版本的包:"     Swedish    -> "Den begärda nedgraderingen finns inte tillgänglig för:"     Esperanto  -> "Petitajn malpromociajn versiojn ne estas disponebla de:"     Dutch      -> "De verzochte afwaardeerversies zijn niet beschikbaar voor:"@@ -1904,6 +2013,7 @@     Vietnamese -> "Không thể hạ cấp cho:"     Czech      -> "Požadované nižší verze nejsou k dispozici pro:"     Korean     -> "요청한 다운그레이드 버전은 다음 패키지에 사용할 수 없습니다:"+    Hindi      -> "अनुरोधित डाउनग्रेड संस्करण इसके लिए उपलब्ध नहीं है:"     _          -> "Requested downgrade versions not available for:"  restoreState_2 :: Language -> Doc AnsiStyle@@ -1915,7 +2025,7 @@     Portuguese -> "Nenhum estado disponível para ser recuperado. (Utilize -B para salvar o estado atual)"     Russian    -> "Нет сохраненных состояний для восстановления. (Используйте -B для сохранения текущего состояния)"     Italian    -> "Nessuno stato precedente a cui tornare. (Usa -B per salvare lo stato attuale)"-    Chinese    -> "没有要恢复的已保存状态。(使用 -B 保存当前状态)"+    Chinese    -> "包状态未有保存。(使用 -B 保存当前状态)"     Swedish    -> "Inga sparade tillstånd att återhämta. (Använd -B för att spara det nuvarande tillståndet)"     Esperanto  -> "Ne konservitaj statoj restaŭros. (Uzu -B konservi la aktualan staton)"     Dutch      -> "Er zijn geen bewaarde statussen om te herstellen. (ken -B toe om de huidige status te bewaren)"@@ -1924,6 +2034,7 @@     Vietnamese -> "Không có trạng thái nào có thể lưu. (Dùng -B để lưu trạng thái hiện tại)"     Czech      -> "Žádné uložené stavy k obnovení. (Pro uložení aktuálního stavu použijte -B)"     Korean     -> "복원할 패키지 상태가 없습니다. (-B를 사용해 현재 상태를 저장)"+    Hindi      -> "कोई भी सहेजी गई स्थिति पुनर्स्थापित नहीं की जाएगी। (वर्तमान स्थिति को सहेजने के लिए -B का उपयोग करें)"     _          -> "No saved states to be restored. (Use -B to save the current state)"  -- NEEDS TRANSLATION@@ -1942,7 +2053,7 @@     French     -> "Aucun paquet n'a besoin de changement."     Russian    -> "Пакеты не нуждаются в изменениях."     Indonesia  -> "Tidak ada paket yang diubah."-    Chinese    -> "没有包需要改变。"+    Chinese    -> "没有需要变更的包。"     Swedish    -> "Inga paket behöver ändras."     Esperanto  -> "Ne pakaĵoj devas ŝanĝiĝi."     Dutch      -> "Er zijn geen pakketten die aangepast moeten worden."@@ -1951,6 +2062,7 @@     Vietnamese -> "Không có gói nào cần thay đổi."     Czech      -> "Žádné balíčky není třeba měnit."     Korean     -> "패키지를 변경할 필요가 없습니다."+    Hindi      -> "किसी पैकेज को बदलने की आवश्यकता नहीं है।"     _          -> "No packages need changing."  --------------------------------------@@ -1971,6 +2083,8 @@     Vietnamese -> "Không thể xác định tài khoản người dùng nào để build."     Czech      -> "Nelze určit, se kterým uživatelským účtem se má provezt build."     Korean     -> "사용자가 컴파일할 것인지 확일할 수 없습니다."+    Hindi      -> "यह निर्धारित नहीं कर सकता कि किस उपयोगकर्ता खाते से निर्माण किया जाए।"+    Chinese    -> "无法确定用于构建的用户。"     _          -> "Can't determine which user account to build with."  ------------------------@@ -1991,6 +2105,8 @@     Vietnamese -> "Không thể lấy dữ liệu từ tệp pacman.conf của bạn."     Czech      -> "Nelze analyzovat soubor pacman.conf."     Korean     -> "pacman.conf 파일 분석에 실패했습니다."+    Hindi      -> "आपकी pacman.conf फ़ाइल को पार्स करने में असमर्थ।"+    Chinese    -> "pacman.conf 文件无法解析。"     _          -> "Unable to parse your pacman.conf file."  provides_1 :: PkgName -> Language -> Doc AnsiStyle@@ -2005,6 +2121,8 @@     Vietnamese -> pro <+> "là gói phụ thuộc, được cung cấp từ nhiều gói khác. Hãy chọn một:"     Czech      -> pro <+> "je vyžadována jako závislost, kterou poskytuje několik balíčků. Prosím vyberte jeden:"     Korean     -> pro <+> "는 종속성으로 필요하며 여러 패키지에서 제공됩니다. 다음 중 하나를 선택하십시오:"+    Hindi      -> pro <+> "एक निर्भरता के रूप में आवश्यक है, जो कई पैकेजों द्वारा प्रदान की जाती है। कृपया एक का चयन करें:"+    Chinese    -> "依赖项" <+> pro <+> "可由多个包提供。请选择:"     _          -> pro <+> "is required as a dependency, which is provided by multiple packages. Please select one:"  ----------------------------------@@ -2026,7 +2144,7 @@     Serbian    -> "Желите ли да измените PKGBUILD за " <> p <> "?"     Norwegian  -> "Vil du endre PKGBUILD for " <> p <> "?"     Indonesia  -> "Apakah anda ingin menyunting PKGBUILD untuk paket " <> p <> "?"-    Chinese    -> "你希望编辑 " <> p <> " 的 PKGBUILD 文件吗?"+    Chinese    -> "要编辑 " <> p <> " 的 PKGBUILD 文件吗?"     Esperanto  -> "Ĉu vi volas redakti la PKGBUILD de " <> p <> "?"     Dutch      -> "Wilt u het PKGBUILD-bestand van " <> p <> " bewerken?"     Ukrainian  -> "Бажаєте відредагувати PKGBUILD для пакунку " <> p <> "?"@@ -2034,6 +2152,7 @@     Vietnamese -> "Bạn có muốn chỉnh sửa PKGBUILD của " <> p <> "?"     Czech      -> "Chcete upravit PKGBUILD z " <> p <> "?"     Korean     -> p <> "의 PKGBUILD를 편집하시겠습니까?"+    Hindi      -> "क्या आप " <> p <> " के PKGBUILD को संपादित करना चाहेंगे?"     _          -> "Would you like to edit the PKGBUILD of " <> p <> "?"  hotEdit_2 :: Language -> Doc AnsiStyle@@ -2046,7 +2165,9 @@   Vietnamese -> "Bạn có muốn chỉnh sửa tệp .install?"   Czech      -> "Chcete upravit soubor .install?"   Korean     -> ".install 파일을 수정하시겠습니까?"+  Hindi      -> "क्या आप .install फ़ाइल को संपादित करना चाहेंगे?"   Dutch      -> "Wilt u het .install-bestand bewerken?"+  Chinese    -> "要编辑 .install 文件吗?"   _          -> "Would you like to edit the .install file?"  hotEdit_3 :: FilePath -> Language -> Doc AnsiStyle@@ -2059,7 +2180,9 @@   Vietnamese -> "Bạn có muốn chỉnh sửa " <> pretty fp <> "?"   Czech      -> "Chcete upravit " <> pretty fp <> "?"   Korean     -> pretty fp <> "을(를) 수정하시겠습니까?"+  Hindi      -> "क्या आप " <> pretty fp <> " को संपादित करना चाहेंगे?"   Dutch      -> "Wilt u " <> pretty fp <> "bewerken?"+  Chinese    -> "要编辑 " <> pretty fp <> " 吗?"   _          -> "Would you like to edit " <> pretty fp <> "?"  ------------------------------@@ -2067,73 +2190,83 @@ ------------------------------ security_1 :: PkgName -> Language -> Doc AnsiStyle security_1 (PkgName p) = \case-  Polish    -> "PKGBUILD dla" <+> bt p <+> "był zbyt zawiły do odczytania - może zawierać złośliwy kod."-  Arabic    -> ".كان معقدا جدا للتحليل - يمكن أن يكون تعتيم مشوش للشفرة" <+> bt p <+> "تبع PKGBUILDاﻟ"-  Spanish   -> "El PKGBUILD de" <+> bt p <+> "era demasiado complejo de analizar - puede estar ofuscando código malicioso."-  Italian   -> "Il PKGBUILD di" <+> bt p <+> "è troppo complesso per essere analizzato - è possibile che stia offuscando codice malevolo."-  Dutch     -> "Het PKGBUILD-bestand van" <+> bt p <+> " was te complex om te verwerken. Het bestand bevat mogelijk verborgen schadelijke code."-  Ukrainian -> "PKGBUILD пакунку" <+> bt p <+> "був надто складним для аналізу - він може містити замаскований шкідливий код."-  Romanian  -> "PKGBUILD-ul pachetului" <+> bt p <+> "este prea complicat de analizat - ar putea sa acopere cod rău intenționat."+  Polish     -> "PKGBUILD dla" <+> bt p <+> "był zbyt zawiły do odczytania - może zawierać złośliwy kod."+  Arabic     -> ".كان معقدا جدا للتحليل - يمكن أن يكون تعتيم مشوش للشفرة" <+> bt p <+> "تبع PKGBUILDاﻟ"+  Spanish    -> "El PKGBUILD de" <+> bt p <+> "era demasiado complejo de analizar - puede estar ofuscando código malicioso."+  Italian    -> "Il PKGBUILD di" <+> bt p <+> "è troppo complesso per essere analizzato - è possibile che stia offuscando codice malevolo."+  Dutch      -> "Het PKGBUILD-bestand van" <+> bt p <+> " was te complex om te verwerken. Het bestand bevat mogelijk verborgen schadelijke code."+  Ukrainian  -> "PKGBUILD пакунку" <+> bt p <+> "був надто складним для аналізу - він може містити замаскований шкідливий код."+  Romanian   -> "PKGBUILD-ul pachetului" <+> bt p <+> "este prea complicat de analizat - ar putea sa acopere cod rău intenționat."   Vietnamese -> "PKGBUILD của" <+> bt p <+> "quá khó để đọc - nó có thể chứa đoạn mã nguy hiểm."-  Czech     -> "PKGBUILD z" <+> bt p <+> "byl příliš složitý na analýzu - může obsahovat matoucí škodlivý kód."-  Korean    -> "이 " <+> bt p <+> " PKGBUILD는 너무 복잡하여 분석할 수 없습니다 - 난독화된 코드일 수 있습니다."-  _         -> "The PKGBUILD of" <+> bt p <+> "was too complex to parse - it may be obfuscating malicious code."+  Czech      -> "PKGBUILD z" <+> bt p <+> "byl příliš složitý na analýzu - může obsahovat matoucí škodlivý kód."+  Korean     -> "이 " <+> bt p <+> " PKGBUILD는 너무 복잡하여 분석할 수 없습니다 - 난독화된 코드일 수 있습니다."+  Hindi      -> bt p <+> "का PKGBUILD पार्स करने के लिए बहुत जटिल था - यह दुर्भावनापूर्ण कोड को अस्पष्ट कर सकता है।"+  Chinese    -> bt p <+> "的 PKGBUILD 文件太复杂了,无法分析 - 其中可能隐藏恶意代码。"+  _          -> "The PKGBUILD of" <+> bt p <+> "was too complex to parse - it may be obfuscating malicious code."  security_2 :: Text -> Language -> Doc AnsiStyle security_2 (bt -> t) = \case   Polish    -> t <+> "może zostać użyty do pobrania arbitralnych skryptów, które nie są śledzone przez ten PKGBUILD."-  Arabic    -> ".هذه PKGBUILDيمكن ان يحمل ملفات عشروتىية ليست مسجلة باﻟ" <+> t-  Spanish   -> t <+> "se puede usar para descargar scripts arbitrarios que este PKGBUILD no rastrea."-  Italian   -> t <+> "può essere usato per scaricare script arbitrari non tracciati da questo PKGBUILD."-  Dutch     -> t <+> "kan gebruikt worden om willekeurige scripts te downloaden die niet worden bijgehouden door dit PKGBUILD-bestand."-  Ukrainian -> t <+> "може завантажувати довільні скріпти, які не відстежуються цим PKGBUILD."-  Romanian  -> t <+> "se poate folosi pentru a descărca scripturi neurmărite de acest PKGBUILD."+  Arabic     -> ".هذه PKGBUILDيمكن ان يحمل ملفات عشروتىية ليست مسجلة باﻟ" <+> t+  Spanish    -> t <+> "se puede usar para descargar scripts arbitrarios que este PKGBUILD no rastrea."+  Italian    -> t <+> "può essere usato per scaricare script arbitrari non tracciati da questo PKGBUILD."+  Dutch      -> t <+> "kan gebruikt worden om willekeurige scripts te downloaden die niet worden bijgehouden door dit PKGBUILD-bestand."+  Ukrainian  -> t <+> "може завантажувати довільні скріпти, які не відстежуються цим PKGBUILD."+  Romanian   -> t <+> "se poate folosi pentru a descărca scripturi neurmărite de acest PKGBUILD."   Vietnamese -> t <+> "có thể dùng để tải xuống các tập lệnh sẽ không được kiểm soát bởi PKGBUILD."-  Czech     -> t <+> "lze použít ke stažení libovolných skriptů, které tento PKGBUILD nesleduje."-  Korean    -> t <+> "은(는) PKGBUILD에서 추적되지 않는 임의 스크립트를 다운로드하는 데 사용할 수 있습니다."-  _         -> t <+> "can be used to download arbitrary scripts that aren't tracked by this PKGBUILD."+  Czech      -> t <+> "lze použít ke stažení libovolných skriptů, které tento PKGBUILD nesleduje."+  Korean     -> t <+> "은(는) PKGBUILD에서 추적되지 않는 임의 스크립트를 다운로드하는 데 사용할 수 있습니다."+  Hindi      -> t <+> "का उपयोग उन मनमानी स्क्रिप्ट को डाउनलोड करने के लिए किया जा सकता है जिन्हें इस PKGBUILD द्वारा ट्रैक नहीं किया जाता है।"+  Chinese    -> t <+> "可用于下载任意脚本,且不被 PKGBUILD 跟踪。"+  _          -> t <+> "can be used to download arbitrary scripts that aren't tracked by this PKGBUILD."  security_3 :: Text -> Language -> Doc AnsiStyle security_3 (bt -> t) = \case-  Polish    -> t <+> "może zostać użyty do wykonywania arbitralnego kodu, który nie jest śledzony przez ten PKGBUILD."-  Arabic    -> ".هذه PKGBUILDيمكن ان يستعمل ملفات عشروتىية ليست مسجلة باﻟ" <+> t-  Spanish   -> t <+> "se puede usar para ejecutar código arbitrario que este PKGBUILD no rastrea."-  Italian   -> t <+> "può essere usato per eseguire codice arbitrario non tracciato da questo PKGBUILD."-  Dutch     -> t <+> "kan gebruikt worden om willekeurige code uit te voeren die niet worden bijgehouden door dit PKGBUILD-bestand."-  Ukrainian -> t <+> "може виконувати довільний код, який не відстежуються цим PKGBUILD."-  Romanian  -> t <+> "se poate folosi pentru a executa cod arbitrar neurmărit de acest PKGBUILD."+  Polish     -> t <+> "może zostać użyty do wykonywania arbitralnego kodu, który nie jest śledzony przez ten PKGBUILD."+  Arabic     -> ".هذه PKGBUILDيمكن ان يستعمل ملفات عشروتىية ليست مسجلة باﻟ" <+> t+  Spanish    -> t <+> "se puede usar para ejecutar código arbitrario que este PKGBUILD no rastrea."+  Italian    -> t <+> "può essere usato per eseguire codice arbitrario non tracciato da questo PKGBUILD."+  Dutch      -> t <+> "kan gebruikt worden om willekeurige code uit te voeren die niet worden bijgehouden door dit PKGBUILD-bestand."+  Ukrainian  -> t <+> "може виконувати довільний код, який не відстежуються цим PKGBUILD."+  Romanian   -> t <+> "se poate folosi pentru a executa cod arbitrar neurmărit de acest PKGBUILD."   Vietnamese -> t <+> "có thể dùng để chạy các đoạn mã không được kiểm soát bởi PKGBUILD. "-  Czech     -> t <+> "lze použít ke spuštění libovolného kódu, který tento PKGBUILD nesleduje."-  Korean    -> t <+> "은(는) PKGBUILD에서 추적되지 않는 임의 스크립트를 실행하는 데 사용할 수 있습니다."-  _         -> t <+> "can be used to execute arbitrary code not tracked by this PKGBUILD."+  Czech      -> t <+> "lze použít ke spuštění libovolného kódu, který tento PKGBUILD nesleduje."+  Korean     -> t <+> "은(는) PKGBUILD에서 추적되지 않는 임의 스크립트를 실행하는 데 사용할 수 있습니다."+  Hindi      -> t <+> "इस PKGBUILD द्वारा ट्रैक नहीं किए गए मनमाने कोड को निष्पादित करने के लिए उपयोग किया जा सकता है।"+  Chinese    -> t <+> "可用于执行任意代码,且不被 PKGBUILD 跟踪。"+  _          -> t <+> "can be used to execute arbitrary code not tracked by this PKGBUILD."  security_4 :: Text -> Language -> Doc AnsiStyle security_4 (bt -> t) = \case-  Polish    -> t <+> "wskazuje na to, że ktoś może próbować uzyskać dostęp root'a do twojej maszyny."-  Arabic    -> ".تشير ان شخصا ما يحاول الوصول الى قوت المسؤول على جهازك" <+> t-  Spanish   -> t <+> "indica que alguien puede estar intentando obtener acceso de root a su máquina."-  Italian   -> t <+> "indica che forse qualcuno sta cercando di ottenere accesso alla tua macchina come root."-  Dutch     -> t <+> "geeft aan dat iemand mogelijk roottoegang tot uw apparaat probeert te krijgen."-  Ukrainian -> t <+> "вказує на те, що хтось може спробувати отримати доступ root до вашої машини."-  Romanian  -> t <+> "indică că cineva are putea încerca să obțină acces root asupra mașinăria dumneavoastră."+  Polish     -> t <+> "wskazuje na to, że ktoś może próbować uzyskać dostęp root'a do twojej maszyny."+  Arabic     -> ".تشير ان شخصا ما يحاول الوصول الى قوت المسؤول على جهازك" <+> t+  Spanish    -> t <+> "indica que alguien puede estar intentando obtener acceso de root a su máquina."+  Italian    -> t <+> "indica che forse qualcuno sta cercando di ottenere accesso alla tua macchina come root."+  Dutch      -> t <+> "geeft aan dat iemand mogelijk roottoegang tot uw apparaat probeert te krijgen."+  Ukrainian  -> t <+> "вказує на те, що хтось може спробувати отримати доступ root до вашої машини."+  Romanian   -> t <+> "indică că cineva are putea încerca să obțină acces root asupra mașinăria dumneavoastră."   Vietnamese -> t <+> "được xác định là có người đang có giành quyền truy cập vào root trên thiết bị của bạn."-  Czech     -> t <+> "znamená, že se někdo možná pokouší získat přístup root k vašemu počítači."-  Korean    -> t <+> "은(는) 누군가 컴퓨터에 대한 루트 액세스 권한을 얻으려고 할 수 있음을 나타냅니다."-  _         -> t <+> "indicates that someone may be trying to gain root access to your machine."+  Czech      -> t <+> "znamená, že se někdo možná pokouší získat přístup root k vašemu počítači."+  Korean     -> t <+> "은(는) 누군가 컴퓨터에 대한 루트 액세스 권한을 얻으려고 할 수 있음을 나타냅니다."+  Hindi      -> t <+> "यह दर्शाता है कि कोई व्यक्ति आपकी मशीन तक रूट पहुंच प्राप्त करने का प्रयास कर रहा है।"+  Chinese    -> t <+> "可用于获取 root 访问权限。"+  _          -> t <+> "indicates that someone may be trying to gain root access to your machine."  security_5 :: PkgName -> Language -> Doc AnsiStyle security_5 (PkgName p) = \case-  Polish    -> "UWAGA: PKGBUILD dla " <+> bt p <+> "zawiera wyrażenia bash znajdujące się na czarnej liście."-  Arabic    -> ".في القائمة السودء bash في تعبيرات" <+> bt p <+> "باجل PKGBUILDتحذير: اﻟ"-  Spanish   -> "ADVERTENCIA: El PKGBUILD de" <+> bt p <+> "contiene expresiones bash en la lista negra."-  Italian   -> "ATTENZIONE: Il PKGBUILD di" <+> bt p <+> "contiene espressioni bash presenti nella lista nera."-  Dutch     -> "WAARSCHUWING: De PKGBUILD van" <+> bt p <+> "bevat bash-uitdrukkingen die op de zwarte lijst staan."-  Ukrainian -> "УВАГА! PKGBUILD пакунку" <+> bt p <+> "містить вирази bash, які занесені в чорний список."-  Romanian  -> "ATENȚIE! PKGBUILD-ul pachetului" <+> bt p <+> "conține expresii de bash pe lista neagră."+  Polish     -> "UWAGA: PKGBUILD dla " <+> bt p <+> "zawiera wyrażenia bash znajdujące się na czarnej liście."+  Arabic     -> ".في القائمة السودء bash في تعبيرات" <+> bt p <+> "باجل PKGBUILDتحذير: اﻟ"+  Spanish    -> "ADVERTENCIA: El PKGBUILD de" <+> bt p <+> "contiene expresiones bash en la lista negra."+  Italian    -> "ATTENZIONE: Il PKGBUILD di" <+> bt p <+> "contiene espressioni bash presenti nella lista nera."+  Dutch      -> "WAARSCHUWING: De PKGBUILD van" <+> bt p <+> "bevat bash-uitdrukkingen die op de zwarte lijst staan."+  Ukrainian  -> "УВАГА! PKGBUILD пакунку" <+> bt p <+> "містить вирази bash, які занесені в чорний список."+  Romanian   -> "ATENȚIE! PKGBUILD-ul pachetului" <+> bt p <+> "conține expresii de bash pe lista neagră."   Vietnamese -> "CẢNH BÁO: PKGBUILD của" <+> bt p <+> "chứa những câu lệnh bash nguy hiểm."-  Czech     -> "VAROVÁNÍ: PKGBUILD z" <+> bt p <+> "obsahuje zakazany bash výrazy"-  Korean    -> "경고: " <+> bt p <+> "의 PKGBUILD에는 블랙리스트에 있는 bash 식이 포함되어 있습니다."-  _         -> "WARNING: The PKGBUILD of" <+> bt p <+> "contains blacklisted bash expressions."+  Czech      -> "VAROVÁNÍ: PKGBUILD z" <+> bt p <+> "obsahuje zakazany bash výrazy"+  Korean     -> "경고: " <+> bt p <+> "의 PKGBUILD에는 블랙리스트에 있는 bash 식이 포함되어 있습니다."+  Hindi      -> "चेतावनी: PKGBUILD" <+> bt p <+> "में ब्लैकलिस्टेड बैश एक्सप्रेशन शामिल हैं।"+  Chinese    -> "警告:" <+> bt p <+> "的 PKGBUILD 中包含了黑名单 bash 表达式。"+  _          -> "WARNING: The PKGBUILD of" <+> bt p <+> "contains blacklisted bash expressions."  security_6 :: Language -> Doc AnsiStyle security_6 = \case@@ -2147,76 +2280,88 @@   Vietnamese -> "Bạn có muốn dừng quá trình build?"   Czech      -> "Přejete si ukončit build?"   Korean     -> "빌드 프로세스를 종료하시겠습니까?"+  Hindi      -> "क्या आप निर्माण प्रक्रिया छोड़ना चाहते हैं?"+  Chinese    -> "是否要退出构建过程?"   _          -> "Do you wish to quit the build process?"  security_7 :: Language -> Doc AnsiStyle security_7 = \case-  Polish    -> "Anulowano dalsze przetwarzanie by uniknąć egzekucji potencjalnie złośliwego kodu bash"-  Arabic    -> ".الذي يحتمل أن يكون ضارا bash تم الغاء المعالجة الاضافيه لتجنب صدور"-  Spanish   -> "Se canceló el procesamiento posterior para evitar el código bash potencialmente malicioso."-  Italian   -> "Non saranno eseguite altre operazioni al fine di evitare l'esecuzione di codice bash potenzialmente malevolo."-  Dutch     -> "De verdere verwerking is afgebroken om het uitvoeren van potentieel schadelijke bash-code te voorkomen."-  Ukrainian -> "Подальша установка скасована, щоб уникнути потенційно шкідливого коду bash."-  Romanian  -> "S-a cancelat procesarea ulterioară pentru a evita cod de bash potențial rău intenționat."+  Polish     -> "Anulowano dalsze przetwarzanie by uniknąć egzekucji potencjalnie złośliwego kodu bash"+  Arabic     -> ".الذي يحتمل أن يكون ضارا bash تم الغاء المعالجة الاضافيه لتجنب صدور"+  Spanish    -> "Se canceló el procesamiento posterior para evitar el código bash potencialmente malicioso."+  Italian    -> "Non saranno eseguite altre operazioni al fine di evitare l'esecuzione di codice bash potenzialmente malevolo."+  Dutch      -> "De verdere verwerking is afgebroken om het uitvoeren van potentieel schadelijke bash-code te voorkomen."+  Ukrainian  -> "Подальша установка скасована, щоб уникнути потенційно шкідливого коду bash."+  Romanian   -> "S-a cancelat procesarea ulterioară pentru a evita cod de bash potențial rău intenționat."   Vietnamese -> "Hãy dừng những quá trình tiếp theo để ngắn đoạn mã bash nguy hiểm."-  Czech     -> "Další proces byl zrušen, aby se zabránilo potenciálně škodlivému bash kódu."-  Korean    -> "잠재적으로 악의적인 bash 코드를 방지하기 위해 추가 처리가 취소되었습니다."-  _         -> "Cancelled further processing to avoid potentially malicious bash code."+  Czech      -> "Další proces byl zrušen, aby se zabránilo potenciálně škodlivému bash kódu."+  Korean     -> "잠재적으로 악의적인 bash 코드를 방지하기 위해 추가 처리가 취소되었습니다."+  Hindi      -> "संभावित रूप से दुर्भावनापूर्ण बैश कोड से बचने के लिए आगे की प्रक्रिया रद्द कर दी गई।"+  Chinese    -> "已取消后续处理以避免潜在的恶意 bash 代码。"+  _          -> "Cancelled further processing to avoid potentially malicious bash code."  security_8 :: Text -> Language -> Doc AnsiStyle security_8 (bt -> t) = \case-  Polish    -> t <+> "jest komendą bash zawartą w polach tablicy twojego PKGBUILD."-  Arabic    -> ".الخاص بك PKGBUILDمضمن بالحقول المصفوفة باﻟ bash امر" <+> t-  Spanish   -> t <+> "es un comando bash integrado en los campos de la matriz del PKGBUILD."-  Italian   -> t <+> "è un comando bash presente all'interno degli array del tuo PKGBUILD."-  Dutch     -> t <+> "is een bash-opdracht die is opgenomen in uw PKGBUILD-reeksvelden."-  Ukrainian -> t <+> "- це команда bash, що вбудована в ваші поля масиву PKGBUILD"-  Romanian  -> t <+> "este o comandă bash integrată în matricele din PKGBUILD."+  Polish     -> t <+> "jest komendą bash zawartą w polach tablicy twojego PKGBUILD."+  Arabic     -> ".الخاص بك PKGBUILDمضمن بالحقول المصفوفة باﻟ bash امر" <+> t+  Spanish    -> t <+> "es un comando bash integrado en los campos de la matriz del PKGBUILD."+  Italian    -> t <+> "è un comando bash presente all'interno degli array del tuo PKGBUILD."+  Dutch      -> t <+> "is een bash-opdracht die is opgenomen in uw PKGBUILD-reeksvelden."+  Ukrainian  -> t <+> "- це команда bash, що вбудована в ваші поля масиву PKGBUILD"+  Romanian   -> t <+> "este o comandă bash integrată în matricele din PKGBUILD."   Vietnamese -> t <+> "là lệnh bash được lồng trong mảng của PKGBUILD."-  Czech     -> t <+> "je bash příkaz vložený do polí pole PKGBUILD."-  Korean    -> t <+> "는 PKGBUILD 배열 필드에 표시된 bash 명령입니다."-  _         -> t <+> "is a bash command inlined in your PKGBUILD array fields."+  Czech      -> t <+> "je bash příkaz vložený do polí pole PKGBUILD."+  Korean     -> t <+> "는 PKGBUILD 배열 필드에 표시된 bash 명령입니다."+  Hindi      -> t <+> "आपके PKGBUILD सरणी फ़ील्ड में इनलाइन एक बैश कमांड है।"+  Chinese    -> t <+> "存在于 PKGBUILD 数组中,似乎是 bash 命令。"+  _          -> t <+> "is a bash command inlined in your PKGBUILD array fields."  security_9 :: Text -> Language -> Doc AnsiStyle security_9 (bt -> t) = \case-  Polish    -> t <+> "jest dziwną rzeczą w polach tablicy. Czy to bezpieczne?"-  Arabic    -> "شيء غريب ان يكون لديك في الحقول المصفوفة, هل هيا امن؟" <+> t-  Spanish   -> t <+> "es algo extraño para tener en sus campos de matriz. ¿Es seguro?"-  Italian   -> t <+> "è una cosa strana da trovare all'interno degli array. E' sicura?"-  Dutch     -> t <+> "is een vreemde eend in de bijt in uw reeksvelden. Is dit wel veilig?"-  Ukrainian -> t <+> "- дивна річ в полях масиву. Це безпечно?"-  Romanian  -> t <+> "e ciudat să se afle în matricele dumneavoastră. Asta este sigur?"+  Polish     -> t <+> "jest dziwną rzeczą w polach tablicy. Czy to bezpieczne?"+  Arabic     -> "شيء غريب ان يكون لديك في الحقول المصفوفة, هل هيا امن؟" <+> t+  Spanish    -> t <+> "es algo extraño para tener en sus campos de matriz. ¿Es seguro?"+  Italian    -> t <+> "è una cosa strana da trovare all'interno degli array. E' sicura?"+  Dutch      -> t <+> "is een vreemde eend in de bijt in uw reeksvelden. Is dit wel veilig?"+  Ukrainian  -> t <+> "- дивна річ в полях масиву. Це безпечно?"+  Romanian   -> t <+> "e ciudat să se afle în matricele dumneavoastră. Asta este sigur?"   Vietnamese -> t <+> "là đoạn mã lạ trong mảng. Nó có an toàn không?"-  Czech     -> t <+> "je zvláštní věc mít v polích. Je to bezpečné?"-  Korean    -> t <+> "이것은 배열 안에서 볼 수 있는 이상한 것입니다. 안전합니까?"-  _         -> t <+> "is a strange thing to have in your array fields. Is it safe?"+  Czech      -> t <+> "je zvláštní věc mít v polích. Je to bezpečné?"+  Korean     -> t <+> "이것은 배열 안에서 볼 수 있는 이상한 것입니다. 안전합니까?"+  Hindi      -> t <+> "आपके सरणी फ़ील्ड में होना एक अजीब चीज़ है। क्या यह सुरक्षित है?"+  Chinese    -> t <+> "存在于数组字段,很怪。这安全吗?"+  _          -> t <+> "is a strange thing to have in your array fields. Is it safe?"  security_10 :: Text -> Language -> Doc AnsiStyle security_10 (bt -> t) = \case-  Polish    -> t <+> "sugeruje, że ktoś próbował być sprytny używając zmiennych do ukrycia złośliwych komend."-  Arabic    -> ".يعني ان شخصا ما كان يحاول ان يكون ذكيا مع المتغيرات لاخفاء الاوامر الخبيثة" <+> t-  Spanish   -> t <+> "implica que alguien estaba tratando de ser astuto con las variables para ocultar comandos maliciosos."-  Italian   -> t <+> "implica che qualcuno stava trafficando con le variabili per nascondere comandi malevoli."-  Dutch     -> t <+> "impliceert dat iemand op slinkse wijze probeerde om te gaan met variabelen om schadelijke opdrachten te verbergen."-  Ukrainian -> t <+> "означає, що хтось намагається обдурити змінними, щоб сховати небеспечні команди."-  Romanian  -> t <+> "implică că cineva încearcă să fie șmecher cu variabile pentru a ascunde comenzi rele intenționate."-  Vietnamese -> t <+> "được xác định là có ai đó đang cố ẩn những câu lệnh nguy hiểm trong các biến."-  Czech     -> t <+> "naznačuje že se někdo snažil být chytrý s proměnnými, aby skryl škodlivé příkazy."-  Korean    -> t <+> "누군가 악의적인 명령을 숨기기 위해 변수를 교묘하게 다루려고 했다는 것을 암시합니다."-  _         -> t <+> "implies that someone was trying to be clever with variables to hide malicious commands."+  Polish     -> t <+> "sugeruje, że ktoś próbował być sprytny używając zmiennych do ukrycia złośliwych komend."+  Arabic     -> ".يعني ان شخصا ما كان يحاول ان يكون ذكيا مع المتغيرات لاخفاء الاوامر الخبيثة" <+> t+  Spanish    -> t <+> "implica que alguien estaba tratando de ser astuto con las variables para ocultar comandos maliciosos."+  Italian    -> t <+> "implica che qualcuno stava trafficando con le variabili per nascondere comandi malevoli."+  Dutch      -> t <+> "impliceert dat iemand op slinkse wijze probeerde om te gaan met variabelen om schadelijke opdrachten te verbergen."+  Ukrainian  -> t <+> "означає, що хтось намагається обдурити змінними, щоб сховати небеспечні команди."+  Romanian   -> t <+> "implică că cineva încearcă să fie șmecher cu variabile pentru a ascunde comenzi rele intenționate."+  Vietnamese  -> t <+> "được xác định là có ai đó đang cố ẩn những câu lệnh nguy hiểm trong các biến."+  Czech      -> t <+> "naznačuje že se někdo snažil být chytrý s proměnnými, aby skryl škodlivé příkazy."+  Korean     -> t <+> "누군가 악의적인 명령을 숨기기 위해 변수를 교묘하게 다루려고 했다는 것을 암시합니다."+  Hindi      -> t <+> "का तात्पर्य यह है कि कोई व्यक्ति दुर्भावनापूर्ण आदेशों को छिपाने के लिए वेरिएबल्स के साथ चतुराई बरतने की कोशिश कर रहा था।"+  Chinese    -> t <+> "表明有人试图巧妙地利用变量来隐藏恶意命令。"+  _          -> t <+> "implies that someone was trying to be clever with variables to hide malicious commands."  security_11 :: Language -> Doc AnsiStyle security_11 = \case-  Polish    -> "Ten PKGBUILD jest zbyt zawiły do odczytania - może ukrywać w sobie złośliwy kod."-  Arabic    -> ".كان معقدا جدا للتحليل - يمكن ان يخفي برنامج ضار PKGBUILDذلك اﻟ"-  Spanish   -> "Éste PKGBUILD es demasiado complejo para analizar, puede estar ofuscando código malicioso."-  Ukrainian -> "Цей PKGBUILD був надто складним для аналізу - він може містити шкідливий код."-  Romanian  -> "Acel PKGBUILD este prea complicat de analizat - are putea ascunde cod rău intenționat."+  Polish     -> "Ten PKGBUILD jest zbyt zawiły do odczytania - może ukrywać w sobie złośliwy kod."+  Arabic     -> ".كان معقدا جدا للتحليل - يمكن ان يخفي برنامج ضار PKGBUILDذلك اﻟ"+  Spanish    -> "Éste PKGBUILD es demasiado complejo para analizar, puede estar ofuscando código malicioso."+  Ukrainian  -> "Цей PKGBUILD був надто складним для аналізу - він може містити шкідливий код."+  Romanian   -> "Acel PKGBUILD este prea complicat de analizat - are putea ascunde cod rău intenționat."   Vietnamese -> "Không thể đọc PKGBUILD - nó có thể chứa đoạn mã nguy hiểm."-  Czech     -> "Tento PKGBUILD je příliš složitý na to, aby jej bylo možné analyzovat/rezebrat – může obsahovat matoucí škodlivý kód."-  Korean    -> "이 PKGBUILD는 분석하기에 너무 복잡합니다 - 악성코드를 난독화하고 있을 수 있습니다."+  Czech      -> "Tento PKGBUILD je příliš složitý na to, aby jej bylo možné analyzovat/rezebrat – může obsahovat matoucí škodlivý kód."+  Korean     -> "이 PKGBUILD는 분석하기에 너무 복잡합니다 - 악성코드를 난독화하고 있을 수 있습니다."+  Hindi      -> "वह PKGBUILD पार्स करने के लिए बहुत जटिल है - यह दुर्भावनापूर्ण कोड को अस्पष्ट कर सकता है।"   Dutch      -> "Deze PKGBUILD is te complex om te verwerken. Het bestand bevat mogelijk verborgen schadelijke code."-  _         -> "That PKGBUILD is too complex to parse - it may be obfuscating malicious code."+  Chinese    -> "PKGBUILD 文件太复杂了,无法分析 - 其中可能隐藏恶意代码。"+  _          -> "That PKGBUILD is too complex to parse - it may be obfuscating malicious code."  security_12 :: Language -> Doc AnsiStyle security_12 = \case@@ -2228,21 +2373,25 @@   Vietnamese -> "Phát hiện lỗ hổng trong PKGBUILD."   Czech      -> "Byla zjištěna potenciální bezpečnostní chyba v PKGBUILD."   Korean     -> "잠재적인 PKGBUILD 취약점 발견됨."+  Hindi      -> "संभावित PKGBUILD कमजोरियों का पता चला।"   Dutch      -> "Er zijn mogelijke kwetsbaarheden aangetroffen in het PKGBUILD-bestand."+  Chinese    -> "在 PKGBUILD 中检测到潜在的漏洞。"   _          -> "Potential PKGBUILD vulnerabilities detected."  security_13 :: Word -> Language -> Doc AnsiStyle security_13 (bt -> w) = \case-  Polish    -> "Sprawdzanie PKGBUILD" <+> w <+> "w poszukiwaniu luk w bezpieczeństwie..."-  Arabic    -> "...بحثا عن نقاط ضعف" <+> w <+> "تبع PKGBUILDتحقق اﻟ"-  Spanish   -> "Comprobando" <+> w <+> "PKGBUILDs por vulnerabilidades..."-  Ukrainian -> "Перевіряємо" <+> w <+> "PKGBUILD-ів на вразливості..."-  Romanian  -> "Se verifică PKGBUILD-uri" <+> w <+> "pentru vulnerabilități..."+  Polish     -> "Sprawdzanie PKGBUILD" <+> w <+> "w poszukiwaniu luk w bezpieczeństwie..."+  Arabic     -> "...بحثا عن نقاط ضعف" <+> w <+> "تبع PKGBUILDتحقق اﻟ"+  Spanish    -> "Comprobando" <+> w <+> "PKGBUILDs por vulnerabilidades..."+  Ukrainian  -> "Перевіряємо" <+> w <+> "PKGBUILD-ів на вразливості..."+  Romanian   -> "Se verifică PKGBUILD-uri" <+> w <+> "pentru vulnerabilități..."   Vietnamese -> "Tìm kiếm" <+> w <+> "lỗ hổng trong PKGBUILD..."-  Czech     -> "Kontrola bezpečnostních chyb v" <+> w <+> "PKGBUILD"-  Korean    -> w <+> "PKGBUILD 취약점 확인 중..."+  Czech      -> "Kontrola bezpečnostních chyb v" <+> w <+> "PKGBUILD"+  Korean     -> w <+> "PKGBUILD 취약점 확인 중..."+  Hindi      -> "जांच की जा रही है" <+> w <+> "कमजोरियों के लिए PKGBUILDs..."   Dutch      -> "Bezig met controleren van" <+> w <+> "PKGBUILDs op kwetsbaarheden…"-  _         -> "Checking" <+> w <+> "PKGBUILDs for vulnerabilities..."+  Chinese    -> "检查 " <+> w <+> "PKGBUILD 中是否存在漏洞..."+  _          -> "Checking" <+> w <+> "PKGBUILDs for vulnerabilities..."  security_14 :: Language -> Doc AnsiStyle security_14 = \case@@ -2254,7 +2403,9 @@   Vietnamese -> "Không tìm thấy lỗ hổng."   Czech      -> "Nebyly nalezeny žádné bezpečnostní chyby."   Korean     -> "발견된 취약점이 없습니다."+  Hindi      -> "कोई कमज़ोरी नहीं पाई गई।"   Dutch      -> "Er zijn geen kwetsbaarheden aangetroffen."+  Chinese    -> "未发现漏洞。"   _          -> "No vulnerabilities detected."  -----------------------@@ -2278,6 +2429,7 @@     Ukrainian  -> "[Т/н]"     Romanian   -> "[D/n]"     Czech      -> "[A,n]"+    Hindi      -> "[य/न]"     _          -> "[Y/n]"  yesPattern :: Language -> [T.Text]@@ -2298,6 +2450,7 @@     Ukrainian  -> ["т", "так"]     Romanian   -> ["d", "da"]     Czech      -> ["a", "ano"]+    Hindi      -> ["य", "हाँ"]     _          -> ["y", "yes"]  ----------------------
lib/Aura/Languages/Fields.hs view
@@ -4,7 +4,7 @@  -- | -- Module    : Aura.Languages.Fields--- Copyright : (c) Colin Woodbury, 2012 - 2021+-- Copyright : (c) Colin Woodbury, 2012 - 2024 -- License   : GPL3 -- Maintainer: Colin Woodbury <colin@fosskers.ca> --@@ -39,6 +39,8 @@     Vietnamese -> "Gói"     Czech      -> "Balíček"     Korean     -> "패키지"+    Hindi      -> "पैकेज"+    Chinese    -> "包"     _          -> "Package"  firstInstall :: Language -> Text@@ -63,6 +65,8 @@     Vietnamese -> "Cài đặt lần đầu"     Czech      -> "První instalace"     Korean     -> "최초 설치"+    Hindi      -> "प्रथम इंस्टाल"+    Chinese    -> "初次安装"     _          -> "First Install"  upgrades :: Language -> Text@@ -87,6 +91,8 @@     Vietnamese -> "Cập nhật"     Czech      -> "Aktualizace"     Korean     -> "업그레이드 횟수"+    Hindi      -> "अपग्रेड"+    Chinese    -> "更新数量"     _          -> "Upgrades"  recentActions :: Language -> Text@@ -111,6 +117,8 @@     Vietnamese -> "Hoạt động gần nhất"     Czech      -> "Nedávné akce"     Korean     -> "근황"+    Hindi      -> "हाल की कार्रवाइयां"+    Chinese    -> "近况"     _          -> "Recent Actions"  repository :: Language -> Text@@ -134,6 +142,8 @@     Romanian   -> "Repertoriu"     Czech      -> "Úložiště"     Korean     -> "리포지토리"+    Hindi      -> "रिपॉजिटरी"+    Chinese    -> "仓库"     _          -> "Repository"  name :: Language -> Text@@ -158,6 +168,8 @@     Vietnamese -> "Tên"     Czech      -> "Název"     Korean     -> "이름"+    Hindi      -> "नाम"+    Chinese    -> "名称"     _          -> "Name"  version :: Language -> Text@@ -182,6 +194,8 @@     Vietnamese -> "Phiên bản"     Czech      -> "Verze"     Korean     -> "버전"+    Hindi      -> "संस्करण"+    Chinese    -> "版本"     _          -> "Version"  aurStatus :: Language -> Text@@ -205,6 +219,8 @@     Vietnamese -> "Trạng thái AUR"     Czech      -> "Stav AUR"     Korean     -> "AUR 상태"+    Hindi      -> "AUR स्थिति"+    Chinese    -> "AUR 状态"     _          -> "AUR Status"  -- NEEDS TRANSLATION@@ -224,6 +240,8 @@     Romanian   -> "Întreținător"     Czech      -> "Udržovatel"     Korean     -> "관리자"+    Hindi      -> "मेंटेनर"+    Chinese    -> "维护者"     _          -> "Maintainer"  projectUrl :: Language -> Text@@ -248,6 +266,8 @@     Vietnamese -> "URL của Dự án"     Czech      -> "Adresa URL projektu"     Korean     -> "프로젝트 URL"+    Hindi      -> "प्रोजेक्ट URL"+    Chinese    -> "项目 URL"     _          -> "Project URL"  aurUrl :: Language -> Text@@ -270,6 +290,8 @@     Vietnamese -> "URL của AUR"     Czech      -> "URL pro AUR"     Korean     -> "AUR URL"+    Hindi      -> "AUR URL"+    Chinese    -> "AUR URL"     _          -> "AUR URL"  license :: Language -> Text@@ -294,6 +316,8 @@     Vietnamese -> "Bản quyền"     Czech      -> "Licence"     Korean     -> "라이센스"+    Hindi      -> "लाइसेंस"+    Chinese    -> "许可"     _          -> "License"  dependsOn :: Language -> Text@@ -316,6 +340,8 @@     Vietnamese -> "Phụ thuộc vào"     Czech      -> "Závisí na"     Korean     -> "종속 패키지"+    Hindi      -> "निर्भर करता है"+    Chinese    -> "依赖于"     _          -> "Depends On"  buildDeps :: Language -> Text@@ -335,6 +361,8 @@     Romanian   -> "Dependențe de compilare"     Czech      -> "Závislosti kompilace"     Korean     -> "빌드 종속성"+    Hindi      -> "बिल्ड निर्भरताएँ"+    Chinese    -> "构建依赖"     _          -> "Build Deps"  votes :: Language -> Text@@ -359,6 +387,8 @@     Vietnamese -> "Bình chọn"     Czech      -> "Hlasy"     Korean     -> "투표"+    Hindi      -> "वोट"+    Chinese    -> "票数"     _          -> "Votes"  popularity :: Language -> Text@@ -375,6 +405,8 @@     Vietnamese -> "Phổ biến"     Czech      -> "Popularita"     Korean     -> "인기"+    Hindi      -> "लोकप्रियता"+    Chinese    -> "人气"     _          -> "Popularity"  description :: Language -> Text@@ -399,4 +431,6 @@     Vietnamese -> "Mô tả"     Czech      -> "Popis"     Korean     -> "개요"+    Hindi      -> "विवरण"+    Chinese    -> "简介"     _          -> "Description"
lib/Aura/Logo.hs view
@@ -1,6 +1,6 @@ -- | -- Module    : Aura.Logo--- Copyright : (c) Colin Woodbury, 2012 - 2021+-- Copyright : (c) Colin Woodbury, 2012 - 2024 -- License   : GPL3 -- Maintainer: Colin Woodbury <colin@fosskers.ca> --
lib/Aura/MakePkg.hs view
@@ -2,7 +2,7 @@  -- | -- Module    : Aura.State--- Copyright : (c) Colin Woodbury, 2012 - 2021+-- Copyright : (c) Colin Woodbury, 2012 - 2024 -- License   : GPL3 -- Maintainer: Colin Woodbury <colin@fosskers.ca> --@@ -69,7 +69,7 @@   (ec, se) <- runIt ss pc   -- Fetch the filenames of the built tarballs.   (_, out, _) <- readProcess $ proc "sudo" ["-u", T.unpack usr, makepkgCmd, "--packagelist"]-  let fs = map T.unpack . T.lines . decodeUtf8Lenient $ BL.toStrict out+  fs <- filterM doesFileExist . map T.unpack . T.lines . decodeUtf8Lenient $ BL.toStrict out   pure (ec, se, fs)  runIt :: MonadIO m
lib/Aura/Packages/AUR.hs view
@@ -3,7 +3,7 @@  -- | -- Module    : Aura.Packages.AUR--- Copyright : (c) Colin Woodbury, 2012 - 2021+-- Copyright : (c) Colin Woodbury, 2012 - 2024 -- License   : GPL3 -- Maintainer: Colin Woodbury <colin@fosskers.ca> --
lib/Aura/Packages/Repository.hs view
@@ -3,7 +3,7 @@  -- | -- Module    : Aura.Packages.Repository--- Copyright : (c) Colin Woodbury, 2012 - 2021+-- Copyright : (c) Colin Woodbury, 2012 - 2024 -- License   : GPL3 -- Maintainer: Colin Woodbury <colin@fosskers.ca> --
lib/Aura/Pacman.hs view
@@ -2,7 +2,7 @@  -- | -- Module    : Aura.Pacman--- Copyright : (c) Colin Woodbury, 2012 - 2021+-- Copyright : (c) Colin Woodbury, 2012 - 2024 -- License   : GPL3 -- Maintainer: Colin Woodbury <colin@fosskers.ca> --
lib/Aura/Pkgbuild/Fetch.hs view
@@ -2,7 +2,7 @@  -- | -- Module    : Aura.State--- Copyright : (c) Colin Woodbury, 2012 - 2021+-- Copyright : (c) Colin Woodbury, 2012 - 2024 -- License   : GPL3 -- Maintainer: Colin Woodbury <colin@fosskers.ca> --
lib/Aura/Pkgbuild/Records.hs view
@@ -1,6 +1,6 @@ -- | -- Module    : Aura.Pkgbuild.Records--- Copyright : (c) Colin Woodbury, 2012 - 2021+-- Copyright : (c) Colin Woodbury, 2012 - 2024 -- License   : GPL3 -- Maintainer: Colin Woodbury <colin@fosskers.ca> --
lib/Aura/Pkgbuild/Security.hs view
@@ -3,7 +3,7 @@  -- | -- Module    : Aura.Pkgbuild.Security--- Copyright : (c) Colin Woodbury, 2012 - 2021+-- Copyright : (c) Colin Woodbury, 2012 - 2024 -- License   : GPL3 -- Maintainer: Colin Woodbury <colin@fosskers.ca> --
lib/Aura/Security.hs view
@@ -1,6 +1,6 @@ -- | -- Module    : Aura.Security--- Copyright : (c) Colin Woodbury, 2012 - 2021+-- Copyright : (c) Colin Woodbury, 2012 - 2024 -- License   : GPL3 -- Maintainer: Colin Woodbury <colin@fosskers.ca> --
lib/Aura/Settings.hs view
@@ -3,7 +3,7 @@  -- | -- Module    : Aura.Settings--- Copyright : (c) Colin Woodbury, 2012 - 2021+-- Copyright : (c) Colin Woodbury, 2012 - 2024 -- License   : GPL3 -- Maintainer: Colin Woodbury <colin@fosskers.ca> --
lib/Aura/Settings/External.hs view
@@ -3,7 +3,7 @@  -- | -- Module    : Aura.Settings.External--- Copyright : (c) Colin Woodbury, 2012 - 2021+-- Copyright : (c) Colin Woodbury, 2012 - 2024 -- License   : GPL3 -- Maintainer: Colin Woodbury <colin@fosskers.ca> --
lib/Aura/Shell.hs view
@@ -1,6 +1,6 @@ -- | -- Module    : Aura.Shell--- Copyright : (c) Colin Woodbury, 2012 - 2021+-- Copyright : (c) Colin Woodbury, 2012 - 2024 -- License   : GPL3 -- Maintainer: Colin Woodbury <colin@fosskers.ca> --
lib/Aura/State.hs view
@@ -1,6 +1,6 @@ -- | -- Module    : Aura.State--- Copyright : (c) Colin Woodbury, 2012 - 2021+-- Copyright : (c) Colin Woodbury, 2012 - 2024 -- License   : GPL3 -- Maintainer: Colin Woodbury <colin@fosskers.ca> --
lib/Aura/Types.hs view
@@ -7,7 +7,7 @@  -- | -- Module    : Aura.Types--- Copyright : (c) Colin Woodbury, 2012 - 2021+-- Copyright : (c) Colin Woodbury, 2012 - 2024 -- License   : GPL3 -- Maintainer: Colin Woodbury <colin@fosskers.ca> --@@ -276,6 +276,7 @@               | Vietnamese               | Czech               | Korean+              | Hindi               deriving (Eq, Enum, Bounded, Ord, Show)  -- | The various ways that dependency resolution can fail.
lib/Aura/Utils.hs view
@@ -2,7 +2,7 @@  -- | -- Module    : Aura.Utils--- Copyright : (c) Colin Woodbury, 2012 - 2021+-- Copyright : (c) Colin Woodbury, 2012 - 2024 -- License   : GPL3 -- Maintainer: Colin Woodbury <colin@fosskers.ca> --@@ -154,6 +154,11 @@   These w x <> This y    = These (w <> y) x   These w x <> That y    = These w (x <> y)   These w x <> These y z = These (w <> y) (x <> z)++instance Functor (These a) where+  fmap _ (This x)    = This x+  fmap f (That y)    = That (f y)+  fmap f (These x y) = These x (f y)  instance Bifunctor These where   bimap f _ (This x)    = This (f x)
+ misc/aura.8 view
@@ -0,0 +1,730 @@+'\" t+.\" Man page for `aura`+.\" Written by Colin Woodbury <colin@fosskers.ca>+.+.TH aura 8 "2021 September" "Aura" "Aura Manual"+.+.de SAMPLE      \" Indented example - on its own paragraph.+.  P+.  RS+.  EX+..+.de ESAMPLE     \" End of Indented example.+.  EE+.  RE+..+.de RSAMPLE     \" Relative sample - even more indented example.+.  RS+.  SAMPLE+..+.de ERSAMPLE    \" End of Relative sample.+.  ESAMPLE+.  RE+..+.+.ds ellipsis \&.\|.\|.\&+.\" Format repeatable parameter (1 or more) with ellipsis.+.ds multi                 \fI\\$1\fP\fR\\ \\*[ellipsis]\fP+.\" Format optional repeatable parameter (0 or more)+.\" with ellipsis and square brackets.+.ds multi-optional \fR[\fP\fI\\$1\fP\fR\\ \\*[ellipsis]]\fP+.ds packages          \\*[multi          packages]+.ds packages-optional \\*[multi-optional packages]+.+.SH NAME+.+aura \- package manager utility and AUR helper+.+.SH SYNOPSIS+.+.SY aura+.I OPERATION+\*[multi-optional OPTIONS]+\*[multi-optional targets]+.YS+.+.SH DESCRIPTION+.+.B aura+is a secure, multilingual package manager for Arch Linux written in Haskell.+.+It connects to both the official Arch repositories and to the+Arch User Repositories (AUR),+allowing easy control of all packages on an Arch system.+.+Aura allows+.I all+pacman operations and provides+.I new+custom ones for dealing with AUR packages.+.+.SH OPERATIONS+.+.TP+.BR \-A ", " \-\-aursync " \*[packages-optional]"+.+Perform actions involving the+.BR A UR.+.+Default action installs packages from the AUR.+.+.IP+During building, makepkg output is+.I not+shown by default.+.+After building, the built+.I *.pkg.tar.xz+file is moved to the package cache and installed from there.+.+This allows for easy AUR package downgrading.+.+.TP+.BR -B ", " \-\-save+.+Manage the saving and restoring of the global package state.+.+Default action stores a record of all currently installed packages and their+versions.+.+.TP+.BR -C ", " \-\-downgrade " \*[packages-optional]"+.+Perform actions involving the package+.BR C ache.+.+Default action downgrades specified+.IR packages .+.+.IP+This process is interactive, allowing the user to choose from any previous+version they have available in the package cache.+.+.TP+.BR \-L ", " \-\-viewlog+.+Perform actions involving the pacman+.BR L ogfile.+.+Default action opens the log for read-only viewing.+.+.TP+.BR \-O ", " \-\-orphans " \*[packages-optional]"+.+Perform actions involving+.BR O rphan+packages.+.+Default action is to list the current orphans.+.+.IP+Orphan packages are packages installed as dependencies,+but are no longer required by any other package.+.+.TP+.BR \-P ", " \-\-analysis+.+Perform security analysis of a+.BR P KGBUILD.+.+Default action reads PKGBUILD from stdin.+.+.IP+Useful for package maintainers and sysadmins to verify the safety of the+PKGBUILD files that they write.+.+To test any package on the AUR, try the following:+.+.RSAMPLE+.BI "aura -Ap " "package" " | aura -P"+.ERSAMPLE+.+.SH AUR SYNC OPTIONS (\fR\-A\fP)+.+.TP+.BR \-a ", " \-\-delmakedeps+.+Uninstalls build dependencies that are no longer required after installing the+main package.+.+This prevents the creation of orphan packages.+.+Also note that while the package itself will be uninstalled,+its package file will remain in the cache.+.+.TP+.BR \-c ", " \-\-clean+.+After a package's tarball has been built and copied to the package cache,+delete its build directory immediately.+.+.TP+.BR \-d ", " \-\-deps " \*[packages]"+.+View all dependencies of+.IR packages .+.+This process is recursive for AUR packages,+so all dependencies of dependencies (and so on) will also be shown.+.+This can aid the pre-install package research process.+.+.TP+.BR \-i ", " \-\-info " \*[packages]"+.+View information about AUR+.IR packages .+.+.TP+.BR \-k ", " \-\-diff+.+Show PKGBUILD diffs.+.+When upgrading, using this option will compare the most and second-most recent+PKGBUILDs and output changes in colour.+.+.TP+.BR \-p ", " \-\-pkgbuild " \*[packages]"+.+View PKGBUILDs of AUR+.IR packages .+.+Use this before installing new packages to confirm that the build scripts+aren't doing anything fishy.+.+.TP+.BR \-q ", " \-\-quiet+.+Display less information about certain+.B \-A+operations+(this is useful when processing Aura's output in a script).+.+In particular, search and view dependencies will only show uncoloured package+names.+.+.TP+.BR \-s ", " \-\-search " \*[multi word]"+.+Search AUR for packages containing+.IR word s+(not regex) in their names or descriptions.+.+Multiple terms will narrow down the search.+.+Results are sorted by votes.+.+Suboptions:+.+.RS+.+.  TP+.  B \-\-abc+.+Sorts results alphabetically.+.+.  TP+.  BR \-\-head [ =\fIN\fR ]+.+Only show the first+.I N+results.+.I N+defaults to 10.+.+.  TP+.  BR \-\-tail [ =\fIN\fR ]+.+Only show the last+.I N+results.+.I N+defaults to 10.+.+.  TP+.  BR \-r ", " \-\-both+.+Show results from the official repos as well.+.+.RE+.+.TP+.BR \-u ", " \-\-sysupgrade+.+Upgrade all installed AUR packages.+.B -Au+is like+.B -Su+but for AUR packages.+.+.TP+.BR \-w ", " \-\-downloadonly " \*[packages]"+.+Retrieve AUR+.I packages+source tarballs,+but do not build/install/upgrade anything.+.+.TP+.BR \-x ", " \-\-unsuppress+.+Unsuppress+.BR makepkg (8)+output during building.+.+By default this output is suppressed for a more silent install.+.+Note that when this option isn't used,+.B makepkg+output is actually collected and printed if any errors occur.+.+.TP+.B \-\-json \*[packages]+.+Query the AUR RPC for+.I packages+info as raw JSON.+.+Good for debugging.+.+.TP+.BI \-\-build " path"+.+Specify build+.I path+when building AUR packages.+.+Only the+.I full+path of a pre-existing directory can be used.+.+Example:+.+.RSAMPLE+aura -A foo --build=/full/path/to/build/location/+.ERSAMPLE+.+.TP+.BI \-\-builduser " user"+.+Specify the+.I user+to build packages as.+.+This can be useful when logged in as root and a build user is available.+.+.TP+.B \-\-devel+.+When ran with+.BR \-Au ,+adds all development packages to the queue of packages to upgrade.+.+Devel packages are those pulled directly from online repositories,+via git / mercurial / etc.+.+.TP+.B \-\-dryrun+.+When ran with+.BR \-A " or " \-Au ,+update checks,+PKGBUILD diffs,+and dependency checks will be performed,+but nothing will be built.+.+Also usable with+.BR \-M .+.+.TP+.B \-\-force+.+Always (re)build the specified packages.+.+Usually Aura will not rebuild packages whose versions are already available in+the local package cache.+.+.TP+.B \-\-hotedit+.+Before building, prompt the user if they wish to view/edit the+.IR PKGBUILD ,+as well as any+.IR .install " or " .patch+files.+.+However, research into packages (and by extension, their PKGBUILDs) should be+done by the user before any building occurs.+.+Please use+.BR \-Ap " and " \-Ad+for this,+as they will be much faster at presenting information than searching the AUR+website manually.+.+Note that, since aura is run through sudo,+your local value of+.RB $ EDITOR+may not be preserved.+.+Run as+\(lqsudo+.B \-E+aura -A --hotedit \*[ellipsis]\(rq+to preserve your environment.+.+To always allow environment variables to be passed,+have a look at the+.IR env_reset " and " env_keep+options in+.BR sudoers (5).+.+.TP+.B \-\-skipdepcheck+.+Perform no dependency solving.+.+Consider this when using+.B \-\-hotedit+to avoid building annoying dependencies that aren't necessary for your special+use-case.+.+.TP+.BI \-\-vcspath " path"+.+Save the cloned sources of VCS packages (i.e.\& those that end in+.IR *-git ,+etc.) in the given+.IR path ,+instead of the default+.IR /var/cache/aura/vcs/ .+.+.SH GLOBAL PACKAGE STATE OPTIONS (\fR\-B\fP)+.+.TP+.BR \-c ", " \-\-clean \c+.I " states-to-retain+.+Retains a given number of the most recently saved package states and removes the+rest.+.+.TP+.BR \-r ", " \-\-restore+.+Restores a record kept with+.BR \-B .+.+Attempts to downgrade any packages that were upgraded since the chosen save.+.+Will remove any that weren't installed at the time.+.+.TP+.BR \-l ", " \-\-list+.+Show all saved package state filenames.+.+.SH DOWNGRADE OPTIONS (\fR\-C\fP)+.+.TP+.BR \-b ", " \-\-backup \c+.I " path+.+Backup the package cache to a given directory.+.+The given directory must already exist.+.+During copying, progress will be shown.+.+If the copy takes too long,+you may want to reduce the number of older versions of each package by using+.BR \-Cc .+.+.TP+.BR \-c ", " \-\-clean \c+.I " versions-to-retain+.+Retains a given number of package versions for each package,+and deletes the rest from the package cache.+.+Count is made from the most recent version, so using:+.+.RSAMPLE+aura -Cc 3+.ERSAMPLE+.+.IP+would save the three most recent versions of each package file.+.+Giving the number 0 as an argument is identical to+.BR \-Scc .+.+.TP+.B \-\-notsaved+.+Remove only those package files which are not saved in a package record (a la+.BR \-B ).+.+.TP+.BR \-s ", " \-\-search \c+.I " regex+.+Search the package cache via a+.IR regex .+.+Any package name that matches the regex will be output as-is.+.+.SH LOGFILE OPTIONS (\fR\-L\fP)+.+.TP+.BR \-i ", " \-\-info " \*[packages]"+.+Displays install/upgrade history for given+.IR packages .+.+Under the \(lqRecent Actions\(rq section,+only the last five entries will be displayed.+.+If there are less than five actions ever performed with the package,+what is available will be printed.+.+.TP+.BR \-s ", " \-\-search \c+.I " regex+.+Search the pacman log file via a+.IR regex .+.+Useful for singling out any and all actions performed on a package.+.+.SH ORPHAN PACKAGE OPTIONS (\fR\-O\fP)+.+.TP+.BR \-a ", " \-\-adopt " \*[packages]"+.+Mark+.I packages+as being explicitly installed (i.e.\& it's not a dependency).+.+.TP+.BR \-j ", " \-\-abandon+.+Uninstall all orphan packages.+.+.SH ANALYSIS OPTIONS (\fR\-P\fP)+.+.TP+.BR \-f ", " \-\-file \c+.I " path+.+Analyse a PKGBUILD at the specified+.IR path .+.+.TP+.BR \-d ", " \-\-dir \c+.I " path+.+Analyse a+.IR path /PKGBUILD+found in the specified directory.+.+.TP+.BR \-a ", " \-\-audit+.+Analyse the PKGBUILDs of all locally installed AUR packages.+.+.SH PACMAN / AURA DUAL FUNCTIONALITY OPTIONS+.+.TP+.B \-\-noconfirm+.+Never ask for any Aura or Pacman confirmation.+.+Any time a prompt would appear,+say before building or installation,+it is assumed the user answered in whatever way would progress the program.+.+.TP+.B \-\-needed+.+Don't rebuild/reinstall packages that are already up to date.+.+.TP+.B \-\-debug+.+View some handy debugging information.+.+.TP+.BI \-\-color " when"+.+Specify when to enable colouring.+.+Without this flag, both Aura and Pacman will attempt to colour text if the+terminal allows it.+.+Otherwise, you can pass+.BR always " or " never+to be specific about your wants.+.+.TP+.BI \-\-overwrite " glob"+.+If there are file conflicts during installation,+overwrite conflicting files that match the given+.I glob+pattern.+.+.SH EXPOSED MAKEPKG OPTIONS+.+.TP+.B \-\-ignorearch+.+Ignores processor architecture when building packages.+.+.TP+.B \-\-allsource+.+Creates a+.I .src+file containing all the downloaded sources (code, etc.\&)+and stores it at+.IR /var/cache/aura/src/ .+.+To change the location where sources are stored,+use the+.B \-\-allsourcepath+flag on command line or via+.BR aura.conf (5).+.+.TP+.B \-\-skipinteg+.+Skip package source integrity checks (hash sums).+.+.TP+.B \-\-skippgpcheck+.+Skip all PGP checks.+.+.SH LANGUAGE OPTIONS+.+Aura is available in multiple languages.+.+As options, they can be used with either their English names or their real+names written in their native characters.+.+The available languages are, in option form:+.+.TS \" Tab-separated+l l.+\fB\-\-english\fP	(default)+\fB\-\-japanese\fP	\fB\-\-日本語\fP+\fB\-\-polish\fP	\fB\-\-polski\fP+\fB\-\-croatian\fP	\fB\-\-hrvatski\fP+\fB\-\-swedish\fP	\fB\-\-svenska\fP+\fB\-\-german\fP	\fB\-\-deutsch\fP+\fB\-\-spanish\fP	\fB\-\-español\fP+\fB\-\-portuguese\fP	\fB\-\-português\fP+\fB\-\-french\fP	\fB\-\-français\fP+\fB\-\-russian\fP	\fB\-\-русский\fP+\fB\-\-italian\fP	\fB\-\-italiano\fP+\fB\-\-serbian\fP	\fB\-\-српски\fP+\fB\-\-norwegian\fP	\fB\-\-norsk\fP+\fB\-\-indonesian\fP+\fB\-\-chinese\fP	\fB\-\-中文\fP+\fB\-\-esperanto\fP+\fB\-\-dutch\fP	\fB\-\-nederlands\fP+\fB\-\-romanian\fP	\fB\-\-română\fP+\fB\-\-vietnamese\fP+\fB\-\-czech\fP	\fB\-\-čeština\fP+.TE+.+.SH PRO TIPS+.+.IP \(bu 2n+.+If you build a package and then choose not to install it,+the built package file will still be moved to the cache.+You can then install it whenever you want with+.BR \-C .+.+.IP \(bu 2n+.+Research packages using+.BR \-Ad \ ( \-\-deps ),+.BR \-Ai \ ( \-\-info )+and+.BR \-Ap \ ( \-\-pkgbuild )!+.+.IP \(bu 2n+.+When upgrading, use+.B \-Akua+instead of just+.BR \-Au .+.+This will remove make deps, as well as show PKGBUILD diffs before building.+.+.SH SEE ALSO+.+.BR aura.conf (5),+.BR pacman (8),+.BR pacman.conf (5),+.BR makepkg (8)+.+.SH BUGS+.+It is not recommended to install non-AUR packages with pacman or aura.+.+Aura will assume they are AUR packages during a+.B \-Au+and attempt to upgrade them.+.+If a name collision occurs (that is, if there is a legitimate AUR package with+the same name as the one you installed) previous installations could be+overwritten.+.+.SH AUTHOR+.+Colin Woodbury <colin@fosskers.ca>+.+.SH CONTRIBUTORS+.+.TS \" Tab-separated+l .+Chris Warrick+Brayden Banks+Denis Kasak+Edwin Marshall+Jimmy Brisson+Kyle Raftogianis+Nicholas Clarke+.TE+.+.SH TRANSLATORS+.+.TS \" Tab-separated+c l .+Polish	Chris Warrick and Michał Kurek+Croatian	Denis Kasak and "stranac"+Swedish	Fredrik Haikarainen and Daniel Beecham+German	Lukas Niederbremer+Spanish	Alejandro Gómez, Sergio Conde, and Max Ferrer+Portuguese	Henry Kupty, Thiago Perrotta, and Wagner Amaral+French	Ma Jiehong and Fabien Dubosson+Russian	Kyrylo Silin and Alexey Kotlyarov+Italian	Bob Valantin and Cristian Tentella+Serbian	Filip Brcic+Norwegian	"chinatsun"+Indonesian	"pak tua Greg"+Chinese	Kai Zhang+Japanese	Onoue Takuro and Colin Woodbury+Esperanto	Zachary Matthews+Dutch	Joris Blanken and Heimen Stoffels+Turkish	Cihan Alkan+Arabic	"Array in a Matrix"+Ukrainian	Andriy Cherniy+Romanian	"90" and "benone"+Vietnamese	"Kritiqual"+Czech	Daniel Rosel+Korean	"Nioden"+.TE
+ misc/aura.conf view
@@ -0,0 +1,68 @@+# --- Aura Config --- #+#+# Template updated on: Mon 11 May 2020+#+# You can uncomment the various settings below in order to activate them.+# Otherwise, Aura will use its internal defaults.++# --- Language --- #+# Aura can be used in different human languages. This field must be a 2-letter+# language code, similar to those used in LOCALE. The available codes are:+#+# |------+------------|+# | Code | Language   |+# |------+------------|+# | nl   | Dutch      |+# | en   | English    |+# | de   | German     |+# | nb   | Norwegian  |+# | sv   | Swedish    |+# |------+------------|+# | fr   | French     |+# | it   | Italian    |+# | pt   | Portuguese |+# | es   | Spanish    |+# | ro   | Romanian   |+# |------+------------|+# | ar   | Arabic     |+# |------+------------|+# | hr   | Croatian   |+# | cs   | Czech      |+# | pl   | Polish     |+# | ru   | Russian    |+# | sr   | Serbian    |+# | uk   | Ukrainian  |+# |------+------------|+# | zh   | Chinese    |+# | id   | Indonesian |+# | ja   | Japanese   |+# | vi   | Vietnamese |+# |------+------------|+# | eo   | Esperanto  |+# |------+------------|++# Uncomment to activate:+# language = en++# --- Build Settings --- #+# Aura runs via `sudo` but builds packages as the underlying non-root user.+# Here, you can alter who that user is, and where packages are built.++# Uncomment to activate:+# user = YOU+# buildpath = /tmp+# allsourcepath = /var/cache/aura/src+# vcspath = /var/cache/aura/vcs++# --- PKGBUILD Analysis --- #+# Aura automatically scans PKGBUILDs for malicious bash usage and other "bad+# practices". Here, you can turn those scans off.++# Uncomment to activate:+# analyse = True++# --- Misc. --- #++# The editor to use with `--hotedit`.+# Uncomment to activate:+# editor = vi
+ misc/aura.conf.5 view
@@ -0,0 +1,150 @@+'\" t+.\" Man page for `aura.conf`+.\" Written by Colin Woodbury <colin@fosskers.ca>+.+.TH aura.conf 5 "2021 January" "Aura" "Aura Manual"+.+.de SAMPLE      \" Indented example - on its own paragraph.+.  P+.  RS+.  EX+..+.de ESAMPLE     \" End of Indented example.+.  EE+.  RE+..+.de RSAMPLE     \" Relative sample - even more indented example.+.  RS+.  SAMPLE+..+.de ERSAMPLE    \" End of Relative sample.+.  ESAMPLE+.  RE+..+.+.SH NAME+.+aura.conf \- aura package manager configuration file+.+.SH SYNOPSIS+.+/etc/aura.conf+.+.SH DESCRIPTION+.+Aura can be configured at runtime by commandline flags,+but for users who use the same options all the time+(say, build paths or language flags) this can be verbose.+.I aura.conf+lets you make these common settings permanent.+.+.SH EXAMPLE+.+Overview of options in+.IR aura.conf :+.+.SAMPLE+#+# aura.conf+#++#[ Language ]+language = en++#[ Build Settings ]+user = <you>+buildpath = /tmp+vcspath = /var/cache/aura/vcs++#[ Misc. ]+editor = vi+.ESAMPLE+.+.SH OPTIONS+.+.TP+.B language+.+Aura can be used in different human languages.+This field must be a 2-letter language code,+similar to those used in LOCALE.+The available codes are:+.+.TS \" Tab-separated+box;+l l.+Code	Language++nl	Dutch+en	English+de	German+nb	Norwegian+sv	Swedish++fr	French+it	Italian+pt	Portuguese+es	Spanish+ro	Romanian++hr	Croatian+cs	Czech+pl	Polish+ru	Russian+sr	Serbian+uk	Ukrainian++ar	Arabic++zh	Chinese+id	Indonesian+ja	Japanese+vi	Vietnamese++eo	Esperanto+.TE+.+.TP+.B user+.+The real, non-sudo user to build packages as.+.+.TP+.B buildpath+.+The location on the filesystem in which to build packages.+.+.TP+.B allsourcepath+.+The location on the filesystem in which to save "source packages" built with+.BR \-\-allsource .+.+.TP+.B vcspath+.+The location on the filesystem in which to store the cloned repositories of+\fI*-git\fR, etc., packages.+.+.TP+.B analyse+.+Aura automatically scans PKGBUILDs for malicious bash usage+and other "bad practices".+Set this to+.B False+to turn off.+.+.TP+.B editor+.+The editor to use during+.BR \-\-hotedit .+.+.SH SEE ALSO+.+.BR aura (8)+.+.SH AUTHOR+.+Colin Woodbury <colin@fosskers.ca>
+ misc/completions/_aura view
@@ -0,0 +1,590 @@+#compdef aura++# Zsh completion file for Aura, based on pacman's+# copy this file to /usr/share/site-functions/_aura++typeset -A opt_args+setopt extendedglob++# options for passing to _arguments: main aura commands+_aura_opts_commands=(+    {-A,--aursync}'[Install and manage AUR packages]'+    {-B,--save}'[Manage the global package state]'+    {-C,--downgrade}'[Manage the package cache]'+    {-L,--viewlog}'[Analyse the pacman log file]'+    {-M,--abssync}'[Build and install from the ABS tree]'+    {-O,--orphans}'[Manage orphan packages]'+    {-Q,--query}'[Query the package database]'+    {-R,--remove}'[Remove a packags]'+    {-S,--sync}'[Synchronize repo packages]'+    {-U,--upgrade}'[Upgrade packages]'+    {-V,--version}'[Display version information]'+    '--viewconf[View the pacman config file read-only]'+    '--languages[Display available output languages]'+    '(-h --help)'{-h,--help}'[Help message]'+)++# options for passing to _arguments: options common to all commands+_aura_opts_common=(+    {-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'+    '--debug[Display debug messages]'+    '--gpgdir[Set an alternate home directory for GnuPG]:_files -/'+    '--logfile[An alternate log file]:config file:_files'+    '--noconfirm[Do not ask for confirmation]'+    '--no-pp[Do not use powerpill]'+    '--noprogressbar[Do not show a progress bar when downloading files]'+    '--noscriptlet[Do not execute the install scriptlet if one exists]'+    '--print[Only print the targets instead of performing the operation]'+)++# options for passing to _arguments: options for --upgrade commands+_aura_opts_pkgfile=(+    '*-d[Skip dependency checks]'+    '*--nodeps[Skip dependency checks]'+    '--dbonly[Only remove database entry, do not remove files]'+    '--force[Overwrite conflicting files]'+    '--needed[Do not reinstall up to date packages]'+    '*:package file:_files -g "*.pkg.tar*~*.sig(.,@)"'+)++# options for passing to _arguments: subactions for --query command+_aura_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+_aura_opts_query_modifiers=(+    {-c,--changelog}'[List package changelog]'+    {-d,--deps}'[List packages installed as dependencies]'+    {-e,--explicit}'[List packages explicitly installed]'+    {\*-i,\*--info}'-i[View package information]'+    #'-ii[View package information including backup files]'+    {\*-k,\*--check}'[Check package files]'+    {-l,--list}'-l[List package contents]'+    {-m,--foreign}'-m[List installed packages not found in sync db(s)]'+    {-n,--native}'[List installed packages found in sync db(s)]'+    {-q,--quiet}'[Display less information for certain operations.]'+    {-t,--unrequired}'[List packages not required by any package]'+    {-u,--upgrades}'[List packages that can be upgraded]'+)++# options for passing to _arguments: options for --remove command+_aura_opts_remove=(+    {-c,--cascade}'[Remove all dependent packages]'+    {*-d,*--nodeps}'[Skip dependency checks]'+    {-n,--nosave}'[Remove protected configuration files]'+    {\*-s,\*--recursive}'[Remove dependencies not required by other packages]'+    '--dbonly[Only remove database entry, do not remove files]'+    '*:installed package:_aura_completions_installed_packages'+)++# options for passing to _arguments: options for commands dealing with the database+_aura_opts_database=(+    '--asdeps[mark packages as non-explicitly installed]'+    '--asexplicit[mark packages as explicitly installed]'+    '*:installed package:_aura_completions_installed_packages'+)++# options for passing to _arguments: options for --sync command+_aura_opts_sync_actions=(+    '(-S --sync)'{-S,--sync}+    {\*-c,\*--clean}'[Remove old packages from cache]:\*:clean:->sync_clean'+    #'*-cc[Remove all 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+_aura_opts_sync_modifiers=(+    {\*-d,\*--nodeps}'[Skip dependency checks]'+    {\*-i,\*--info}'[View package information]'+    {-l,--list}'[List all packages in a repository]'+    {-p,--print}'[Print download URIs for each package to be installed]'+    {\*-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: _aura_completions_all_packages'+    '*--ignoregroup[Ignore a group upgrade]:package group:_aura_completions_all_groups'+    '--asdeps[Install packages as non-explicitly installed]'+    '--asexplicit[Install packages as explicitly installed]'+    '--force[Overwrite conflicting files]'++    #'-q[Display less information for certain operations.]'+)++# options for passing to _arguments: options for --aursync command+_aura_opts_aursync_actions=(+    '(-A --aursync)'{-A,--aursync}+    {-p,--pkgbuild}'[Display an AUR package''s PKGBUILD]'+    {-s,--search}'[Search AUR package names and descriptions]'+    {-w,--downloadonly}'[Download an AUR package''s source tarball]'+)++# options for passing to _arguments: options for --aursync command+_aura_opts_aursync_modifiers=(+    {-a,--delmakedeps}'[Uninstall unneeded build deps after installation]'+    {-d,--deps}'[Display package dependencies. Recursive for AUR packages]'+    {\*-i,\*--info}'[Display AUR package information]'+    {-k,--diff}'[Show PKGBUILD diffs when upgrading]'+    {-u,--sysupgrade}'[Upgrade all installed AUR packages]'+    {-x,--unsuppress}'[Unsuppress makepkg output during building]'+    '*--aurignore[Ignore AUR packages when installing]:package: _aura_completions_aur_packages'+    '--build[Build packages in specified path]'+    '--builduser[Use specified user to build packages]'+    {--dev,--devel}'[With -Au, also upgrades all development packages]'+    "--dryrun[Perform checks, but don't build]"+    '--hotedit[Prompt user to edit PKGBUILD before dep checks]'+    '--ignorearch[makepkg will ignore processor architecture]'+)++# options for passing to _arguments: options for --save commands+_aura_opts_save=(+    {-c,--clean}'[Given n, save n recent package states and remove the rest]'+    {-r,--restore}'[Restore a previously saved package state]'+)++# options for passing to _arguments: options for --downgrade commands+_aura_opts_downgrade=(+    {-b,--backup}'[Backup the cache to a given directory]'+    {-c,--clean}'[Given n, save n versions of each package file]'+    {-s,--search}'[Search the cache via a regex]'+    '*:installed package:_aura_completions_installed_packages'+)++# options for passing to _arguments: options for --viewlog commands+typeset -a _aura_opts_viewlog+_aura_opts_viewlog=(+    '-i[View package installation history.]'+    '-s[Search log file via a regex.]'+)++# options for passing to _arguments: options for --orphans commands+typeset -a _aura_opts_orphans+_aura_opts_orphans=( '-j[Uninstall all orphan packages.]' )++# handles --help subcommand+_aura_action_help() {+    _arguments -s : \+        "$_aura_opts_commands[@]"+}++# handles cases where no subcommand has yet been given+_aura_action_none() {+    _arguments -s : \+        "$_aura_opts_commands[@]"+}++# handles --query subcommand+_aura_action_query() {+    local context state line+    typeset -A opt_args++    case $state in+        query_file)+            _arguments -s : \+                "$_aura_opts_common[@]" \+                "$_aura_opts_query_modifiers[@]" \+                '*:package file:_files -g "*.pkg.tar*~*.sig(.,@)"'+            ;;+        query_group)+            _arguments -s : \+                "$_aura_opts_common[@]" \+                "$_aura_opts_query_modifiers[@]" \+                '*:groups:_aura_completions_installed_groups'+            ;;+        query_owner)+            _arguments -s : \+                "$_aura_opts_common[@]" \+                "$_aura_opts_query_modifiers[@]" \+                '*:file:_files'+            ;;+        query_search)+            _arguments -s : \+                "$_aura_opts_common[@]" \+                "$_aura_opts_query_modifiers[@]" \+                '*:search text: '+            ;;+        *)+            _arguments -s : \+                "$_aura_opts_common[@]" \+                "$_aura_opts_query_actions[@]" \+                "$_aura_opts_query_modifiers[@]" \+                '*:package:_aura_completions_installed_packages'+            ;;+    esac+}++# handles --remove subcommand+_aura_action_remove() {+    _arguments -s : \+        '(--remove -R)'{-R,--remove} \+        "$_aura_opts_common[@]" \+        "$_aura_opts_remove[@]"+}++# handles --database subcommand+_aura_actions_database() {+    _arguments -s : \+        '(--database -D)'{-D,--database} \+        "$_aura_opts_common[@]" \+        "$_aura_opts_database[@]"+}++# handles --deptest subcommand+_aura_action_deptest() {+    _arguments -s : \+        '(--deptest)-T' \+        "$_aura_opts_aura_common[@]" \+        ":packages:_aura_all_packages"+}++# handles --sync subcommand+_aura_action_sync() {+    local context state line+    typeset -A opt_args++    case $state in+        sync_clean)+            _arguments -s : \+                {\*-c,\*--clean}'[Remove old packages from cache]'+                "$_aura_opts_common[@]" \+                "$_aura_opts_sync_modifiers[@]" \+                ;;+        sync_group)+            _arguments -s : \+                "$_aura_opts_common[@]" \+                "$_aura_opts_sync_modifiers[@]" \+                '(-g --group)'{-g,--groups} \+                '*:package group:_aura_completions_all_groups'+            ;;+        sync_search)+            _arguments -s : \+                "$_aura_opts_common[@]" \+                "$_aura_opts_sync_modifiers[@]" \+                '*:search text: '+            ;;+        *)+            _arguments -s : \+                "$_aura_opts_common[@]" \+                "$_aura_opts_sync_actions[@]" \+                "$_aura_opts_sync_modifiers[@]" \+                '*:package:_aura_completions_repo_packages'+            ;;+    esac+}++# handles --upgrade subcommand+_aura_action_upgrade() {+    _arguments -s : \+        '(-U --upgrade)'{-U,--upgrade} \+        "$_aura_opts_common[@]" \+        "$_aura_opts_pkgfile[@]"+}++# handles --version subcommand+_aura_action_version() {+    # no further arguments+    return 0+}++# provides completions for package groups+_aura_completions_all_groups() {+    local -a cmd groups+    _aura_get_command+    groups=( $(_call_program groups $cmd[@] -Sg) )+    typeset -U groups+    compadd "$@" -a groups+}++# provides completions for packages available from repositories+# these can be specified as either 'package' or 'repository/package'+_aura_completions_repo_packages() {+    local -a cmd packages repositories packages_long+    _aura_get_command++    if compset -P '*/'; then+        packages=( $(_call_program packages $cmd[@] -Sql ${words[CURRENT]%/*}) )+        typeset -U packages+        _wanted repo_packages expl "repository/package" compadd ${(@)packages}+    else+        packages=( $(_call_program packages $cmd[@] -Sql) )+        typeset -U packages+        _wanted packages expl "packages" compadd - "${(@)packages}"++        repositories=( aur ${(o)${${${(M)${(f)"$(</etc/pacman.conf)"}:#\[*}/\[/}/\]/}:#options} )+        typeset -U repositories+        _wanted repo_packages expl "repository/package" compadd -S "/" $repositories+    fi+}++# provides completions for packages in the AUR+_aura_completions_aur_packages() {+    local -a cmd packages repositories packages_long+    _aura_get_command++    packages=()+    if [[ -d /var/aur ]]; then+        packages=( $(ls /var/aur) )+    fi+    typeset -U packages+    _wanted aur_packages expl "packages" compadd - "${(@)packages}"+}++# provides completions for packages available from repositories and the AUR+# these can be specied as either 'package' or 'repository/package'+_aura_completions_all_packages() {+    _alternative : \+        'aurpkgs:aur packages:_aura_completions_aur_packages' \+        'repopkgs:repository packages:_aura_completions_repo_packages'+}++_aura_all_packages() {+    _alternative : \+        'localpkgs:local packages:_aura_completions_installed_packages' \+        'aurpkgs:aur packages:_aura_completions_aur_packages' \+        'repopkgs:repository packages:_aura_completions_repo_packages'+}++# provides completions for package groups+_aura_completions_installed_groups() {+    local -a cmd groups+    _aura_get_command+    groups=(${(o)${(f)"$(_call_program groups $cmd[@] -Qg)"}% *})+    typeset -U groups+    compadd "$@" -a groups+}++# provides completions for installed packages+_aura_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+}++# provides completions for repository names+_aura_completions_repositories() {+    local -a cmd repositories+    repositories=(${(o)${${${(M)${(f)"$(</etc/pacman.conf)"}:#\[*}/\[/}/\]/}:#options})+    # 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+_aura_get_command() {+    # this is mostly nicked from _perforce+    cmd=( "aura" "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+}++_aura_comp() {+    local -a args cmds+    local tmp+    args=( ${${${(M)words:#-*}#-}:#-*} )+    _message 'now what'+    for tmp in $words; do+        cmds+=("${${_aura_opts_commands[(r)*$tmp\[*]%%\[*}#*\)}")+    done+    case $args in #$words[2] in+        h*)+            if (( ${(c)#args} <= 1 && ${(w)#cmds} <= 1 )); then+                _aura_action_help+            else+                _message "no more arguments"+            fi+            ;;+        *h*)+            _message "no more arguments"+            ;;+        D*)+            _aura_action_database+            ;;+        Q*g*) # ipkg groups+            _arguments -s : \+                "$_aura_opts_common[@]" \+                "$_aura_opts_query_modifiers[@]" \+                '*:groups:_aura_completions_installed_groups'+            ;;+        Q*o*) # file+            _arguments -s : \+                "$_aura_opts_common[@]" \+                "$_aura_opts_query_modifiers[@]" \+                '*:package file:_files'+            ;;+        Q*p*) # file *.pkg.tar.*+            _arguments -s : \+                "$_aura_opts_common[@]" \+                "$_aura_opts_query_modifiers[@]" \+                '*:package file:_files -g "*.pkg.tar*~*.sig(.,@)"'+            ;;+        T*)+            _aura_action_deptest+            ;;+        Q*)+            _aura_action_query+            ;;+        R*)+            _aura_action_remove+            ;;+        S*c*)+            _arguments -s : \+                '(-S --sync)'{-S,--sync} \+                '(-c --clean)'{\*-c,\*--clean}'[Remove all files from the cache]' \+                "$_aura_opts_common[@]"+            ;;+        S*l*) # repos+            _arguments -s : \+                "$_aura_opts_common[@]" \+                "$_aura_opts_sync_modifiers[@]" \+                '*:package repo:_aura_completions_repositories' \+                ;;+        S*g*) # pkg groups+            _arguments -s : \+                "$_aura_opts_common[@]" \+                "$_aura_opts_sync_modifiers[@]" \+                '*:package group:_aura_completions_all_groups'+            ;;+        S*s)+            _arguments -s : \+                "$_aura_opts_common[@]" \+                "$_aura_opts_sync_modifiers[@]" \+                '*:search text: '+                ;;+        S*)+            _aura_action_sync+            ;;+        U*)+            _aura_action_upgrade+            ;;+        V*)+            _aura_action_version+            ;;+        A*)+            _arguments -s : \+                "$_aura_opts_common[@]" \+                "$_aura_opts_aursync_modifiers[@]" \+                "$_aura_opts_aursync_actions[@]" \+                '*:package:_aura_completions_aur_packages'+                ;;+        B*)+            _arguments -s : \+                '(-B --save)'{-B,--save} \+                "$_aura_opts_common[@]" \+                "$_aura_opts_save[@]"+      ;;+        C*)+            _arguments -s : \+                '(-C --downgrade)'{-C,--downgrade} \+                "$_aura_opts_common[@]" \+                "$_aura_opts_downgrade[@]"+            ;;+        L*)+            _arguments -s : \+                '(-L --viewlog)'{-L,--viewlog} \+                "$_aura_opts_common[@]" \+                "$_aura_opts_viewlog[@]"+            ;;+        M*)+            _arguments -s : \+                '(-M --abssync)'{-M,--abssync} \+                "$_aura_opts_common[@]"+            ;;+        O*)+            _arguments -s : \+                '(-O --orphans)'{-O,--orphans} \+                "$_aura_opts_common[@]" \+                "$_aura_opts_orphans[@]"+            ;;+        *)+            case ${(M)words:#--*} in+                *--help*)+                    if (( ${(W)#cmds} == 1 )); then+                        _aura_action_help+                    else+                        return 0+                    fi+                    ;;+                *--sync*)+                    _aura_action_sync+                    ;;+                *--query*)+                    _aura_action_query+                    ;;+                *--remove*)+                    _aura_action_remove+                    ;;+                *--deptest*)+                    _aura_action_deptest+                    ;;+                *--database*)+                    _aura_action_database+                    ;;+                *--version*)+                    _aura_action_version+                    ;;+                *--upgrade*)+                    _aura_action_upgrade+                    ;;++                *--aursync*)+                    _arguments -s : \+                        "$_aura_opts_common[@]" \+                        "$_aura_opts_aursync_modifiers[@]" \+                        "$_aura_opts_aursync_actions[@]" \+                        '*:package:_aura_completions_aur_packages'+                    ;;+                *--save*)+                    _arguments -s : \+                        '(-B --save)'{-B,--save} \+                        "$_aura_opts_common[@]" \+                        "$_aura_opts_save[@]"+                    ;;+                *--downgrade*)+                    _arguments -s : \+                        '(-C --downgrade)'{-C,--downgrade} \+                        "$_aura_opts_common[@]" \+                        "$_aura_opts_downgrade[@]"+                    ;;+                *--viewlog*)+                    _arguments -s : \+                        '(-L --viewlog)'{-L,--viewlog} \+                        "$_aura_opts_common[@]" \+                        "$_aura_opts_viewlog[@]"+                    ;;+                *--orphans*)+                    _arguments -s : \+                        '(-O --orphans)'{-O,--orphans} \+                        "$_aura_opts_common[@]" \+                        "$_aura_opts_orphans[@]"+                    ;;+                *)+                    _aura_action_none+                    ;;+            esac+            ;;+    esac+}++# run the main dispatcher+_aura_comp "$@"
+ misc/completions/bashcompletion.sh view
@@ -0,0 +1,104 @@+# This file is in the public domain.++_aura_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+}++_aura_ptr2comp() {+  local list= x y+  for x; do+    for y in '0 --' '1 -'; do+      eval 'set -- ${'$x'[${y% *}]}'+      list+=\ ${@/#/${y#* }}+    done+  done+  _aura_compgen $list+}++_aura_incomp() {+  local r="[[:space:]]-(-${1#* }[[:space:]]|[[:alnum:]_]*${1% *})"; [[ $COMP_LINE =~ $r ]]+}++_aura_pkg() {+  _aura_compgen "$(+    if [[ $2 ]]; then+      \pacman -$1 2>/dev/null | \cut -d' ' -f1 | \sort -u+    else+      \pacman -$1 2>/dev/null+    fi+  )"+}++_aura_repo_list() {+  _aura_compgen "$(pacman-conf --repo-list)"+}++_aura() {+  compopt -o default+  local common core database files query remove sync upgrade o+  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' 'c n p s u')+  sync=('asdeps asexplicit clean dbonly downloadonly 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 needed nodeps assume-installed print recursive' 'p')+  common=('arch cachedir color config confirm dbpath debug gpgdir help hookdir logfile+           noconfirm noprogressbar noscriptlet quiet root verbose' 'b d h q r v')+  core=('aursync save downgrade database files viewlog help orphans analysis query remove sync upgrade version' 'A B C D F L O P Q R S U V h')++  for o in 'D database' 'F files' 'Q query' 'R remove' 'S sync' 'U upgrade'; do+    _aura_incomp "$o" && break+  done++  if [[ $? != 0 ]]; then+    _aura_ptr2comp core+  elif [[ ! $prev =~ ^-[[:alnum:]_]*[Vbhr] &&+    ! $prev = --@(cachedir|color|config|dbpath|help|hookdir|gpgdir|logfile|root|version) ]]+  then+    [[ $cur = -* ]] && _aura_ptr2comp ${o#* } common ||+      case ${o% *} in+      # Pacman Commands+      D|R)+          _aura_pkg Qq;;+      F)+        { _aura_incomp 'l list'   && _aura_pkg Slq ; }       ||+          compopt +o default;;+      Q)+        { _aura_incomp 'g groups' && _aura_pkg Qg sort; }    ||+        { _aura_incomp 'p file'   && _aura_file; }           ||+        { _aura_incomp 's search' && compopt +o default; }     ||+        { _aura_incomp 'u upgrades' && compopt +o default; }   ||+          _aura_incomp 'o owns'   ||+          _aura_pkg Qq;;+      S)+        { _aura_incomp 'g groups' && _aura_pkg Sg; }      ||+        { _aura_incomp 'l list'   && _aura_repo_list; } ||+        { _aura_incomp 's search' && compopt +o default; }  ||+          _aura_pkg Slq;;+      U)+          _aura_file;;+      esac+  fi+  true+}++_aura_file() {+  compopt -o filenames; _filedir 'pkg.tar*'+}++complete -F _aura aura++# ex:et ts=2 sw=2 ft=sh
test/Test.hs view
@@ -1,4 +1,5 @@ {-# LANGUAGE OverloadedLists #-}+{-# LANGUAGE TemplateHaskell #-}  module Main ( main ) where @@ -32,28 +33,28 @@     , testCase "parseDep - python2-lxml>=3.1.0" $ do         let pn = "python2-lxml>=3.1.0"             p = parseDep pn-        p @?= Just (Dep "python2-lxml" . AtLeast . Ideal $ SemVer 3 1 0 [] Nothing)+        p @?= Just (Dep "python2-lxml" $ AtLeast $(versioningQ "3.1.0"))         fmap renderedDep p @?= Just pn     , testCase "parseDep - foobar>1.2.3" $ do         let pn = "foobar>1.2.3"             p = parseDep pn-        p @?= Just (Dep "foobar" . MoreThan . Ideal $ SemVer 1 2 3 [] Nothing)+        p @?= Just (Dep "foobar" $ MoreThan $(versioningQ "1.2.3"))         fmap renderedDep p @?= Just pn     , testCase "parseDep - foobar=1.2.3" $ do         let pn = "foobar=1.2.3"             p = parseDep pn-        p @?= Just (Dep "foobar" . MustBe . Ideal $ SemVer 1 2 3 [] Nothing)+        p @?= Just (Dep "foobar" $ MustBe $(versioningQ "1.2.3"))         fmap renderedDep p @?= Just pn     ]   , testGroup "Aura.Types"     [ testCase "simplepkg"       $ simplepkg (fromJust $ packagePath "/var/cache/pacman/pkg/linux-is-cool-3.2.14-1-x86_64.pkg.tar.xz")-      @?= Just (SimplePkg "linux-is-cool" . Ideal $ SemVer 3 2 14 [[Digits 1]] Nothing)+      @?= Just (SimplePkg "linux-is-cool" $(versioningQ "3.2.14-1"))     , testCase "simplepkg'"-      $ simplepkg' "xchat 2.8.8-19" @?= Just (SimplePkg "xchat" . Ideal $ SemVer 2 8 8 [[Digits 19]] Nothing)+      $ simplepkg' "xchat 2.8.8-19" @?= Just (SimplePkg "xchat" $(versioningQ "2.8.8-19"))     ]   , testGroup "Aura.Packages.Repository"-    [ testCase "extractVersion" $ extractVersion firefox @?= Just (Ideal $ SemVer 60 0 2 [[Digits 1]] Nothing)+    [ testCase "extractVersion" $ extractVersion firefox @?= Just $(versioningQ "60.0.2-1")     ]   , testGroup "Aura.Pacman"     [ testCase "Parsing pacman.conf" $ do