All pastes #632551 Raw Edit

fixkeyword

public python v1 · immutable
#632551 ·published 2007-07-24 22:44 UTC
rendered paste body
#!/usr/bin/env python# Python version of c0nv1ct's bash keyword script.# Pythonised by Eden# Version 0.5## Usage: fixkeyword <tree-name/package> to unmask ~arch#        fixkeyword svn <tree-name/package> to unmask -9999 (svn) versions# import osimport syskeywordsf = '/etc/portage/package.keywords' portagedir = '/usr/portage/'laymandir = '/usr/portage/local/layman/'def chklayman(pkgname):    lst = os.listdir(laymandir)    print pkgname    for line in lst:        print line        if os.path.isdir(laymandir+line+"/"+pkgname):            print 'Package found in '+laymandir+line+'/'+pkgname            return 1            def usage():    print "Usage: fixkeyword <tree-name/package> to unmask ~arch keyword"    print "or fixkeyword svn <tree-name/package> to unmask -9999 (svn) versions"    os.exit(1)    #check we are root, if not print error and quitif os.getuid() != 0:    print os.getuid()    print 'You must be root to run this script'    sys.exit(1)# check for 32bit or 64bit and set keywordm = os.uname()if m[4] == 'x86_64':    KWORD = '~amd64'else:    KWORD = '~x86'# Check for arguments supplyed when running the script, if none# Show syntax and quit.if sys.argv[1] == '':    usage()elif sys.argv[1] == 'svn' and sys.argv[2] == '':    usage()elif sys.argv[1] == 'svn':    pkgname = sys.argv[2]    svn = sys.argv[1]else:    pkgname  = sys.argv[1]# make sure tree and package name were specifired <tree/packagename>f = open(keywordsf, 'a')if pkgname.find('/') != -1:    if os.path.isdir(portagedir+pkgname):        print 'Fixing ' + KWORD + ' keyword mask for package ' + pkgname        f.write(pkgname + " " + KWORD + "\n")    elif chklayman(pkgname) == 1:        print 'Fixing ' + KWORD + ' keyword mask for package ' + pkgname        f.write(pkgname + " " + KWORD + "\n")    else:        print 'directory doesnt exist'else:    usage()f.close()