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. 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: 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) - [aurman](https://github.com/polygamma/aurman)
- [pacaur](https://github.com/rmarquis/pacaur) - [pacaur](https://github.com/rmarquis/pacaur)
- [trizen](https://github.com/trizen/trizen) - [trizen](https://github.com/trizen/trizen)
- [pikaur](https://github.com/actionless/pikaur) - [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) - [makepkg](https://wiki.archlinux.org/index.php/makepkg)
## Options ## 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.| |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.| |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_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.| |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 ### Note
* Either *name* or *upgrade* is required, both cannot be used together. * 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. * In the *use*=*auto* mode, makepkg is used as a fallback if no known helper is found.
## Installing ## 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. 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. 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 ## Usage
### Note ### 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, * 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. * A package is reinstalled only if an update is available, using the *--needed* parameter.
### Examples ### Examples
Use it in a task, as in the following examples: Use it in a task, as in the following examples:

30
aur.py
View File

@@ -34,7 +34,7 @@ options:
description: description:
- The helper to use, 'auto' uses the first known helper found and makepkg as a fallback. - The helper to use, 'auto' uses the first known helper found and makepkg as a fallback.
default: auto default: auto
choices: [ auto, aurman, pacaur, trizen, pikaur, yay, makepkg ] choices: [ auto, yay, aurman, pacaur, trizen, pikaur, makepkg ]
skip_installed: skip_installed:
description: description:
@@ -49,6 +49,10 @@ options:
Only valid with makepkg. Only valid with makepkg.
type: bool type: bool
default: no default: no
aur_only:
description:
- Limit operation to the AUR. Compatible with yay, aurman, pacaur and trizen.
notes: notes:
- When used with a `loop:` each package will be processed individually, - 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. 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'] def_lang = ['env', 'LC_ALL=C']
use_cmd = { 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'], 'pacaur': ['pacaur', '-S', '--noconfirm', '--noedit', '--needed'],
'trizen': ['trizen', '-S', '--noconfirm', '--noedit', '--needed'], 'trizen': ['trizen', '-S', '--noconfirm', '--noedit', '--needed'],
'pikaur': ['pikaur', '-S', '--noconfirm', '--noedit', '--needed'], 'pikaur': ['pikaur', '-S', '--noconfirm', '--noedit', '--needed'],
'yay': ['yay', '-S', '--noconfirm'],
'makepkg': ['makepkg', '--syncdeps', '--install', '--noconfirm', '--needed'] '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): def package_installed(module, package):
@@ -120,6 +125,7 @@ def install_with_makepkg(module, package):
""" """
Install the specified package with makepkg 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)) f = open_url('https://aur.archlinux.org/rpc/?v=5&type=info&arg={}'.format(package))
result = json.loads(f.read().decode('utf8')) result = json.loads(f.read().decode('utf8'))
if result['resultcount'] != 1: if result['resultcount'] != 1:
@@ -143,13 +149,13 @@ def install_with_makepkg(module, package):
return (rc, out, err) return (rc, out, err)
def upgrade(module, use): def upgrade(module, use, aur_only):
""" """
Upgrade the whole system Upgrade the whole system
""" """
assert use in use_cmd 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( module.exit_json(
changed=not (out == '' or 'nothing to do' in out or 'No AUR updates found' in out), 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 Install the specified packages
""" """
@@ -174,7 +180,7 @@ def install_packages(module, packages, use, skip_installed):
if use == 'makepkg': if use == 'makepkg':
rc, out, err = install_with_makepkg(module, package) rc, out, err = install_with_makepkg(module, package)
else: 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) 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, 'default': False,
'type': 'bool', 'type': 'bool',
}, },
'aur_only': {
'default': False,
'type': 'bool',
},
}, },
required_one_of=[['name', 'upgrade']], required_one_of=[['name', 'upgrade']],
supports_check_mode=True supports_check_mode=True
@@ -237,9 +247,9 @@ def main():
module.fail_json(msg="Upgrade cannot be used with this option.") module.fail_json(msg="Upgrade cannot be used with this option.")
else: else:
if params['upgrade']: if params['upgrade']:
upgrade(module, use) upgrade(module, use, params['aur_only'])
else: 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__': if __name__ == '__main__':