/usr/bin/sqlformat is in python-sqlparse 0.1.3-1.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
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 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 | #!/usr/bin/python
# Copyright (C) 2008 Andi Albrecht, albrecht.andi@gmail.com
#
# This module is part of python-sqlparse and is released under
# the BSD License: http://www.opensource.org/licenses/bsd-license.php.
import optparse
import os
import sys
import sqlparse
_CASE_CHOICES = ['upper', 'lower', 'capitalize']
parser = optparse.OptionParser(usage='%prog [OPTIONS] FILE, ...',
version='%%prog %s' % sqlparse.__version__)
parser.set_description(('Format FILE according to OPTIONS. Use "-" as FILE '
'to read from stdin.'))
parser.add_option('-v', '--verbose', dest='verbose', action='store_true')
parser.add_option('-o', '--outfile', dest='outfile', metavar='FILE',
help='write output to FILE (defaults to stdout)')
group = parser.add_option_group('Formatting Options')
group.add_option('-k', '--keywords', metavar='CHOICE',
dest='keyword_case', choices=_CASE_CHOICES,
help=('change case of keywords, CHOICE is one of %s'
% ', '.join('"%s"' % x for x in _CASE_CHOICES)))
group.add_option('-i', '--identifiers', metavar='CHOICE',
dest='identifier_case', choices=_CASE_CHOICES,
help=('change case of identifiers, CHOICE is one of %s'
% ', '.join('"%s"' % x for x in _CASE_CHOICES)))
group.add_option('-l', '--language', metavar='LANG',
dest='output_format', choices=['python', 'php'],
help=('output a snippet in programming language LANG, '
'choices are "python", "php"'))
group.add_option('--strip-comments', dest='strip_comments',
action='store_true', default=False,
help='remove comments')
group.add_option('-r', '--reindent', dest='reindent',
action='store_true', default=False,
help='reindent statements')
group.add_option('--indent_width', dest='indent_width', default=2,
help='indentation width (defaults to 2 spaces)')
_FORMATTING_GROUP = group
def _error(msg, exit_=None):
"""Print msg and optionally exit with return code exit_."""
print >>sys.stderr, '[ERROR] %s' % msg
if exit_ is not None:
sys.exit(exit_)
def _build_formatter_opts(options):
"""Convert command line options to dictionary."""
d = {}
for option in _FORMATTING_GROUP.option_list:
d[option.dest] = getattr(options, option.dest)
return d
def main():
options, args = parser.parse_args()
if options.verbose:
print >>sys.stderr, 'Verbose mode'
if len(args) != 1:
_error('No input data.')
parser.print_usage()
sys.exit(1)
if '-' in args: # read from stdin
data = sys.stdin.read()
else:
try:
data = '\n'.join(open(args[0]).readlines())
except OSError, err:
_error('Failed to read %s: %s' % (args[0], err), exit_=1)
if options.outfile:
try:
stream = open(options.outfile, 'w')
except OSError, err:
_error('Failed to open %s: %s' % (options.outfile, err), exit_=1)
else:
stream = sys.stdout
formatter_opts = _build_formatter_opts(options)
try:
formatter_opts = sqlparse.formatter.validate_options(formatter_opts)
except sqlparse.SQLParseError, err:
_error('Invalid options: %s' % err, exit_=1)
stream.write(sqlparse.format(data, **formatter_opts).encode('utf-8',
'replace'))
stream.flush()
if __name__ == '__main__':
main()
|