From fba78c61375bb0a1dfa6cd9fb4c2acc93dac1258 Mon Sep 17 00:00:00 2001 From: Sebastien Luttringer Date: Thu, 5 Jan 2012 19:21:58 +0100 Subject: [PATCH] add json output to info command --- bin/is | 4 ++- installsystems/image.py | 59 ++++++++++++++++++++++------------------- 2 files changed, 34 insertions(+), 29 deletions(-) diff --git a/bin/is b/bin/is index 0577b32..f1b379e 100755 --- a/bin/is +++ b/bin/is @@ -324,7 +324,7 @@ def c_info(args): for image in args.image: img, repo = select_image(image, repoman, search=args.repo_search, best=args.best) - img.show(verbose=args.verbose, changelog=args.changelog) + img.show(o_verbose=args.verbose, o_changelog=args.changelog, o_json=args.json) def c_init(args): ''' @@ -607,6 +607,8 @@ def arg_parser_init(): help="take the most recent image in all searchable repositories") p.add_argument("-c", "--changelog", action="store_true", help="display image changelog") + p.add_argument("-j", "--json", action="store_true", + help="output is formated in json") p.add_argument("-v", "--verbose", action="store_true", help="verbose output") p.add_argument("image", nargs="+", diff --git a/installsystems/image.py b/installsystems/image.py index 4c76646..67d8986 100644 --- a/installsystems/image.py +++ b/installsystems/image.py @@ -579,37 +579,40 @@ class PackageImage(Image): warn("Invalid changelog: %s" % e) return desc - def show(self, verbose=False, changelog=False): + def show(self, o_verbose=False, o_changelog=False, o_json=False): ''' Display image content ''' - out('#light##yellow#Name:#reset# %s' % self.name) - out('#light##yellow#Version:#reset# %s' % self.version) - out('#yellow#Date:#reset# %s' % istools.time_rfc2822(self.date)) - out('#yellow#Description:#reset# %s' % self.description) - out('#yellow#Author:#reset# %s' % self.author) - if verbose: - # field is_build_version is new in version 5. I can be absent. - try: out('#yellow#IS build version:#reset# %s' % self.is_build_version) - except AttributeError: pass - # field is_min_version is new in version 5. I can be absent. - try: out('#yellow#IS minimum version:#reset# %s' % self.is_min_version) - except AttributeError: pass - out('#yellow#MD5:#reset# %s' % self.md5) - if verbose: - payloads = self.payload - for payload_name in payloads: - payload = payloads[payload_name] - out('#light##yellow#Payload:#reset# %s' % payload_name) - out(' #yellow#Date:#reset# %s' % istools.time_rfc2822(payload.mtime)) - out(' #yellow#Size:#reset# %s' % (istools.human_size(payload.size))) - out(' #yellow#MD5:#reset# %s' % payload.md5) - # display image content - out('#light##yellow#Content:#reset#') - self._tarball.list(verbose) - # display changelog - if changelog: - self.changelog.show(int(self.version), verbose) + if o_json: + out(json.dumps(self._metadata)) + else: + out('#light##yellow#Name:#reset# %s' % self.name) + out('#light##yellow#Version:#reset# %s' % self.version) + out('#yellow#Date:#reset# %s' % istools.time_rfc2822(self.date)) + out('#yellow#Description:#reset# %s' % self.description) + out('#yellow#Author:#reset# %s' % self.author) + if o_verbose: + # field is_build_version is new in version 5. I can be absent. + try: out('#yellow#IS build version:#reset# %s' % self.is_build_version) + except AttributeError: pass + # field is_min_version is new in version 5. I can be absent. + try: out('#yellow#IS minimum version:#reset# %s' % self.is_min_version) + except AttributeError: pass + out('#yellow#MD5:#reset# %s' % self.md5) + if o_verbose: + payloads = self.payload + for payload_name in payloads: + payload = payloads[payload_name] + out('#light##yellow#Payload:#reset# %s' % payload_name) + out(' #yellow#Date:#reset# %s' % istools.time_rfc2822(payload.mtime)) + out(' #yellow#Size:#reset# %s' % (istools.human_size(payload.size))) + out(' #yellow#MD5:#reset# %s' % payload.md5) + # display image content + out('#light##yellow#Content:#reset#') + self._tarball.list(o_verbose) + # display changelog + if o_changelog: + self.changelog.show(int(self.version), o_verbose) def check(self, message="Check MD5"): ''' -- GitLab