mirror of
https://gitlab.com/dslackw/slpkg.git
synced 2024-12-27 09:58:10 +01:00
Added health check installed packages
This commit is contained in:
parent
b6dc506e14
commit
f44d4595c0
5 changed files with 136 additions and 6 deletions
|
@ -250,9 +250,9 @@ Using pip:
|
|||
|
||||
Bbinary packages:
|
||||
|
||||
Slackware: `slpkg-2.6.1-i486-1_dsw.txz <https://github.com/dslackw/slpkg/releases/download/v2.6.1/slpkg-2.6.1-i486-1_dsw.txz>`_
|
||||
Slackware: `slpkg-2.6.2-i486-1_dsw.txz <https://github.com/dslackw/slpkg/releases/download/v2.6.2/slpkg-2.6.2-i486-1_dsw.txz>`_
|
||||
|
||||
Slackware64: `slpkg-2.6.1-x86_64-1_dsw.txz <https://github.com/dslackw/slpkg/releases/download/v2.6.1/slpkg-2.6.1-x86_64-1_dsw.txz>`_
|
||||
Slackware64: `slpkg-2.6.2-x86_64-1_dsw.txz <https://github.com/dslackw/slpkg/releases/download/v2.6.2/slpkg-2.6.2-x86_64-1_dsw.txz>`_
|
||||
|
||||
|
||||
Upgrade
|
||||
|
@ -341,6 +341,7 @@ Command Line Tool Usage
|
|||
repository.
|
||||
update slpkg Upgrade the program directly from
|
||||
repository.
|
||||
health, --silent Health check installed packages.
|
||||
|
||||
Optional arguments:
|
||||
-h, --help Print this help message and exit.
|
||||
|
|
|
@ -20,6 +20,7 @@ Usage: slpkg Commands:
|
|||
[repo-add [repository name] [URL]]
|
||||
[repo-remove [repository]] [repo-list]
|
||||
[repo-info [repository]] [update [slpkg]]
|
||||
[health, --silent]
|
||||
|
||||
Optional arguments:
|
||||
[-h] [-v]
|
||||
|
@ -93,6 +94,12 @@ View repository information.
|
|||
.PP
|
||||
You can check for new versions and update slpkg itself.
|
||||
|
||||
.SS health, health check installed packages
|
||||
\fBslpkg\fP \fBhealth\fP, \fB--silent\fP
|
||||
.PP
|
||||
This command get each file from "/var/log/packages/" directory and read file list from
|
||||
package to check if installed.
|
||||
|
||||
.SH OPTIONS
|
||||
.PP
|
||||
The following arguments are available.
|
||||
|
|
|
@ -54,6 +54,7 @@ Commands:
|
|||
repository.
|
||||
update slpkg Upgrade the program directly from
|
||||
repository.
|
||||
health, --silent Health check installed packages.
|
||||
|
||||
Optional arguments:
|
||||
-h, --help Print this help message and exit.
|
||||
|
@ -127,6 +128,7 @@ def usage(repo):
|
|||
[repo-add [repository name] [URL]]
|
||||
[repo-remove [repository]] [repo-list]
|
||||
[repo-info [repository]] [update [slpkg]]
|
||||
[health, --silent]
|
||||
|
||||
Optional arguments:
|
||||
[-h] [-v]
|
||||
|
|
107
slpkg/health.py
Normal file
107
slpkg/health.py
Normal file
|
@ -0,0 +1,107 @@
|
|||
#!/usr/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# health.py file is part of slpkg.
|
||||
|
||||
# Copyright 2014-2015 Dimitris Zlatanidis <d.zlatanidis@gmail.com>
|
||||
# All rights reserved.
|
||||
|
||||
# Slpkg is a user-friendly package manager for Slackware installations
|
||||
|
||||
# https://github.com/dslackw/slpkg
|
||||
|
||||
# Slpkg is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
import os
|
||||
import sys
|
||||
|
||||
from messages import Msg
|
||||
from __metadata__ import MetaData as _meta_
|
||||
|
||||
from pkg.find import find_package
|
||||
|
||||
|
||||
class PackageHealth(object):
|
||||
"""Health check installed packages
|
||||
"""
|
||||
def __init__(self, mode):
|
||||
self.mode = mode
|
||||
self.meta = _meta_
|
||||
self.pkg_path = _meta_.pkg_path
|
||||
self.installed = []
|
||||
self.cn = 0
|
||||
|
||||
def packages(self):
|
||||
"""Get all installed packages from /var/log/packages/ path
|
||||
"""
|
||||
self.installed = find_package("", self.pkg_path)
|
||||
|
||||
def check(self, line, pkg):
|
||||
line = line.replace("\n", "")
|
||||
try:
|
||||
if (not line.endswith("/") and
|
||||
not line.endswith(".new") and
|
||||
not line.startswith("dev/") and
|
||||
not line.startswith("install/") and
|
||||
"/incoming/" not in line):
|
||||
if not os.path.isfile("/" + line):
|
||||
self.cn += 1
|
||||
print("Not installed: {0}/{1}{2} --> {3}".format(
|
||||
self.meta.color["RED"], line, self.meta.color["ENDC"],
|
||||
pkg))
|
||||
elif not self.mode:
|
||||
print(line)
|
||||
except (KeyboardInterrupt, IOError):
|
||||
print("")
|
||||
sys.exit(0)
|
||||
|
||||
def test(self):
|
||||
"""Get started test each package and read file list
|
||||
"""
|
||||
self.packages()
|
||||
self.cf = 0
|
||||
try:
|
||||
for pkg in self.installed:
|
||||
self.lf = 0
|
||||
with open(self.pkg_path + pkg, "r") as fopen:
|
||||
for line in fopen:
|
||||
self.cf += 1 # count all files
|
||||
self.lf += 1 # count each package files
|
||||
if self.lf > 19:
|
||||
self.check(line, pkg)
|
||||
except KeyboardInterrupt:
|
||||
print("")
|
||||
sys.exit(0)
|
||||
self.results()
|
||||
|
||||
def results(self):
|
||||
"""Print results
|
||||
"""
|
||||
print("")
|
||||
per = int(round((float(self.cf) / (self.cf + self.cn)) * 100))
|
||||
if per > 90:
|
||||
color = self.meta.color["GREEN"]
|
||||
elif per < 90 and per > 60:
|
||||
color = self.meta.color["YELLOW"]
|
||||
elif per < 60:
|
||||
color = self.meta.color["RED"]
|
||||
health = "{0}{1}%{2}".format(color, str(per), self.meta.color["ENDC"])
|
||||
Msg().template(78)
|
||||
print("| {0}{1}{2}{3}{4}".format(
|
||||
"Total files", " " * 7, "Not installed", " " * 40, "Health"))
|
||||
Msg().template(78)
|
||||
print("| {0}{1}{2}{3}{4:>4}".format(
|
||||
self.cf, " " * (18-len(str(self.cf))),
|
||||
self.cn, " " * (55-len(str(self.cn))),
|
||||
health))
|
||||
Msg().template(78)
|
|
@ -27,9 +27,9 @@ import sys
|
|||
import getpass
|
||||
|
||||
from load import Regex
|
||||
from desc import PkgDesc
|
||||
from messages import Msg
|
||||
from auto_pkg import Auto
|
||||
from desc import PkgDesc
|
||||
from config import Config
|
||||
from checks import Updates
|
||||
from queue import QueuePkgs
|
||||
|
@ -39,6 +39,7 @@ from repositories import Repo
|
|||
from tracking import track_dep
|
||||
from blacklist import BlackList
|
||||
from version import prog_version
|
||||
from health import PackageHealth
|
||||
from pkg_find import find_from_repos
|
||||
from arguments import options, usage
|
||||
from slpkg_update import it_self_update
|
||||
|
@ -70,8 +71,8 @@ class ArgParse(object):
|
|||
# checking if repositories exists
|
||||
if len(self.args) > 1 and self.args[0] not in [
|
||||
"-h", "--help", "-v", "--version", "upgrade", "repo-list",
|
||||
"repo-add", "repo-remove", "update", "update-slpkg", "-g",
|
||||
"--config"
|
||||
"repo-add", "repo-remove", "update", "update-slpkg",
|
||||
"health", "-g", "--config"
|
||||
]:
|
||||
check_exists_repositories()
|
||||
|
||||
|
@ -159,6 +160,17 @@ class ArgParse(object):
|
|||
else:
|
||||
usage("")
|
||||
|
||||
def command_health(self):
|
||||
"""Check package health
|
||||
"""
|
||||
if len(self.args) == 1 and self.args[0] == "health":
|
||||
PackageHealth(mode="").test()
|
||||
elif (len(self.args) == 2 and self.args[0] == "health" and
|
||||
self.args[1] == "--silent"):
|
||||
PackageHealth(mode=self.args[1]).test()
|
||||
else:
|
||||
usage("")
|
||||
|
||||
def auto_build(self):
|
||||
"""Auto built tool
|
||||
"""
|
||||
|
@ -521,6 +533,7 @@ def main():
|
|||
"repo-add": argparse.command_repo_add,
|
||||
"repo-remove": argparse.command_repo_remove,
|
||||
"repo-info": argparse.command_repo_info,
|
||||
"health": argparse.command_health,
|
||||
"-a": argparse.auto_build,
|
||||
"--autobuild": argparse.auto_build,
|
||||
"-l": argparse.pkg_list,
|
||||
|
|
Loading…
Reference in a new issue