From d47141bbf5e8f1e67dc01dee400a652e96738ae5 Mon Sep 17 00:00:00 2001 From: Dimitris Zlatanidis Date: Mon, 15 Jun 2015 07:14:30 +0300 Subject: [PATCH] Update check changelogs.txt --- README.rst | 18 +++++++++-- man/slpkg.8 | 7 +++++ slpkg/__metadata__.py | 2 +- slpkg/arguments.py | 4 +-- slpkg/checks.py | 68 +++++++++++++++++++++++++++++------------- slpkg/init.py | 53 ++++++++++++++++++++++++++++---- slpkg/main.py | 10 +++++-- slpkg/slack/patches.py | 3 +- 8 files changed, 131 insertions(+), 34 deletions(-) diff --git a/README.rst b/README.rst index 5d85ab7a..55c002b0 100644 --- a/README.rst +++ b/README.rst @@ -363,7 +363,7 @@ Command Line Tool Usage --installed packages repository, index or print only packages installed on the system. - -c, --check, [repository] --upgrade, Check, view and install updated + -c, --check, [repository], --upgrade, Check, view and install updated --skip=[...] --resolve--off packages from repositories. -s, --sync, [repository] [package...], Sync packages. Install packages --resolve-off directly from remote repositories @@ -426,6 +426,12 @@ list. This command must be executed to update the package lists: $ slpkg update --only=sbo,msb,slacky + Also you can check ChangeLog.txt for changes like: + + $ slpkg -c sbo + + News in ChangeLog.txt + Add and remove custom repositories: @@ -651,10 +657,18 @@ and also displays installed packages: +--5 libunique -Check if your packages is up to date: +Check if your packages is up to date or changes in ChangeLog.txt: .. code-block:: bash + You can check ChangeLog.txt for changes before with command: + + $ slpkg -c sbo + + News in ChangeLog.txt + + And check if packages need upgrade with: + $ slpkg -c sbo --upgrade Checking ...................Done Reading package lists ......Done diff --git a/man/slpkg.8 b/man/slpkg.8 index 52abe57c..3c81046e 100644 --- a/man/slpkg.8 +++ b/man/slpkg.8 @@ -93,6 +93,10 @@ View repository information. .PP You can check for new versions and update slpkg itself. +.SH OPTIONS +.PP +The following arguments are available. + .SS -a, --autobuild, auto build packages \fBslpkg\fP \fB-a\fP <\fIscript.tar.gz\fP> <\fIsources\fP> .PP @@ -136,6 +140,9 @@ additional option "--resolve-off" switch off automatic resolve dependencies. Slackware patches repository works independently of the others i.e not need before updating the list of packages by choosing "# slpkg update", works directly with the official repository and so always you can have updated your system. +Also you can check ChangeLog.txt for changes without option "--upgrade" like: +"# slpkg -c [repository]" or check all enabled repositories just replace repository name with +"ALL". .SS -s, --sync, synchronize packages, download, build and install package with all dependencies \fBslpkg\fP \fB-s\fP <\fIrepository\fP> <\fInames of packages\fP>, \fB--resolve-off\fP diff --git a/slpkg/__metadata__.py b/slpkg/__metadata__.py index 2597a9aa..d467db0b 100644 --- a/slpkg/__metadata__.py +++ b/slpkg/__metadata__.py @@ -88,7 +88,7 @@ class MetaData(object): __all__ = "slpkg" __author__ = "dslackw" - __version_info__ = (2, 5, 0) + __version_info__ = (2, 5, 1) __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 ce197d21..0a07aeec 100644 --- a/slpkg/arguments.py +++ b/slpkg/arguments.py @@ -79,7 +79,7 @@ Optional arguments: --installed packages repository, index or print only packages installed on the system. - -c, --check, [repository] --upgrade, Check, view and install updated + -c, --check, [repository], --upgrade, Check, view and install updated --skip=[...] --resolve--off packages from repositories. -s, --sync, [repository] [package...], Sync packages. Install packages --resolve-off directly from remote repositories @@ -136,7 +136,7 @@ def usage(repo): [-q [build, install, build-install]] [-g [print, edit=[editor]]] [-l [repository], --index, --installed] - [-c [repository] --upgrade, --skip=[...] --resolve-off] + [-c [repository], --upgrade, --skip=[...] --resolve-off] [-s [repository] [package...], --resolve-off] [-t [repository] [package]] [-p [repository] [package], --color=[]] diff --git a/slpkg/checks.py b/slpkg/checks.py index de2fee31..26d7c57e 100644 --- a/slpkg/checks.py +++ b/slpkg/checks.py @@ -21,39 +21,67 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . - -from messages import Msg from arguments import usage -from sbo.check import sbo_upgrade -from slack.patches import Patches -from binary.check import pkg_upgrade +from init import Initialization from __metadata__ import MetaData as _meta_ class Updates(object): - + """Checking for news in ChangeLog.txt + """ def __init__(self, repo): self.repo = repo self.meta = _meta_ + self.check = 2 + self._init = Initialization(True) + self.all_repos = { + "slack": self._init.slack, + "sbo": self._init.sbo, + "rlw": self._init.rlw, + "alien": self._init.alien, + "slacky": self._init.slacky, + "studio": self._init.studio, + "slackr": self._init.slackr, + "slonly": self._init.slonly, + "ktown": self._init.ktown, + "multi": self._init.multi, + "slacke": self._init.slacke, + "salix": self._init.salix, + "slackl": self._init.slackl, + "rested": self._init.rested, + "msb": self._init.msb + } def run(self): - if self.repo in self.meta.repositories: - if self.repo == "sbo": - self.check = len(sbo_upgrade(skip="")) - elif self.repo == "slack": - if self.meta.only_installed in ["on", "ON"]: - self.check = len(pkg_upgrade(self.repo, skip="")) - else: - self.check = Patches(skip="", flag="").store() - Msg().done() - else: - self.check = len(pkg_upgrade(self.repo, skip="")) - self.status() + """Run and check if new in ChangeLog.txt + """ + if self.repo in self.meta.default_repositories: + try: + self.check = self.all_repos[self.repo]() + except OSError: + usage(self.repo) + elif self.repo in self.meta.repositories: + self.check = self._init.custom(self.repo) else: usage(self.repo) + self.status() + + def ALL(self): + for repo in self.meta.repositories: + print("Repository: {0}".format(repo)) + if repo in self.meta.default_repositories: + try: + self.check = self.all_repos[repo]() + except OSError: + usage(self.repo) + elif repo in self.meta.repositories: + self.check = self._init.custom(repo) + self.status() def status(self): - if self.check > 1: + """Print messages + """ + if self.check == 1: print("\nNews in ChangeLog.txt\n") - else: + elif self.check == 0: print("\nNo changes in ChangeLog.txt\n") diff --git a/slpkg/init.py b/slpkg/init.py index 9743b19d..6a7c3bc9 100644 --- a/slpkg/init.py +++ b/slpkg/init.py @@ -37,7 +37,8 @@ from slack.slack_version import slack_ver class Initialization(object): - def __init__(self): + def __init__(self, check): + self.check = check self.meta = _meta_ self.conf_path = self.meta.conf_path self.log_path = self.meta.log_path @@ -79,6 +80,8 @@ class Initialization(object): filelist_txt = "" checksums_md5 = "{0}{1}".format(repo, md5_file) changelog_txt = "{0}{1}".format(repo, log_file) + if self.check: + return self.checks_logs(log, log_file, changelog_txt) self.write(lib, lib_file, packages_txt) self.write(lib, md5_file, checksums_md5) self.write(log, log_file, changelog_txt) @@ -110,6 +113,8 @@ class Initialization(object): checksums_md5 = ("{0} {1} {2}".format(pkg_checksums, ext_checksums, pas_checksums)) changelog_txt = mirrors(log_file, "") + if self.check: + return self.checks_logs(log, log_file, changelog_txt) self.write(lib, lib_file, packages_txt) self.write(lib, md5_file, checksums_md5) self.write(log, log_file, changelog_txt) @@ -134,6 +139,8 @@ class Initialization(object): filelist_txt = "" checksums_md5 = "" changelog_txt = "{0}{1}/{2}".format(repo, slack_ver(), log_file) + if self.check: + return self.checks_logs(log, log_file, changelog_txt) self.write(lib, lib_file, packages_txt) self.write(log, log_file, changelog_txt) self.remote(log, log_file, changelog_txt, lib, lib_file, packages_txt, @@ -157,6 +164,8 @@ class Initialization(object): filelist_txt = "" checksums_md5 = "{0}{1}/{2}".format(repo, slack_ver(), md5_file) changelog_txt = "{0}{1}/{2}".format(repo, slack_ver(), log_file) + if self.check: + return self.checks_logs(log, log_file, changelog_txt) self.write(lib, lib_file, packages_txt) self.write(lib, md5_file, checksums_md5) self.write(log, log_file, changelog_txt) @@ -181,6 +190,8 @@ class Initialization(object): filelist_txt = "" checksums_md5 = "{0}{1}".format(repo, md5_file) changelog_txt = "{0}{1}".format(repo, log_file) + if self.check: + return self.checks_logs(log, log_file, changelog_txt) self.write(lib, lib_file, packages_txt) self.write(lib, md5_file, checksums_md5) self.write(log, log_file, changelog_txt) @@ -213,6 +224,8 @@ class Initialization(object): changelog_txt = "{0}slackware{1}-{2}/{3}".format(repo, ar, slack_ver(), log_file) + if self.check: + return self.checks_logs(log, log_file, changelog_txt) self.write(lib, lib_file, packages_txt) self.write(lib, md5_file, checksums_md5) self.write(log, log_file, changelog_txt) @@ -244,6 +257,8 @@ class Initialization(object): md5_file) changelog_txt = "{0}slackware{1}-{2}/{3}".format(repo, ar, slack_ver(), log_file) + if self.check: + return self.checks_logs(log, log_file, changelog_txt) self.write(lib, lib_file, packages_txt) self.write(lib, md5_file, checksums_md5) self.write(log, log_file, changelog_txt) @@ -268,6 +283,8 @@ class Initialization(object): filelist_txt = "" checksums_md5 = "{0}{1}".format(repo, md5_file) changelog_txt = "{0}{1}".format(repo, log_file) + if self.check: + return self.checks_logs(log, log_file, changelog_txt) self.write(lib, lib_file, packages_txt) self.write(lib, md5_file, checksums_md5) self.write(log, log_file, changelog_txt) @@ -296,6 +313,8 @@ class Initialization(object): filelist_txt = "{0}{1}/{2}".format(repo, ar, lst_file) checksums_md5 = "{0}{1}/{2}".format(repo, ar, md5_file) changelog_txt = "{0}{1}/{2}".format(repo, ar, log_file) + if self.check: + return self.checks_logs(log, log_file, changelog_txt) self.write(lib, lib_file, packages_txt) self.write(lib, md5_file, checksums_md5) self.write(log, log_file, changelog_txt) @@ -320,6 +339,8 @@ class Initialization(object): filelist_txt = "" checksums_md5 = "{0}{1}".format(repo, md5_file) changelog_txt = "{0}{1}".format(repo, log_file) + if self.check: + return self.checks_logs(log, log_file, changelog_txt) self.write(lib, lib_file, packages_txt) self.write(lib, md5_file, checksums_md5) self.write(log, log_file, changelog_txt) @@ -344,6 +365,8 @@ class Initialization(object): filelist_txt = "" checksums_md5 = "{0}{1}".format(repo, md5_file) changelog_txt = "{0}{1}".format(repo, log_file) + if self.check: + return self.checks_logs(log, log_file, changelog_txt) self.write(lib, lib_file, packages_txt) self.write(lib, md5_file, checksums_md5) self.write(log, log_file, changelog_txt) @@ -377,6 +400,8 @@ class Initialization(object): repo, self.meta.slacke_sub_repo[1:-1], ar, slack_ver(), md5_file) changelog_txt = "{0}slacke{1}/slackware{2}-{3}/{4}".format( repo, self.meta.slacke_sub_repo[1:-1], ar, slack_ver(), log_file) + if self.check: + return self.checks_logs(log, log_file, changelog_txt) self.write(lib, lib_file, packages_txt) self.write(lib, md5_file, checksums_md5) self.write(log, log_file, changelog_txt) @@ -405,6 +430,8 @@ class Initialization(object): filelist_txt = "" checksums_md5 = "{0}{1}/{2}/{3}".format(repo, ar, slack_ver(), md5_file) changelog_txt = "{0}{1}/{2}/{3}".format(repo, ar, slack_ver(), log_file) + if self.check: + return self.checks_logs(log, log_file, changelog_txt) self.write(lib, lib_file, packages_txt) self.write(lib, md5_file, checksums_md5) self.write(log, log_file, changelog_txt) @@ -433,6 +460,8 @@ class Initialization(object): filelist_txt = "" checksums_md5 = "{0}{1}/current/{2}".format(repo, ar, md5_file) changelog_txt = "{0}{1}/current/{2}".format(repo, ar, log_file) + if self.check: + return self.checks_logs(log, log_file, changelog_txt) self.write(lib, lib_file, packages_txt) self.write(lib, md5_file, checksums_md5) self.write(log, log_file, changelog_txt) @@ -457,6 +486,8 @@ class Initialization(object): filelist_txt = "" checksums_md5 = "{0}{1}".format(repo, md5_file) changelog_txt = "{0}{1}".format(repo, log_file) + if self.check: + return self.checks_logs(log, log_file, changelog_txt) self.write(lib, lib_file, packages_txt) self.write(lib, md5_file, checksums_md5) self.write(log, log_file, changelog_txt) @@ -487,6 +518,8 @@ class Initialization(object): checksums_md5 = "{0}{1}/{2}/{3}/{4}".format( repo, slack_ver(), self.meta.msb_sub_repo[1:-1], ar, md5_file) changelog_txt = "{0}{1}".format(repo, log_file) + if self.check: + return self.checks_logs(log, log_file, changelog_txt) self.write(lib, lib_file, packages_txt) self.write(lib, md5_file, checksums_md5) self.write(log, log_file, changelog_txt) @@ -538,9 +571,8 @@ class Initialization(object): If the two files differ in size delete and replace all files with new. """ PACKAGES_TXT = "" - server = FileSize(args[2]).server() - local = FileSize(args[0] + args[1]).local() - if server != local: + check = self.checks_logs(args[0], args[1], args[2]) + if check == 1: # remove PACKAGES.txt os.remove("{0}{1}".format(args[3], args[4])) # remove Changelog.txt @@ -569,6 +601,15 @@ class Initialization(object): FILELIST_TXT = URL(args[9]).reading() self.write_file(args[3], args[8], FILELIST_TXT) + def checks_logs(self, log_path, log_file, url): + """Checks ChangeLog.txt from changes + """ + server = FileSize(url).server() + local = FileSize(log_path + log_file).local() + if server != local: + return 1 + return 0 + def upgrade(self, only): """Remove all package lists with changelog and checksums files and create lists again""" @@ -596,7 +637,7 @@ class Initialization(object): class Update(object): def __init__(self): - self._init = "Initialization()" + self._init = "Initialization(False)" self.meta = _meta_ self.done = "{0}Done{1}\n".format(self.meta.color["GREY"], self.meta.color["ENDC"]) @@ -619,7 +660,7 @@ class Update(object): exec("{0}.{1}()".format(self._init, repo)) sys.stdout.write(self.done) elif repo in self.meta.repositories: - Initialization().custom(repo) + Initialization(False).custom(repo) sys.stdout.write(self.done) else: sys.stdout.write(self.error) diff --git a/slpkg/main.py b/slpkg/main.py index c951f545..e751904f 100644 --- a/slpkg/main.py +++ b/slpkg/main.py @@ -28,6 +28,7 @@ import getpass from messages import Msg from desc import PkgDesc from config import Config +from checks import Updates from queue import QueuePkgs from repoinfo import RepoInfo from repolist import RepoList @@ -131,11 +132,11 @@ class ArgParse(object): """Recreate repositories package lists """ if len(self.args) == 1 and self.args[0] == "upgrade": - Initialization().upgrade(only="") + Initialization(False).upgrade(only="") elif (len(self.args) == 2 and self.args[0] == "upgrade" and self.args[1].startswith("--only=")): repos = self.args[1].split("=")[-1].split(",") - Initialization().upgrade(repos) + Initialization(False).upgrade(repos) else: usage("") @@ -219,6 +220,11 @@ class ArgParse(object): SBoInstall(sbo_upgrade(skip), flag).start(if_upgrade=True) else: usage(self.args[1]) + elif len(self.args) == 2 and self.args[0] in options: + if self.args[1] == "ALL": + Updates("").ALL() + else: + Updates(self.args[1]).run() else: usage("") diff --git a/slpkg/slack/patches.py b/slpkg/slack/patches.py index 4ae90494..f009dbc2 100644 --- a/slpkg/slack/patches.py +++ b/slpkg/slack/patches.py @@ -67,7 +67,7 @@ class Patches(object): self.comp_sum = [] self.uncomp_sum = [] self.utils = Utils() - Msg().reading() + Msg().checking() if self.version == "stable": self.PACKAGES_TXT = URL(mirrors("PACKAGES.TXT", "patches/")).reading() @@ -150,6 +150,7 @@ class Patches(object): if not find_package(repo_pkg_name, self.meta.pkg_path): self.count_added += 1 self.count_upg -= 1 + return self.count_upg def views(self): """