Added case insensitive option

This commit is contained in:
Dimitris Zlatanidis 2015-09-24 07:10:13 +03:00
parent 460c8c2e1f
commit 3d81797818
6 changed files with 51 additions and 14 deletions

View file

@ -1,6 +1,7 @@
2.9.3 - 23/09/2015 2.9.3 - 23/09/2015
Added: Added:
- Default repositories file to allow editing urls - Default repositories file to allow editing urls
- Additional option "--case-ins" case insensitive in "--tracking" option
Fixed: Fixed:
- Matching packages with case insensitive option - Matching packages with case insensitive option

View file

@ -445,8 +445,8 @@ Command Line Tool Usage
--resolve-off, --case-ins directly from remote repositories --resolve-off, --case-ins directly from remote repositories
with all dependencies. with all dependencies.
-t, --tracking, [repository] [package], Tracking package dependencies and -t, --tracking, [repository] [package], Tracking package dependencies and
--check-deps, --graph=[type] print package dependencies tree with --check-deps, --graph=[type], print package dependencies tree with
highlight if packages is installed. --case-ins highlight if packages is installed.
Also check if dependencies used or Also check if dependencies used or
drawing dependencies diagram. drawing dependencies diagram.
-p, --desc, [repository] [package], Print description of a package -p, --desc, [repository] [package], Print description of a package

View file

@ -39,7 +39,8 @@ Usage: slpkg Commands:
[-c [repository], --upgrade, --skip=[...], --resolve-off, [-c [repository], --upgrade, --skip=[...], --resolve-off,
--checklist] --checklist]
[-s [repository] [package...], --resolve-off, --case-ins] [-s [repository] [package...], --resolve-off, --case-ins]
[-t [repository] [package], --check-deps, --graph=[type]] [-t [repository] [package], --check-deps, --graph=[type],
--case-ins]
[-p [repository] [package], --color=[]] [-p [repository] [package], --color=[]]
[-n [SBo package], --checklist, --case-ins] [-n [SBo package], --checklist, --case-ins]
[-F [package...], --case-ins] [-F [package...], --case-ins]
@ -221,7 +222,7 @@ Additional options:
\fB--case-ins\fP : Search package name in repository with case insensitive. \fB--case-ins\fP : Search package name in repository with case insensitive.
.SS -t, --tracking, tracking dependencies .SS -t, --tracking, tracking dependencies
\fBslpkg\fP \fB-t\fP <\fIrepository\fP> <\fIname of package\fP>, \fB--check-deps\fP, \fB--graph=[type]\fP \fBslpkg\fP \fB-t\fP <\fIrepository\fP> <\fIname of package\fP>, \fB--check-deps\fP, \fB--graph=[type]\fP \fB--case-ins\fP
.PP .PP
Tracking all dependencies of that package. Tracking all dependencies of that package.
The sequence shown is that you must follow to correctly install package. The sequence shown is that you must follow to correctly install package.
@ -232,6 +233,8 @@ Additional options:
\fB--check-deps\fP : Check if installed packages used by other packages. \fB--check-deps\fP : Check if installed packages used by other packages.
.PP .PP
\fB--graph=[type]\fP : Drawing dependencies graph. (example for type: ascii, image.x11, image.png etc. Require pygraphviz) \fB--graph=[type]\fP : Drawing dependencies graph. (example for type: ascii, image.x11, image.png etc. Require pygraphviz)
.PP
\fB--case-ins\fP : Search package name in repository with case insensitive.
.SS -p, --desk, print packages description .SS -p, --desk, print packages description
\fBslpkg\fP \fB-p\fP <\fIrepository\fP> <\fIname of package\fP>, \fB--color=[]\fP \fBslpkg\fP \fB-p\fP <\fIrepository\fP> <\fIname of package\fP>, \fB--color=[]\fP

View file

