#!/usr/bin/env python """fpm2irc - announces a package on IRC Usage: python fpm2irc [options] Options: -f ..., --fpm=... The .fpm package. -g ..., --grp=... The group of the .fpm package. (optional for !nobuild pkgs) """ import sys, getopt, os, time, socket chans = ["#frugalware", "#frugalware.fr"] sockpath = "/pub/other/mxw/mxw2.sock" def usage(): print __doc__ def main(argv): fpm = None grp = None nobuild = False # option parsing try: opts, args = getopt.getopt(argv, "f:g:", ["fpm=", "grp="]) except getopt.GetoptError: usage() sys.exit(1) for opt, arg in opts: if opt in ("-f", "--fpm"): fpm = arg elif opt in ("-g", "--grp"): grp = arg nobuild = True if not fpm: raise "missing -f package!" os.unsetenv("LANG") os.unsetenv("LC_ALL") repo = os.getcwd().split('/')[-2] try: os.stat(fpm) except OSError: if not nobuild: raise "missing -g group!" if not grp: sock = os.popen("pacman-g2 -Qi -p %s" % fpm) lines = sock.readlines() sock.close() for i in lines: if i.startswith("Groups"): grp = i.split(' : ')[1].split(' ')[0] break if not grp: raise "can't determine group for %s!" % fpm if 'uploader' in os.environ.keys(): uploader = os.environ['uploader'] else: try: uploader = os.environ['SUDO_USER'] except KeyError: uploader = os.environ['HOME'].split('/')[-1] lines = [] for i in chans: chan = i if uploader[:8] == "syncpkgd" and chan == "#frugalware": chan = "#frugalware.dev" lines.append("""c.privmsg("%s", "14packages7 %s3 %s/%s")""" % ( chan, uploader, repo, os.path.basename(fpm[:-4]))) client = socket.socket ( socket.AF_UNIX, socket.SOCK_DGRAM ) client.connect (sockpath) client.send ("\n".join(lines)) client.close() # to avoid floods time.sleep(2) if __name__ == "__main__": main(sys.argv[1:])