diff --git a/bin/is b/bin/is index 88451fc75732756f712b6b98a27265da65bda890..1b67f0b3bb9dd73c1bd42fea4b582ee3b1bb3d76 100755 --- a/bin/is +++ b/bin/is @@ -189,6 +189,19 @@ def c_list(parser, args): arrow('#light##green#[Image]#reset# %s' % pkg.name) pkg.show(verbose=args.verbose_list, list=True) +def c_cat(parser, args): + ''' + Display image's file + ''' + # looks if arguments is a file or image name + if istools.pathtype(args.image) == "file" and os.path.isfile(args.image): + pkg = PackageImage(istools.abspath(args.image)) + elif PackageImage.check_image_name(args.image): + # get image package + repoman = load_repositories(args) + pkg = repoman.get(args.image, args.image_version) + pkg.cat(args.file) + def c_search(parser, args): ''' Search in repository @@ -292,6 +305,15 @@ p_install.add_argument("-v", "--image-version", type=int, default=None, p_install.add_argument("image", help="image to install (path or name)") p_install.set_defaults(func=c_install, subparser=p_install) +# cat command parser +p_cat = subparsers.add_parser("cat", help=c_cat.__doc__.lower()) + +p_cat.add_argument("-v", "--image-version", type=int, default=None, + help="image version") +p_cat.add_argument("image", help="image (path or name)") +p_cat.add_argument("file", help="file to cat") +p_cat.set_defaults(func=c_cat, subparser=p_cat) + # get command parser p_get = subparsers.add_parser("get", help=c_get.__doc__.lower()) p_get.set_defaults(func=c_get) diff --git a/installsystems/image.py b/installsystems/image.py index 860927b9551cc81e2434deb597e7cac41881d0fc..57a8e10a41e3a8bc1edd20a9fbcce758581bf21f 100644 --- a/installsystems/image.py +++ b/installsystems/image.py @@ -457,6 +457,11 @@ class PackageImage(Image): pay_obj.check() arrowlevel(-1) + def cat(self, file): + fd = self._tarball.extractfile(file) + arrow("%s v%s : %s" % (self.name, self.version, file)) + out(fd.read()) + def run_parser(self, **kwargs): ''' Run parser scripts