@ -95,8 +95,8 @@ Optional arguments:
--resolve-off, --case-ins directly from remote repositories --resolve-off, --case-ins directly from remote repositories
with all dependencies. with all dependencies.
-t, --tracking, [repository] [package], Tracking package dependencies and -t, --tracking, [repository] [package], Tracking package dependencies and
--check-deps, --graph=[type] print package dependencies tree with --check-deps, --graph=[type], print package dependencies tree with
highlight if packages is installed. --case-ins highlight if packages is installed.
Also check if dependencies used or Also check if dependencies used or
drawing dependencies diagram. drawing dependencies diagram.
-p, --desc, [repository] [package], Print description of a package -p, --desc, [repository] [package], Print description of a package
@ -160,7 +160,8 @@ def usage(repo):
[-c [repository], --upgrade, --skip=[...], --resolve-off, [-c [repository], --upgrade, --skip=[...], --resolve-off,
--checklist] --checklist]
[-s [repository] [package...], --resolve-off, --case-ins] [-s [repository] [package...], --resolve-off, --case-ins]
[-t [repository] [package], --check-deps, --graph=[type]] [-t [repository] [package], --check-deps, --graph=[type],
--case-ins]
[-p [repository] [package], --color=[]] [-p [repository] [package], --color=[]]
[-n [SBo package], --checklist, --case-ins] [-n [SBo package], --checklist, --case-ins]
[-F [package...], --case-ins] [-F [package...], --case-ins]

View file

@ -355,7 +355,8 @@ class ArgParse(object):
] ]
additional_options = [ additional_options = [
"--check-deps", "--check-deps",
"--graph=" "--graph=",
"--case-ins"
] ]
if (len(self.args) >= 3 and len(self.args) < 6 and if (len(self.args) >= 3 and len(self.args) < 6 and
self.args[0] in options): self.args[0] in options):
@ -363,8 +364,12 @@ class ArgParse(object):
for arg in self.args[3:]: for arg in self.args[3:]:
if arg.startswith(additional_options[1]): if arg.startswith(additional_options[1]):
flag.append(arg) flag.append(arg)
arg = ""
if arg in additional_options: if arg in additional_options:
flag.append(arg) flag.append(arg)
if arg and arg not in additional_options:
usage("")
raise SystemExit()
TrackingDeps(self.args[2], self.args[1], flag).run() TrackingDeps(self.args[2], self.args[1], flag).run()
else: else:
usage(self.args[1]) usage(self.args[1])

View file

@ -30,6 +30,7 @@ from slpkg.__metadata__ import MetaData as _meta_
from slpkg.pkg.find import find_package from slpkg.pkg.find import find_package
from slpkg.sbo.greps import SBoGrep
from slpkg.sbo.dependency import Requires from slpkg.sbo.dependency import Requires
from slpkg.sbo.search import sbo_search_pkg from slpkg.sbo.search import sbo_search_pkg
@ -125,16 +126,42 @@ class TrackingDeps(object):
"""Get dependencies by repositories """Get dependencies by repositories
""" """
if self.repo == "sbo": if self.repo == "sbo":
self.dependencies_list = Requires(self.flag).sbo(self.name) self.sbo_case_insensitive()
self.find_pkg = sbo_search_pkg(self.name) self.find_pkg = sbo_search_pkg(self.name)
if self.find_pkg:
self.dependencies_list = Requires(self.flag).sbo(self.name)
else: else:
PACKAGES_TXT = Utils().read_file(self.meta.lib_path + "{0}_repo/" PACKAGES_TXT = Utils().read_file(
"PACKAGES.TXT".format(self.repo)) self.meta.lib_path + "{0}_repo/PACKAGES.TXT".format(self.repo))
self.names = Utils().package_name(PACKAGES_TXT) self.names = Utils().package_name(PACKAGES_TXT)
self.bin_case_insensitive()
self.find_pkg = search_pkg(self.name, self.repo)
if self.find_pkg:
self.black = BlackList().packages(self.names, self.repo) self.black = BlackList().packages(self.names, self.repo)
self.dependencies_list = Dependencies( self.dependencies_list = Dependencies(
self.names, self.repo, self.black).binary(self.name, self.flag) self.names, self.repo, self.black).binary(self.name,
self.find_pkg = search_pkg(self.name, self.repo) self.flag)
def sbo_case_insensitive(self):
"""Matching packages distinguish between uppercase and
lowercase for sbo repository
"""
if "--case-ins" in self.flag:
data = SBoGrep(name="").names()
data_dict = Utils().case_sensitive(data)
for key, value in data_dict.iteritems():
if key == self.name.lower():
self.name = value
def bin_case_insensitive(self):
"""Matching packages distinguish between uppercase and
lowercase
"""
if "--case-ins" in self.flag:
data_dict = Utils().case_sensitive(self.names)
for key, value in data_dict.iteritems():
if key == self.name.lower():
self.name = value
def graph(self): def graph(self):
"""Drawing image dependencies map """Drawing image dependencies map