diff -r 111eb4953d61 add-metadata.py --- a/add-metadata.py Tue Feb 26 13:38:11 2008 -0500 +++ b/add-metadata.py Mon Mar 16 15:44:52 2009 -0400 @@ -1,66 +1,59 @@ #!/usr/bin/python +# +# Copyright (c) 2008-2009 Foresight Linux +# This file is distributed under the terms of the MIT License. +# A copy is available at http://www.rpath.com/permanent/mit-license.html +# import os, sys, itertools +import optparse from conary import conaryclient, conarycfg, errors, trove, constants from conary.conaryclient import cmdline -class Error(errors.ConaryError): pass +def main(): + op = optparse.OptionParser(usage = "%prog [options] troveSpec [...]") + op.add_option('-u', '--url', help = "URL") + op.add_option('-s', '--short', help = "Short description") + op.add_option('-l', '--long', help = "Long description") + op.add_option('-c', '--category', help = "Category (semicolon-separated)", + action = "append") -def addMetadataCategories(troveSpec, categories): + options, args = op.parse_args() + if not (options.url or options.short or options.long or options.category): + sys.stderr.write("No option specified\n") + return 1 + if not args: + sys.stderr.write("No trove specified\n") + return 2 + if options.category and len(options.category) == 1: + # If only one option was specified, split at semicolon + options.category = options.category.split(';') + cfg = conarycfg.ConaryConfiguration(readConfigFiles=True) client = conaryclient.ConaryClient(cfg) - n, v, f = cmdline.parseTroveSpec(troveSpec) - trvList = client.repos.findTrove(cfg.installLabelPath, (n, v, f), defaultFlavor = cfg.flavor) + troveList = [] + for troveSpec in args: + n, v, f = cmdline.parseTroveSpec(troveSpec) + troveList.extend(client.repos.findTrove(cfg.installLabelPath, (n, v, f), defaultFlavor = cfg.flavor)) + metadataItem = buildMetadataItem(options) + client.repos.addMetadataItems(zip(troveList, itertools.repeat(metadataItem))) + +def buildMetadataItem(options): mi = trove.MetadataItem() - for category in categories: + + if options.url: + mi.url.set(options.url) + + if options.short: + mi.shortDesc.set(options.short) + + if options.long: + mi.longDesc.set(options.long) + + for category in (options.category or []): mi.categories.set(category) - client.repos.addMetadataItems(zip(trvList, itertools.repeat(mi))) - -def addMetadataShortDesc(troveSpec, shortDesc): - cfg = conarycfg.ConaryConfiguration(readConfigFiles=True) - client = conaryclient.ConaryClient(cfg) - n, v, f = cmdline.parseTroveSpec(troveSpec) - trvList = client.repos.findTrove(cfg.installLabelPath, (n, v, f), defaultFlavor = cfg.flavor) - - mi = trove.MetadataItem() - mi.shortDesc.set(shortDesc) - client.repos.addMetadataItems(zip(trvList, itertools.repeat(mi))) - -def addMetadataLongDesc(troveSpec, longDesc): - cfg = conarycfg.ConaryConfiguration(readConfigFiles=True) - client = conaryclient.ConaryClient(cfg) - n, v, f = cmdline.parseTroveSpec(troveSpec) - trvList = client.repos.findTrove(cfg.installLabelPath, (n, v, f), defaultFlavor = cfg.flavor) - - mi = trove.MetadataItem() - mi.longDesc.set(longDesc) - client.repos.addMetadataItems(zip(trvList, itertools.repeat(mi))) - -def usage(): - print >> sys.stderr, 'usage:' - print >> sys.stderr, ' %s [trove] [categories|shortDesc|longDesc] [content]' %sys.argv[0] - sys.exit(1) + return mi if __name__ == '__main__': - if len(sys.argv) != 4: - print "%s \n" % sys.argv[1] - print "%s \n" % sys.argv[2] - print "%s \n" % sys.argv[3] - print "%s \n" % sys.argv[4] - usage() - - try: - troveSpec = sys.argv[1] - if sys.argv[2] == 'categories': - rawCategories = sys.argv[3] - categories = rawCategories.split(';') - addMetadataCategories(troveSpec, categories) - elif sys.argv[2] == 'shortDesc': - addMetadataShortDesc(troveSpec, sys.argv[3]) - elif sys.argv[2] == 'longDesc': - addMetadataLongDesc(troveSpec, sys.argv[3]) - - except errors.ConaryError, e: - print >> sys.stderr, 'error: %s' % str(e) - sys.exit(1) + sys.exit(main()) diff -r 111eb4953d61 get-metadata.py --- a/get-metadata.py Tue Feb 26 13:38:11 2008 -0500 +++ b/get-metadata.py Mon Mar 16 15:44:52 2009 -0400 @@ -1,4 +1,9 @@ #!/usr/bin/python +# +# Copyright (c) 2008-2009 Foresight Linux +# This file is distributed under the terms of the MIT License. +# A copy is available at http://www.rpath.com/permanent/mit-license.html +# import sys from conary import conaryclient, conarycfg, errors diff -r 111eb4953d61 parse-desktop-file.sh --- a/parse-desktop-file.sh Tue Feb 26 13:38:11 2008 -0500 +++ b/parse-desktop-file.sh Mon Mar 16 15:44:52 2009 -0400 @@ -1,4 +1,9 @@ #!/bin/bash +# +# Copyright (c) 2008-2009 Foresight Linux +# This file is distributed under the terms of the MIT License. +# A copy is available at http://www.rpath.com/permanent/mit-license.html +# if [ $# -lt 1 ]; then @@ -23,6 +28,4 @@ echo $longDesc echo "####################################################################" -./add-metadata.py "$trove=$label" categories "$categories" -./add-metadata.py "$trove=$label" shortDesc "$shortDesc" -./add-metadata.py "$trove=$label" longDesc "$longDesc" +./add-metadata.py --category "$categories" --short "$shortDesc" --long "$longDesc" "$trove=$label"