14 Commits
v0.20 ... v0.23

Author SHA1 Message Date
kewl
eeca05b629 Merge pull request #21 from juergenhoetzel/check-for-fakeroot
makepkg: Check for "fakeroot" binary
2018-10-30 19:18:28 +00:00
Juergen Hoetzel
f92a1522a3 makepkg: Check for "fakeroot" binary 2018-10-30 16:50:07 +01:00
kewl fft
6f5a4f9b6d yay positionned #1 and comments refreshed 2018-10-13 12:01:48 +01:00
kewl
85f6d7c93f Merge pull request #19 from visibilityspots/master
Feature: use the skip_new_locations option for aurman wrapper
2018-08-21 21:18:42 +01:00
Jan Collijs
80279644a8 Feature: use the skip_new_locations option for aurman wrapper 2018-08-21 11:42:38 +02:00
kewl fft
3901eb7368 aur_only param added 2018-07-25 21:19:02 +01:00
kewl
9772b680dd Merge pull request #15 from visibilityspots/master
Aurman feature: fetch new pgp keys without interaction
2018-07-24 14:21:01 +01:00
Jan Collijs
349e237307 Aurman feature: fetch new pgp keys without interaction 2018-07-24 10:40:52 +02:00
kewl
3ebf634913 Merge pull request #14 from gliech/master
Skip the archlinux.org news in aurman
2018-07-17 11:11:37 +01:00
Der Gliech
5b4dd96294 added '--skip_news' to the options for aurman 2018-07-17 10:23:03 +02:00
kewl fft
2add192d89 upgrade yay in 2nd position 2018-07-06 22:15:26 +01:00
kewl fft
2f67cbcc9f yay needed option added 2018-07-06 22:12:28 +01:00
kewl fft
2df576955a Merge branch 'master' of github.com:kewlfft/ansible-aur 2018-06-16 09:30:49 +01:00
kewl fft
13a45e35a8 readme 2018-06-16 09:30:17 +01:00
2 changed files with 27 additions and 16 deletions

View File

