|
|
@ -79,6 +79,7 @@ EXAMPLES = '''
|
|
|
|
import json
|
|
|
|
import json
|
|
|
|
import shlex
|
|
|
|
import shlex
|
|
|
|
import os
|
|
|
|
import os
|
|
|
|
|
|
|
|
import re
|
|
|
|
import sys
|
|
|
|
import sys
|
|
|
|
|
|
|
|
|
|
|
|
PACMAN_PATH = "/usr/bin/pacman"
|
|
|
|
PACMAN_PATH = "/usr/bin/pacman"
|
|
|
@ -130,15 +131,20 @@ def remove_packages(module, packages):
|
|
|
|
module.exit_json(changed=False, msg="package(s) already absent")
|
|
|
|
module.exit_json(changed=False, msg="package(s) already absent")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def install_packages(module, packages):
|
|
|
|
def install_packages(module, packages, package_files):
|
|
|
|
|
|
|
|
|
|
|
|
install_c = 0
|
|
|
|
install_c = 0
|
|
|
|
|
|
|
|
|
|
|
|
for package in packages:
|
|
|
|
for i, package in enumerate(packages):
|
|
|
|
if query_package(module, package):
|
|
|
|
if query_package(module, package):
|
|
|
|
continue
|
|
|
|
continue
|
|
|
|
|
|
|
|
|
|
|
|
rc = os.system("pacman -S %s --noconfirm > /dev/null" % (package))
|
|
|
|
if package_files[i]:
|
|
|
|
|
|
|
|
params = '-U %s' % package_files[i]
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
|
|
|
params = '-S %s' % package
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
rc = os.system("pacman %s --noconfirm > /dev/null" % (params))
|
|
|
|
|
|
|
|
|
|
|
|
if rc != 0:
|
|
|
|
if rc != 0:
|
|
|
|
module.fail_json(msg="failed to install %s" % (package))
|
|
|
|
module.fail_json(msg="failed to install %s" % (package))
|
|
|
@ -187,11 +193,21 @@ def main():
|
|
|
|
|
|
|
|
|
|
|
|
pkgs = p["name"].split(",")
|
|
|
|
pkgs = p["name"].split(",")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
pkg_files = []
|
|
|
|
|
|
|
|
for i, pkg in enumerate(pkgs):
|
|
|
|
|
|
|
|
if pkg.endswith('.pkg.tar.xz'):
|
|
|
|
|
|
|
|
# The package given is a filename, extract the raw pkg name from
|
|
|
|
|
|
|
|
# it and store the filename
|
|
|
|
|
|
|
|
pkg_files.append(pkg)
|
|
|
|
|
|
|
|
pkgs[i] = re.sub('-[0-9].*$', '', pkgs[i].split('/')[-1])
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
|
|
|
pkg_files.append(None)
|
|
|
|
|
|
|
|
|
|
|
|
if module.check_mode:
|
|
|
|
if module.check_mode:
|
|
|
|
check_packages(module, pkgs, p['state'])
|
|
|
|
check_packages(module, pkgs, p['state'])
|
|
|
|
|
|
|
|
|
|
|
|
elif p["state"] == "installed":
|
|
|
|
if p["state"] == "installed":
|
|
|
|
install_packages(module, pkgs)
|
|
|
|
install_packages(module, pkgs, pkg_files)
|
|
|
|
|
|
|
|
|
|
|
|
elif p["state"] == "absent":
|
|
|
|
elif p["state"] == "absent":
|
|
|
|
remove_packages(module, pkgs)
|
|
|
|
remove_packages(module, pkgs)
|
|
|
|