Loading bin/is +7 −13 Original line number Diff line number Diff line Loading @@ -98,17 +98,13 @@ def c_build(parser, args): def c_cat(parser, args): ''' Display image's file(s) Display image's file ''' # looks if arguments is a file or image name if istools.isfile(args.image) 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) for filename in args.files: pkg.cat(filename) img, repo = select_image(args.image, repoman) for filename in args.file: img.cat(filename) def c_clean(parser, args): ''' Loading Loading @@ -340,10 +336,8 @@ p_build.set_defaults(func=c_build) # 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("files", nargs="+", help="files to cat") p_cat.add_argument("image") p_cat.add_argument("file", nargs="+", help="file to cat (glob allowed)") p_cat.set_defaults(func=c_cat) # clean command parser Loading installsystems/image.py +4 −8 Original line number Diff line number Diff line Loading @@ -17,7 +17,6 @@ import re import cStringIO import shutil import gzip import fnmatch import installsystems.template as istemplate import installsystems.tools as istools from installsystems.printer import * Loading Loading @@ -458,12 +457,9 @@ class PackageImage(Image): ''' Display filename in the tarball ''' for filename in fnmatch.filter(self._tarball.getnames(), filename): fd = self._tarball.extractfile(filename) if fd is not None: for filename in self._tarball.getnames(glob_pattern=filename): arrow(filename) out(fd.read()) fd.close() out(self._tarball.get_str(filename)) def run_parser(self, **kwargs): ''' Loading @@ -484,7 +480,7 @@ class PackageImage(Image): arrow("Run %s scripts" % directory) arrowlevel(1) # get list of parser scripts l_scripts = self._tarball.getnames("%s/.*\.py" % directory) l_scripts = self._tarball.getnames(re_pattern="%s/.*\.py" % directory) # order matter! l_scripts.sort() # run scripts Loading installsystems/tarball.py +10 −5 Original line number Diff line number Diff line Loading @@ -11,6 +11,7 @@ import time import tarfile import StringIO import re import fnmatch class Tarball(tarfile.TarFile): def add_str(self, name, content, ftype, mode): Loading @@ -31,15 +32,19 @@ class Tarball(tarfile.TarFile): Return a string from a filename in a tarball ''' ti = self.getmember(name) return self.extractfile(ti).read() fd = self.extractfile(ti) return fd.read() if fd is not None else "" def getnames(self, reg_pattern=None): def getnames(self, re_pattern=None, glob_pattern=None): lorig = super(Tarball, self).getnames() if reg_pattern is None: return lorig else: # regexp matching if re_pattern is not None: return [ tpname for tpname in lorig if re.match(reg_pattern, tpname) ] # globbing matching if glob_pattern is not None: return fnmatch.filter(lorig, glob_pattern) return lorig def size(self): ''' Loading Loading
bin/is +7 −13 Original line number Diff line number Diff line Loading @@ -98,17 +98,13 @@ def c_build(parser, args): def c_cat(parser, args): ''' Display image's file(s) Display image's file ''' # looks if arguments is a file or image name if istools.isfile(args.image) 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) for filename in args.files: pkg.cat(filename) img, repo = select_image(args.image, repoman) for filename in args.file: img.cat(filename) def c_clean(parser, args): ''' Loading Loading @@ -340,10 +336,8 @@ p_build.set_defaults(func=c_build) # 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("files", nargs="+", help="files to cat") p_cat.add_argument("image") p_cat.add_argument("file", nargs="+", help="file to cat (glob allowed)") p_cat.set_defaults(func=c_cat) # clean command parser Loading
installsystems/image.py +4 −8 Original line number Diff line number Diff line Loading @@ -17,7 +17,6 @@ import re import cStringIO import shutil import gzip import fnmatch import installsystems.template as istemplate import installsystems.tools as istools from installsystems.printer import * Loading Loading @@ -458,12 +457,9 @@ class PackageImage(Image): ''' Display filename in the tarball ''' for filename in fnmatch.filter(self._tarball.getnames(), filename): fd = self._tarball.extractfile(filename) if fd is not None: for filename in self._tarball.getnames(glob_pattern=filename): arrow(filename) out(fd.read()) fd.close() out(self._tarball.get_str(filename)) def run_parser(self, **kwargs): ''' Loading @@ -484,7 +480,7 @@ class PackageImage(Image): arrow("Run %s scripts" % directory) arrowlevel(1) # get list of parser scripts l_scripts = self._tarball.getnames("%s/.*\.py" % directory) l_scripts = self._tarball.getnames(re_pattern="%s/.*\.py" % directory) # order matter! l_scripts.sort() # run scripts Loading
installsystems/tarball.py +10 −5 Original line number Diff line number Diff line Loading @@ -11,6 +11,7 @@ import time import tarfile import StringIO import re import fnmatch class Tarball(tarfile.TarFile): def add_str(self, name, content, ftype, mode): Loading @@ -31,15 +32,19 @@ class Tarball(tarfile.TarFile): Return a string from a filename in a tarball ''' ti = self.getmember(name) return self.extractfile(ti).read() fd = self.extractfile(ti) return fd.read() if fd is not None else "" def getnames(self, reg_pattern=None): def getnames(self, re_pattern=None, glob_pattern=None): lorig = super(Tarball, self).getnames() if reg_pattern is None: return lorig else: # regexp matching if re_pattern is not None: return [ tpname for tpname in lorig if re.match(reg_pattern, tpname) ] # globbing matching if glob_pattern is not None: return fnmatch.filter(lorig, glob_pattern) return lorig def size(self): ''' Loading