summaryrefslogtreecommitdiff
path: root/tablib/cli.py
blob: 4e46eaee0c169b9c16733ac1de2287d0b37c3bc1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#!/usr/bin/env python
# encoding: utf-8

""" Tabbed CLI Inteface Application
"""

import io
import sys

import argue

import tablib
from helpers import Struct, piped



FORMATS = ('json', 'yaml', 'xls', 'csv')

opts = []

opts.append(('v', 'version', False, 'Report tabbed version'))

for format in FORMATS:
	opts.append(('', format, False, 'Output to %s' % (format.upper())))



@argue.command(options=opts, usage='[FILE] [--FORMAT | FILE]')
def start(in_file=None, out_file=None, **opts):
	"""Covertly convert dataset formats"""
	
	opts = Struct(**opts)
	
	if opts.version:
		print('Tabbed, Ver. %s' % tabbed.core.__version__)
		sys.sys.exit(0)
	
	stdin = piped()
	
	if stdin:
		print stdin
	
	elif in_file:
		
		try:
			in_file = io.open(in_file, 'r')
		except Exception, e:
			print(' %s cannot be read.' % in_file)
			sys.exit(65)
		
		file_ext = in_file.name.split('.')[-1]
		
		if file_ext.lower() in FORMATS:
			setattr(opts, file_ext, True)
		else:
			print('Import format not supported.')
			sys.exit(65)
	else:
		print('Please provide input.')
		sys.exit(65)
		

	
	_formats_sum = sum(opts[f] for f in FORMATS)
	
	# Multiple output formats given
	if _formats_sum > 1:
		print('Please specify a single output format.')
		sys.exit(64)
		
	# No output formats given
	elif _formats_sum < 1:
		print('Please specify an output format.')
		sys.exit(64)
	
	
	# fetch options.formats list
	# if sum(()) > 1
	# log only one data format please
	# if sum of formats == 0, specity format
	
	# look for filename
	
	print opts.__dict__
	print in_file
	print out_file