--- /dev/null
+#!/usr/bin/env python
+
+__doc__ = '''
+Convert a json file to msgpack.
+
+If fed only an input file the converted will write out a .pack file
+of the same base name in the same directory
+$ json2msgpack.py -i foo.json
+foo.json > foo.pack
+
+Specify an output file path
+$ json2msgpack.py -i foo.json -o /bar/tmp/bar.pack
+foo.json > /bar/tmp/bar.pack
+
+Dependencies:
+https://github.com/msgpack/msgpack-python
+'''
+
+import os
+import sys
+import json
+import argparse
+
+sys.path.append(os.path.dirname(os.path.realpath(__file__)))
+
+import msgpack
+
+EXT = '.pack'
+
+def main():
+ parser = argparse.ArgumentParser()
+ parser.add_argument('-i', '--infile', required=True,
+ help='Input json file to convert to msgpack')
+ parser.add_argument('-o', '--outfile',
+ help=('Optional output. If not specified the .pack file '\
+ 'will write to the same director as the input file.'))
+ args = parser.parse_args()
+ convert(args.infile, args.outfile)
+
+def convert(infile, outfile):
+ if not outfile:
+ ext = infile.split('.')[-1]
+ outfile = '%s%s' % (infile[:-len(ext)-1], EXT)
+
+ print('%s > %s' % (infile, outfile))
+
+ print('reading in JSON')
+ with open(infile) as op:
+ data = json.load(op)
+
+ print('writing to msgpack')
+ with open(outfile, 'wb') as op:
+ msgpack.dump(data, op)
+
+if __name__ == '__main__':
+ main()