@@ -2,13 +2,13 @@
Ansible module to use some Arch User Repository (AUR) helpers as well as makepkg.
The following helpers are supported and automatically selected in the order they are listed:
- [yay](https://github.com/Jguer/yay)
- [aurman](https://github.com/polygamma/aurman)
- [pacaur](https://github.com/rmarquis/pacaur)
- [trizen](https://github.com/trizen/trizen)
- [pikaur](https://github.com/actionless/pikaur)
- [yay](https://github.com/Jguer/yay)
makepkg will be used if no helper was found or if it's specified explicitly.
*makepkg* will be used if no helper was found or if it is explicitly specified.
- [makepkg](https://wiki.archlinux.org/index.php/makepkg)
## Options
@@ -16,9 +16,10 @@ makepkg will be used if no helper was found or if it's specified explicitly.
|--- |--- |--- |--- |---|
|name |no | | |Name or list of names of the package(s) to install or upgrade.|
|upgrade |no |no |yes, no |Whether or not to upgrade whole system.|
|use |no |auto |auto, aurman, pacaur, trizen, pikaur, yay, makepkg |The helper to use, 'auto' uses the first known helper found and makepkg as a fallback.|
|use |no |auto |auto, yay, aurman, pacaur, trizen, pikaur, makepkg |The helper to use, 'auto' uses the first known helper found and makepkg as a fallback.|
|skip_installed |no |no |yes, no |Skip operations if the package is present.|
|skip_pgp_check |no |no |yes, no |Skip verification of PGP signatures. This is useful when installing packages on a host without GnuPG (properly) configured. Only valid with makepkg.|
|aur_only |no |no |yes, no |Limit operation to the AUR. Compatible with yay, aurman, pacaur and trizen.|
### Note
* Either *name* or *upgrade* is required, both cannot be used together.
@@ -26,7 +27,7 @@ makepkg will be used if no helper was found or if it's specified explicitly.
* In the *use*=*auto* mode, makepkg is used as a fallback if no known helper is found.
## Installing
### aur-ansible-git AUR package
### AUR package
The [aur-ansible-git](https://aur.archlinux.org/packages/ansible-aur-git) package is available in the AUR.
Note the module is installed in `/usr/share/ansible/plugins/modules` which is one of the default module library paths.
@@ -38,8 +39,8 @@ git clone https://github.com/kewlfft/ansible-aur.git ~/.ansible/plugins/modules/
## Usage
### Note
* This module aims to cover the AUR, for package removal or system upgrade with the repositories, it is recommended to use the official *pacman* module,
* A package is reinstalled only if an update is available, using the *--needed* parameter, except for *yay* which does not support it and systematically reinstalls.
* This module aims to cover the AUR; for package removal or system upgrade with the repositories, it is recommended to use the official *pacman* module,
* A package is reinstalled only if an update is available, using the *--needed* parameter.
### Examples
Use it in a task, as in the following examples:

30
aur.py
View File

@@ -34,7 +34,7 @@ options:
description:
- The helper to use, 'auto' uses the first known helper found and makepkg as a fallback.
default: auto
choices: [ auto, aurman, pacaur, trizen, pikaur, yay, makepkg ]
choices: [ auto, yay, aurman, pacaur, trizen, pikaur, makepkg ]
skip_installed:
description:
@@ -49,6 +49,10 @@ options:
Only valid with makepkg.
type: bool
default: no
aur_only:
description:
- Limit operation to the AUR. Compatible with yay, aurman, pacaur and trizen.
notes:
- When used with a `loop:` each package will be processed individually,
it is much more efficient to pass the list directly to the `name` option.
@@ -72,14 +76,15 @@ EXAMPLES = '''
def_lang = ['env', 'LC_ALL=C']
use_cmd = {
'aurman': ['aurman', '-S', '--noconfirm', '--noedit', '--needed'],
'yay': ['yay', '-S', '--noconfirm', '--needed'],
'aurman': ['aurman', '-S', '--noconfirm', '--noedit', '--needed', '--skip_news', '--pgp_fetch', '--skip_new_locations'],
'pacaur': ['pacaur', '-S', '--noconfirm', '--noedit', '--needed'],
'trizen': ['trizen', '-S', '--noconfirm', '--noedit', '--needed'],
'pikaur': ['pikaur', '-S', '--noconfirm', '--noedit', '--needed'],
'yay': ['yay', '-S', '--noconfirm'],
'makepkg': ['makepkg', '--syncdeps', '--install', '--noconfirm', '--needed']
}
# optional: aurman, pacaur, trizen have a --aur option, do things only for aur
has_aur_option = ['yay', 'aurman', 'pacaur', 'trizen']
def package_installed(module, package):
@@ -120,6 +125,7 @@ def install_with_makepkg(module, package):
"""
Install the specified package with makepkg
"""
module.get_bin_path('fakeroot', required=True)
f = open_url('https://aur.archlinux.org/rpc/?v=5&type=info&arg={}'.format(package))
result = json.loads(f.read().decode('utf8'))
if result['resultcount'] != 1:
@@ -143,13 +149,13 @@ def install_with_makepkg(module, package):
return (rc, out, err)
def upgrade(module, use):
def upgrade(module, use, aur_only):
"""
Upgrade the whole system
"""
assert use in use_cmd
rc, out, err = module.run_command(def_lang + use_cmd[use] + ['-u'], check_rc=True)
rc, out, err = module.run_command(def_lang + use_cmd[use] + ['--aur' if (aur_only and use in has_aur_option) else None] + ['-u'], check_rc=True)
module.exit_json(
changed=not (out == '' or 'nothing to do' in out or 'No AUR updates found' in out),
@@ -158,7 +164,7 @@ def upgrade(module, use):
)
def install_packages(module, packages, use, skip_installed):
def install_packages(module, packages, use, skip_installed, aur_only):
"""
Install the specified packages
"""
@@ -174,7 +180,7 @@ def install_packages(module, packages, use, skip_installed):
if use == 'makepkg':
rc, out, err = install_with_makepkg(module, package)
else:
rc, out, err = module.run_command(def_lang + use_cmd[use] + [package], check_rc=True)
rc, out, err = module.run_command(def_lang + use_cmd[use] + ['--aur' if (aur_only and use in has_aur_option) else None] + [package], check_rc=True)
changed_iter = changed_iter or not (out == '' or '-- skipping' in out or 'nothing to do' in out)
@@ -213,6 +219,10 @@ def main():
'default': False,
'type': 'bool',
},
'aur_only': {
'default': False,
'type': 'bool',
},
},
required_one_of=[['name', 'upgrade']],
supports_check_mode=True
@@ -237,9 +247,9 @@ def main():
module.fail_json(msg="Upgrade cannot be used with this option.")
else:
if params['upgrade']:
upgrade(module, use)
upgrade(module, use, params['aur_only'])
else:
install_packages(module, params['name'], use, params['skip_installed'])
install_packages(module, params['name'], use, params['skip_installed'], params['aur_only'])
if __name__ == '__main__':