summaryrefslogtreecommitdiff
path: root/tablib/cli.py
diff options
context:
space:
mode:
Diffstat (limited to 'tablib/cli.py')
-rw-r--r--tablib/cli.py85
1 files changed, 85 insertions, 0 deletions
diff --git a/tablib/cli.py b/tablib/cli.py
new file mode 100644
index 0000000..77b354d
--- /dev/null
+++ b/tablib/cli.py
@@ -0,0 +1,85 @@
+#!/usr/bin/env python
+# encoding: utf-8
+
+""" Tabbed CLI Inteface Application
+"""
+
+import io
+import sys
+
+from helpers import *
+import tabbed.core
+
+from packages import opster
+
+
+FORMATS = ('json', 'yaml', 'xls', 'csv', 'html')
+
+opts = []
+
+opts.append(('v', 'version', False, 'Report tabbed version'))
+
+for format in FORMATS:
+ opts.append(('', format, False, 'Output to %s' % (format.upper())))
+
+
+
+@opster.command(options=opts, usage='[FILE] [--FORMAT | FILE]')
+def start(in_file=None, out_file=None, **opts):
+ """Covertly convert dataset formats"""
+
+ opts = Object(**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 \ No newline at end of file