--- bin/Makefile.am | 3 +- bin/copy-to-journal | 86 +++++++++++++++++++++++++++++++++++++++++++++++++++ configure.ac | 2 +- 3 files changed, 89 insertions(+), 2 deletions(-) create mode 100755 bin/copy-to-journal
diff --git a/bin/Makefile.am b/bin/Makefile.am index 764f0ba..d69e07f 100644 --- a/bin/Makefile.am +++ b/bin/Makefile.am @@ -1,4 +1,5 @@ bin_SCRIPTS = \ - datastore-service + datastore-service \ + copy-to-journal EXTRA_DIST = $(bin_SCRIPTS) diff --git a/bin/copy-to-journal b/bin/copy-to-journal new file mode 100755 index 0000000..4fabd94 --- /dev/null +++ b/bin/copy-to-journal @@ -0,0 +1,86 @@ +#!/usr/bin/env python +# +# Simple script to import a file to the datastore +# Reinier Heeres, <[EMAIL PROTECTED]>, 2007-12-20 +# +# Modified by Phil Bordelon <[EMAIL PROTECTED]> 2007-12-20, 2007-12-21 +# to support adding metadata. Note that the MIME-type is required, +# as otherwise the datastore will not accept the file. + +import sys +import os +import optparse + +from sugar.datastore import datastore + +def build_option_parser(): + + usage = "Usage: %prog <file> -m MIMETYPE [-t TITLE] [-d DESC] [-T tag1 [-T tag2 ...]]" + parser = optparse.OptionParser(usage=usage) + + parser.add_option("-t", "--title", action="store", dest="title", + help="Set the title of the journal entry to TITLE", metavar="TITLE", + default=None) + parser.add_option("-d", "--description", action="store", + dest="description", metavar="DESC", + help="Set the description of the journal entry to DESC", + default=None) + parser.add_option("-m", "--mimetype", action="store", + dest="mimetype", metavar="MIMETYPE", + help="Set the file's MIME-type to MIMETYPE", + default=None) + parser.add_option("-T", "--tag", action="append", dest="tag_list", + help="Add tag TAG to the journal entry's tags; this option can be repeated", + metavar="TAG") + return parser + +if __name__ == "__main__": + + parser = build_option_parser() + options, args = parser.parse_args() + if len(args) < 1: + parser.print_help() + exit(0) + + fname = args[0] + absname = os.path.abspath(fname) + if not os.path.exists(absname): + print 'Error: File does not exist.' + parser.print_help() + exit(0) + + if not options.mimetype: + print 'Error: No MIME-type given.' + parser.print_help() + exit(0) + + try: + entry = datastore.create() + entry.set_file_path(absname) + + # Set the mimetype to the provided one. + entry.metadata['mime_type'] = options.mimetype + + # If no title is given, use the filename. + if options.title: + entry.metadata['title'] = options.title + else: + entry.metadata['title'] = fname + + # Use the description given, otherwise leave it blank. + if options.description: + entry.metadata['description'] = options.description + + # Lastly, if any tags are given, combine them into a single string + # and save them. + if options.tag_list: + tag_string = " ".join(options.tag_list) + entry.metadata['tags'] = tag_string + + datastore.write(entry) + print 'Created as %s' % (entry.object_id) + + entry.destroy() + + except Exception, e: + print 'Error: %s' % (e) diff --git a/configure.ac b/configure.ac index c60229a..93416ad 100644 --- a/configure.ac +++ b/configure.ac @@ -1,4 +1,4 @@ -AC_INIT([sugar-datastore],[0.2.2],[],[sugar-datastore]) +AC_INIT([sugar-datastore],[0.2.2.1],[],[sugar-datastore]) AC_PREREQ([2.59]) -- 1.5.2.5 _______________________________________________ Devel mailing list Devel@lists.laptop.org http://lists.laptop.org/listinfo/devel