Skip to content
Snippets Groups Projects
Commit 9af0fed2 authored by Seblu's avatar Seblu
Browse files

change list behaviour

parent e473755d
No related branches found
No related tags found
No related merge requests found
......@@ -139,56 +139,39 @@ def c_list(parser, args):
'''
List images in repository or image content
'''
args.repo_filter = None
# List available repositories
if len(args.list_args) == 0:
# List available repository
repoman = load_repositories(args)
arrow('#light##green#[Repos]#reset#')
for repo in repoman:
out(repo.config.name)
# <repo> | <image> | <image file>
repoman.show(verbose=args.detail)
return
# list direct image or reposity content
elif len(args.list_args) == 1:
# <image file>
if istools.pathtype(args.list_args[0]) == 'file' and\
os.path.isfile(args.list_args[0]):
pkg = PackageImage(istools.abspath(args.list_args[0]))
arrow('#light##green#[Image]#reset# %s' % pkg.name)
pkg.show(verbose=args.verbose_list, list=True)
# list image file content
if (istools.pathtype(args.list_args[0]) == 'file' and
os.path.isfile(args.list_args[0])):
pkg = PackageImage(args.list_args[0])
pkg.show(verbose=args.detail)
# list repository content
else:
args.repo_filter = args.list_args[0]
repoman = load_repositories(args)
# <repo>
if len(repoman) != 0:
for repo in repoman:
arrow('#light##green#[Repo]#reset# %s' % repo.config.name)
repo.show(args.verbose_list)
# <image>
else:
args.repo_filter = None
args.image = args.list_args[0]
args.image_version = None
# <repo> <image> | <image> <version>
for repo in repoman:
repo.show(args.detail)
return
# list last image version
elif len(args.list_args) == 2:
# <repo> <image>
if not PackageImage.check_image_version(args.list_args[1]):
args.repo_filter = args.list_args[0]
args.image = args.list_args[1]
args.image_version = None
# <image> <version>
else:
args.image = args.list_args[0]
args.image_version = args.list_args[1]
# <repo> <image> <version>
args.repo_filter = args.list_args[0]
args.image = args.list_args[1]
args.image_version = None
# list specific image version
elif len(args.list_args) == 3:
args.repo_filter = args.list_args[0]
args.image = args.list_args[1]
args.image_version = args.list_args[2]
if hasattr(args, 'image'):
repoman = load_repositories(args)
pkg = repoman.get(args.image, args.image_version)
arrow('#light##green#[Image]#reset# %s' % pkg.name)
pkg.show(verbose=args.verbose_list, list=True)
# display content of image accross a repositories
repoman = load_repositories(args)
pkg = repoman.get(args.image, args.image_version)
pkg.show(verbose=args.detail)
def c_cat(parser, args):
'''
......@@ -321,9 +304,9 @@ p_get.set_defaults(func=c_get)
# list command parser
p_list = subparsers.add_parser("list", help=c_list.__doc__.lower())
p_list.add_argument("-l", action="store_true", dest='verbose_list',
default=False, help='Detailled list output')
p_list.add_argument("list_args", nargs="*", help="Repo or image to list")
p_list.add_argument("-l", action="store_true", dest='detail',
default=False, help='detailled list output')
p_list.add_argument("list_args", nargs="*", help="list content of image or repositories")
p_list.set_defaults(func=c_list)
# search command parser
......
......@@ -417,30 +417,26 @@ class PackageImage(Image):
arrowlevel(-1)
return desc
def show(self, verbose=False, list=False):
def show(self, verbose=False):
'''
Display image content
'''
out('Name : %s' % self.name)
out('Version : %s' % self.version)
out('Date : %s' % time.asctime(time.gmtime(self.date)))
out('#light##yellow#Name:#reset# %s' % self.name)
out('#light##yellow#Version:#reset# %s' % self.version)
out('#yellow#Date:#reset# %s' % time.asctime(time.gmtime(self.date)))
out('#yellow#Description:#reset# %s' % self.description)
out('#yellow#Author:#reset# %s' % self.author)
out('#yellow#MD5:#reset# %s' % self.md5)
if verbose:
out('Description : %s' % self.description)
out('Author : %s' % self.author)
out('MD5 : %s' % self.md5 )
out('Payload :')
payloads = self.payload
for payload_name in payloads:
payload = payloads[payload_name]
out(' Name : %s' % payload_name)
out(' Date : %s' % time.asctime(time.gmtime(payload.mtime)))
out(' Size : %s' % (istools.human_size(payload.size)))
out(' MD5 : %s' % payload.md5)
out('')
out('')
if list:
out('Content : ')
self._tarball.list(verbose)
out('#light##yellow#Payload:#reset# %s' % payload_name)
out(' #yellow#Date:#reset# %s' % time.asctime(time.gmtime(payload.mtime)))
out(' #yellow#Size:#reset# %s' % (istools.human_size(payload.size)))
out(' #yellow#MD5:#reset# %s' % payload.md5)
out('#light##yellow#Content:#reset#')
self._tarball.list(verbose)
def check(self, message="Check MD5"):
'''
......
......@@ -185,26 +185,22 @@ class Repository(object):
List images in repository
'''
images = self.db.ask("SELECT md5, name, version, date,\
author, description, size FROM image").fetchall()
author, description, size FROM image ORDER BY name, version").fetchall()
for image_md5, image_name, image_version, image_date, image_author,\
image_description, image_size in images:
out('Name : %s' % image_name)
out('Version : %s' % image_version)
out('Date : %s' % time.asctime(time.gmtime(image_date)))
for (image_md5, image_name, image_version, image_date, image_author,
image_description, image_size) in images:
out('#light##yellow#%s #reset#v%s' % (image_name, image_version))
if verbose:
out('Description : %s' % image_description)
out('Author : %s' % image_author)
out('MD5 : %s' % image_md5)
out('Payload :')
out(' #yellow#Date:#reset# %s' % time.asctime(time.gmtime(image_date)))
out(' #yellow#Description:#reset# %s' % image_description)
out(' #yellow#Author:#reset# %s' % image_author)
out(' #yellow#MD5:#reset# %s' % image_md5)
payloads = self.db.ask("SELECT md5, name, size FROM payload\
WHERE image_md5 = ?", (image_md5,)).fetchall()
for payload_md5, payload_name, payload_size in payloads:
out(' Name : %s' % payload_name)
out(' Size : %s' % (istools.human_size(payload_size)))
out(' MD5 : %s' % payload_md5)
out('')
out('')
out(' #light##yellow#Payload:#reset# %s' % payload_name)
out(' #yellow#Size:#reset# %s' % (istools.human_size(payload_size)))
out(' #yellow#MD5:#reset# %s' % payload_md5)
def _remove_file(self, filename):
'''
......@@ -534,3 +530,14 @@ class RepositoryManager(object):
if repo.has(name, version):
return repo.get(name, version)
raise Exception("Unable to find %s v%s" % (name, version))
def show(self, verbose=False):
'''
Show repository inside manager
'''
for repo in self.repos:
repo.config.name
s = "#light##blue#%s#reset#"% repo.config.name
if verbose:
s += ' (%s)' % repo.config.path
out(s)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment