diff --git a/slpkg/__metadata__.py b/slpkg/__metadata__.py index b60cd75b..69176bfd 100644 --- a/slpkg/__metadata__.py +++ b/slpkg/__metadata__.py @@ -88,7 +88,7 @@ class MetaData(object): __all__ = "slpkg" __author__ = "dslackw" - __version_info__ = (2, 4, 4) + __version_info__ = (2, 5, 0) __version__ = "{0}.{1}.{2}".format(*__version_info__) __license__ = "GNU General Public License v3 (GPLv3)" __email__ = "d.zlatanidis@gmail.com" diff --git a/slpkg/arguments.py b/slpkg/arguments.py index 511bf780..edda354d 100644 --- a/slpkg/arguments.py +++ b/slpkg/arguments.py @@ -99,16 +99,17 @@ Optional arguments: and prints results. -f, --find, [package...] Find and print installed packages reporting the size and the sum. - -i, --install, [package...] Installs single or multiple - Slackware binary packages. - -u, --install-new, [package...] Upgrade single or multiple Slackware - binary packages from a older to a - newer one. - -o, --reinstall, [package...] Reinstall signle or multiple - Slackware binary packages with the - same packages if the exact. - -r, --remove, [package...] Removes a previously installed - Slackware binary packages. + -i, --installpkg, [options] [package...] Installs single or multiple + options=[--warn, --md5sum, --root, Slackware binary packages designed + --infobox, --menu, --terse, for use with the Slackware Linux + --ask, --priority, distribution onto your system. + --tagfile] + -u, --upgradepkg, [options] [package...] Upgrade single or multiple Slackware + options=[--dry-run, --install-new, binary packages from an older + --reinstall, --verbose] version to a newer one. + -r, --removepkg, [options] [package...] Removes a previously installed + options=[-warn, -preserve, copy, Slackware binary packages. + -keep] -d, --display, [package...] Display the installed packages contents and file list. @@ -137,7 +138,7 @@ def usage(repo): [-t [repository] [package]] [-p [repository] [package], --color=[]] [-n [SBo package]] [-F [...]] [-f [...]] [-i [...]] - [-u [...]] [-o [...]] [-r [...]] [-d [...]] + [-u [...]] [-r [...]] [-d [...]] """ error_repo = "" if repo and repo not in _meta_.repositories: diff --git a/slpkg/binary/install.py b/slpkg/binary/install.py index 4e07ef8a..2fe3ed5b 100644 --- a/slpkg/binary/install.py +++ b/slpkg/binary/install.py @@ -173,18 +173,18 @@ class BinaryInstall(object): print("[ {0}reinstalling{1} ] --> {2}".format( self.meta.color["GREEN"], self.meta.color["ENDC"], inst)) installs.append(pkg_ver) - PackageManager(package).reinstall() + PackageManager(package).upgrade("--reinstall") elif find_package(split_package(inst)[0] + self.meta.sp, self.meta.pkg_path): print("[ {0}upgrading{1} ] --> {2}".format( self.meta.color["YELLOW"], self.meta.color["ENDC"], inst)) upgraded.append(pkg_ver) - PackageManager(package).upgrade() + PackageManager(package).upgrade("--install-new") else: print("[ {0}installing{1} ] --> {2}".format( self.meta.color["GREEN"], self.meta.color["ENDC"], inst)) installs.append(pkg_ver) - PackageManager(package).upgrade() + PackageManager(package).upgrade("--install-new") return [installs, upgraded] def checksums(self, install): diff --git a/slpkg/main.py b/slpkg/main.py index 06fc2426..9d166402 100644 --- a/slpkg/main.py +++ b/slpkg/main.py @@ -25,7 +25,6 @@ import sys import getpass -from utils import Utils from messages import Msg from desc import PkgDesc from config import Config @@ -63,33 +62,6 @@ class ArgParse(object): def __init__(self, args): self.args = args self.meta = _meta_ - self.packages = self.args[1:] - if len(self.args) > 1 and self.args[0] in ["-q", "--queue", "-b", - "--blacklist"]: - self.packages = self.args[1:-1] - elif len(self.packages) > 1 and self.args[0] in ["-s", "--sync", "-t", - "--tracking", "-p", - "--print", "-F", - "--FIND"]: - self.packages = self.args[2:] - - if (len(self.args) > 1 and - self.args[0] in ["-f", "--find", "-i", "--install", "-u", - "--install-new", "-o", "--reinstall", "-r", - "--remove", "-d", "--display", "-n", - "--network"] and - self.args[1].endswith(".pkg")): - self.packages = Utils().read_file_pkg(self.args[1]) - elif (len(self.args) >= 3 and - self.args[0] in ["-s", "--sync", "-t", "--tracking", "-p", - "--print", "-F", "--FIND"] and - self.args[1] in self.meta.repositories and - self.args[2].endswith(".pkg")): - self.packages = Utils().read_file_pkg(self.args[2]) - elif (len(self.args) == 3 and self.args[0] in ["-q", "--queue", - "-b", "--blacklist"] and - self.args[1].endswith(".pkg")): - self.packages = Utils().read_file_pkg(self.args[1]) # checking if repositories exists if len(self.args) > 1 and self.args[0] not in [ @@ -231,6 +203,7 @@ class ArgParse(object): def pkg_install(self): """ install packages by repository """ + packages = self.args[2:] options = ["-s", "--sync"] flag = ["--resolve-off"] resolve = True @@ -239,10 +212,10 @@ class ArgParse(object): if len(self.args) >= 3 and self.args[0] in options: if (self.args[1] in self.meta.repositories and self.args[1] not in ["sbo"]): - BinaryInstall(self.packages, self.args[1], resolve).start( + BinaryInstall(packages, self.args[1], resolve).start( if_upgrade=False) elif self.args[1] == "sbo": - SBoInstall(self.packages, resolve).start( + SBoInstall(packages, resolve).start( if_upgrade=False) else: usage(self.args[1]) @@ -251,12 +224,8 @@ class ArgParse(object): def pkg_tracking(self): """ tracking package dependencies """ - packages = "".join(self.packages) + packages = self.args[2:] options = ["-t", "--tracking"] - if len(self.packages) > 1: - packages = self.packages[1] - if self.args[2].endswith(".pkg"): - packages = self.packages[0] if (len(self.args) == 3 and self.args[0] in options and self.args[1] in self.meta.repositories): track_dep(packages, self.args[1]) @@ -268,10 +237,8 @@ class ArgParse(object): def sbo_network(self): """ view slackbuilds packages """ - packages = "".join(self.packages) + packages = self.args[1] options = ["-n", "--network"] - if len(self.packages) > 1: - packages = self.packages[0] if (len(self.args) == 2 and self.args[0] in options and "sbo" in self.meta.repositories): SBoNetwork(packages).view() @@ -280,6 +247,7 @@ class ArgParse(object): def pkg_blacklist(self): """ manage blacklist packages """ + packages = self.args[1:] blacklist = BlackList() options = ["-b", "--blacklist"] flag = ["--add", "--remove"] @@ -289,25 +257,26 @@ class ArgParse(object): blacklist.listed() elif (len(self.args) > 2 and self.args[0] in options and self.args[-1] == flag[0]): - blacklist.add(self.packages) + blacklist.add(packages) elif (len(self.args) > 2 and self.args[0] in options and self.args[-1] == flag[1]): - blacklist.remove(self.packages) + blacklist.remove(packages) else: usage("") def pkg_queue(self): """ manage packages in queue """ + packages = self.args[1:] queue = QueuePkgs() options = ["-q", "--queue"] flag = ["--add", "--remove"] command = ["list", "build", "install", "build-install"] if (len(self.args) > 2 and self.args[0] in options and self.args[-1] == flag[0]): - queue.add(self.packages) + queue.add(packages) elif (len(self.args) > 2 and self.args[0] in options and self.args[-1] == flag[1]): - queue.remove(self.packages) + queue.remove(packages) elif (len(self.args) == 2 and self.args[0] in options and self.args[1] == command[0]): queue.listed() @@ -326,52 +295,81 @@ class ArgParse(object): def bin_install(self): """ install Slackware binary packages """ - options = ["-i", "--install"] + packages = self.args[1:] + options = ["-i", "--installpkg"] + flag = "" + flags = [ + "--warn", + "--md5sum", + "--root", + "--infobox", + "--menu", + "--terse", + "--ask", + "--priority", + "--tagfile" + ] + if self.args[1] in flags: + flag = self.args[1] + packages = self.args[2:] if len(self.args) > 1 and self.args[0] in options: - PackageManager(self.packages).install() + PackageManager(packages).install(flag) else: usage("") def bin_upgrade(self): """ install-upgrade Slackware binary packages """ - options = ["-u", "--install-new"] + packages = self.args[1:] + options = ["-u", "--upgradepkg"] + flag = "" + flags = [ + "--dry-run", + "--install-new", + "--reinstall", + "--verbose" + ] + if self.args[1] in flags: + flag = self.args[1] + packages = self.args[2:] if len(self.args) > 1 and self.args[0] in options: - PackageManager(self.packages).upgrade() - else: - usage("") - - def bin_reinstall(self): - """ reinstall Slackware binary packages """ - options = ["-o", "--reinstall"] - if len(self.args) > 1 and self.args[0] in options: - PackageManager(self.packages).reinstall() + PackageManager(packages).upgrade(flag) else: usage("") def bin_remove(self): """ remove Slackware packages """ - options = ["-r", "--remove"] + packages = self.args[1:] + options = ["-r", "--removepkg"] + flag = "" + flags = [ + "-warn", + "-preserve", + "-copy", + "-keep" + ] + if self.args[1] in flags: + flag = self.args[1] + packages = self.args[2:] if len(self.args) > 1 and self.args[0] in options: - PackageManager(self.packages).remove() + PackageManager(packages).remove(flag) else: usage("") def bin_find(self): """ find installed packages """ + packages = self.args[1:] options = ["-f", "--find"] if len(self.args) > 1 and self.args[0] in options: - PackageManager(self.packages).find() + PackageManager(packages).find() else: usage("") def pkg_desc(self): """ print slack-desc by repository""" - packages = "".join(self.packages) + packages = self.args[2] options = ["-p", "--print"] flag = ["--color="] colors = ["red", "green", "yellow", "cyan", "grey"] - if len(self.packages) > 1: - packages = self.packages[0] if (len(self.args) == 3 and self.args[0] in options and self.args[1] in self.meta.repositories): PkgDesc(packages, self.args[1], "").view() @@ -398,9 +396,10 @@ class ArgParse(object): def pkg_contents(self): """ print packages contents """ + packages = self.args[1:] options = ["-d", "--display"] if len(self.args) > 1 and self.args[0] in options: - PackageManager(self.packages).display() + PackageManager(packages).display() else: usage("") @@ -466,10 +465,8 @@ def main(): "--install": argparse.bin_install, "-u": argparse.bin_upgrade, "--install-new": argparse.bin_upgrade, - "-o": argparse.bin_reinstall, - "--reinstall": argparse.bin_reinstall, "-r": argparse.bin_remove, - "--remove": argparse.bin_remove, + "--removepkg": argparse.bin_remove, "-f": argparse.bin_find, "--find": argparse.bin_find, "-F": argparse.pkg_find, diff --git a/slpkg/pkg/manager.py b/slpkg/pkg/manager.py index 586486f3..badd1e9a 100644 --- a/slpkg/pkg/manager.py +++ b/slpkg/pkg/manager.py @@ -44,42 +44,30 @@ class PackageManager(object): self.binary = binary self.meta = _meta_ - def install(self): + def install(self, flag): """ Install Slackware binary packages """ for pkg in self.binary: try: - print(subprocess.check_output("installpkg {0}".format( - pkg), shell=True)) + subprocess.call("installpkg {0} {1}".format(flag, pkg), + shell=True) print("Completed!\n") except subprocess.CalledProcessError: self._not_found("Can't install", self.binary, pkg) - def upgrade(self): + def upgrade(self, flag): """ - Upgrade Slackware binary packages + Upgrade Slackware binary packages with new """ for pkg in self.binary: try: - print(subprocess.check_output("upgradepkg --install-new " - "{0}".format(pkg), shell=True)) + subprocess.call("upgradepkg {0} {1}".format(flag, pkg), + shell=True) print("Completed!\n") except subprocess.CalledProcessError: self._not_found("Can't upgrade", self.binary, pkg) - def reinstall(self): - """ - Reinstall Slackware binary packages - """ - for pkg in self.binary: - try: - print(subprocess.check_output( - "upgradepkg --reinstall {0}".format(pkg), shell=True)) - print("Completed!\n") - except subprocess.CalledProcessError: - self._not_found("Can't reinstall", self.binary, pkg) - def _not_found(self, message, binary, pkg): if len(binary) > 1: bol = eol = "" @@ -87,10 +75,11 @@ class PackageManager(object): bol = eol = "\n" Msg().pkg_not_found(bol, pkg, message, eol) - def remove(self): + def remove(self, flag): """ Remove Slackware binary packages """ + self.flag = flag dep_path = self.meta.log_path + "dep/" dependencies, rmv_list = [], [] removed = self._view_removed() @@ -188,8 +177,8 @@ class PackageManager(object): deps.append(package) for dep in deps: if find_package(dep + self.meta.sp, self.meta.pkg_path): - print(subprocess.check_output("removepkg {0}".format(dep), - shell=True)) + subprocess.call("removepkg {0} {1}".format(self.flag, dep), + shell=True) removes.append(dep) os.remove(path + package) return removes @@ -199,8 +188,8 @@ class PackageManager(object): Remove one signle package """ if find_package(package + self.meta.sp, self.meta.pkg_path): - print(subprocess.check_output("removepkg {0}".format(package), - shell=True)) + subprocess.call("removepkg {0} {1}".format(self.flag, package), + shell=True) return package.split() def _reference_rmvs(self, removes): diff --git a/slpkg/sbo/slackbuild.py b/slpkg/sbo/slackbuild.py index 6ec28841..634bef37 100644 --- a/slpkg/sbo/slackbuild.py +++ b/slpkg/sbo/slackbuild.py @@ -337,5 +337,5 @@ class SBoInstall(object): print("{0}[ Installing ] --> {1}{2}".format( self.meta.color["GREEN"], self.meta.color["ENDC"], pkg)) installs.append(prgnam) - PackageManager(binary).upgrade() + PackageManager(binary).upgrade("--install-new") return installs, upgraded diff --git a/slpkg/sbo/views.py b/slpkg/sbo/views.py index 40a97fff..87bb1df8 100644 --- a/slpkg/sbo/views.py +++ b/slpkg/sbo/views.py @@ -222,4 +222,4 @@ class SBoNetwork(object): print("[ {0}Installing{1} ] --> {2}".format(_meta_.color["GREEN"], _meta_.color["ENDC"], self.name)) - PackageManager(binary).upgrade() + PackageManager(binary).upgrade("--install-new") diff --git a/slpkg/slack/patches.py b/slpkg/slack/patches.py index 69588ef3..079d724c 100644 --- a/slpkg/slack/patches.py +++ b/slpkg/slack/patches.py @@ -178,13 +178,15 @@ class Patches(object): print("[ {0}upgrading{1} ] --> {2}".format( self.meta.color["YELLOW"], self.meta.color["ENDC"], pkg[:-4])) - PackageManager((self.patch_path + pkg).split()).upgrade() + PackageManager((self.patch_path + pkg).split()).upgrade( + "--install-new") self.upgraded.append(pkg_ver) else: print("[ {0}installing{1} ] --> {2}".format( self.meta.color["GREEN"], self.meta.color["ENDC"], pkg[:-4])) - PackageManager((self.patch_path + pkg).split()).upgrade() + PackageManager((self.patch_path + pkg).split()).upgrade( + "--install-new") self.installed.append(pkg_ver) def kernel(self):