cctool

A tool for managing contacts and calendars.
git clone https://git.ce9e.org/cctool.git

commit
a45726a5b6b4a738dba703197128510e3ffe8353
parent
90dbef4a0ebd1328c84168d5fa33eaa512742b92
Author
Tobias Bengfort <tobias.bengfort@gmx.net>
Date
2014-04-21 00:10
concat multiple infiles

Diffstat

M cctool.py 34 ++++++++++++++++++----------------

1 files changed, 18 insertions, 16 deletions


diff --git a/cctool.py b/cctool.py

@@ -23,7 +23,6 @@
   23    23 # TODO
   24    24 # -	type conversion (especially dates)
   25    25 # -	filter/convert for valid fields
   26    -1 # -	doc
   27    26 # -	tests
   28    27 # -	merge
   29    28 # -	filter
@@ -325,20 +324,12 @@ if __name__ == '__main__':
  325   324 		metavar='FORMAT', dest='informat')
  326   325 	parser.add_argument('--to', '-t', choices=outformats.keys(),
  327   326 		metavar='FORMAT', dest='outformat')
  328    -1 	parser.add_argument('input', nargs='?', metavar='FILE')
   -1   327 	parser.add_argument('input', nargs='*', default=['-'], metavar='FILE')
  329   328 	parser.add_argument('--output', '-o', metavar='FILENAME')
  330   329 	parser.add_argument('--sort', '-s', metavar='SORTKEY',
  331   330 		help="sort entries by this field")
  332   331 	args = parser.parse_args()
  333   332 
  334    -1 	if args.informat is None and args.input is not None:
  335    -1 		ext = args.input.split(os.path.extsep)[-1]
  336    -1 		if ext in informats:
  337    -1 			args.informat = ext
  338    -1 	if args.informat is None:
  339    -1 		print("Missing input format")
  340    -1 		sys.exit(1)
  341    -1 
  342   333 	if args.outformat is None and args.output is not None:
  343   334 		ext = args.output.split(os.path.extsep)[-1]
  344   335 		if ext in outformats:
@@ -350,14 +341,25 @@ if __name__ == '__main__':
  350   341 	reload(sys)
  351   342 	sys.setdefaultencoding('utf-8')
  352   343 
  353    -1 	infile = sys.stdin if args.input is None else open(args.input)
  354   344 	outfile = sys.stdout if args.output is None else open(args.output)
  355   345 
  356    -1 	try:
  357    -1 		data = informats[args.informat]().load(infile)
  358    -1 	except Exception as e:
  359    -1 		log.error(e)
  360    -1 		sys.exit(1)
   -1   346 	data = []
   -1   347 	for fn in args.input:
   -1   348 		ext = fn.split(os.path.extsep)[-1]
   -1   349 		if args.informat is not None:
   -1   350 			informat = args.informat
   -1   351 		elif ext in informats:
   -1   352 			informat = ext
   -1   353 		else:
   -1   354 			print("Missing input format")
   -1   355 			sys.exit(1)
   -1   356 
   -1   357 		infile = sys.stdin if fn == '-' else open(fn)
   -1   358 		try:
   -1   359 			data += informats[informat]().load(infile)
   -1   360 		except Exception as e:
   -1   361 			log.error(e)
   -1   362 			sys.exit(1)
  361   363 
  362   364 	if args.sort is not None:
  363   365 		data = sorted(data, key=lambda x: x[args.sort])