#!/usr/bin/env python import re; from os import system as ossystem; from os import path as ospath; import sys; from parser import Manifest, Package; # [1] get absolute path #========================================================# path = ospath.dirname(ospath.dirname(ospath.realpath(__file__))); # [2] get @deb_file argument #========================================================# # [2] get group option (if set) OPTGROUP = None; ARGS = sys.argv; if( len(sys.argv) > 2 and ( sys.argv[1] == "-g" or sys.argv[1] == "--group" ) ): OPTGROUP = sys.argv[2]; ARGS = ARGS[0:1] + ARGS[3:]; deb_file = ARGS[1]; # [3] search for manifest file #========================================================# man = Manifest.Manifest(); # [5] Install the deb_file #========================================================# pkgName = ""; # (1) Try to install # print "\033[38;5;208m[deb-install] %s\033[0m" % (deb_file); exitcode = ossystem("sudo dpkg -i %s > %s/stdout" % (deb_file, path)); # (2) Read local stdout copy of stdout # findName = re.compile("^Unpacking ([a-zA-Z0-9_-]+)", re.MULTILINE) with open( "%s/stdout" % path, 'r' ) as f: line = f.read(); print line; m = findName.search(line); if ( m != None ): pkgName = m.group(1); # (3) On success and notice user # if ( exitcode == 0 and len(pkgName) > 0 ): print "\033[38;5;78msuccess\033[0m"; # (4) On failure notice user -> abort # else: print "\033[38;5;161merror\033[0m"; exit(1); # [6] Update manifest #========================================================# print "\033[38;5;39m[notifying] %s\033[0m" % (pkgName); # if existing package update it if( man.hasPackage(pkgName) ): pkgReg = man.getPackage(pkgName); if( OPTGROUP != None ): man.mvPackage(pkgName, OPTGROUP); pkgReg._deb = True; pkgReg.install(); # else create package else: pkgNew = Package.Package(pkgName, 'x', deb=True); if( OPTGROUP != None ): man.addPackage(pkgNew, OPTGROUP); else: man.addPackage(pkgNew); man.save();