You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
2.3 KiB
Python
79 lines
2.3 KiB
Python
"""EditorConfig command line interface
|
|
|
|
Licensed under PSF License (see LICENSE.txt file).
|
|
|
|
"""
|
|
|
|
import getopt
|
|
import sys
|
|
|
|
from editorconfig import __version__, VERSION
|
|
from editorconfig.compat import force_unicode
|
|
from editorconfig.versiontools import split_version
|
|
from editorconfig.handler import EditorConfigHandler
|
|
from editorconfig.exceptions import ParsingError, PathError, VersionError
|
|
|
|
|
|
def version():
|
|
print("EditorConfig Python Core Version %s" % __version__)
|
|
|
|
|
|
def usage(command, error=False):
|
|
if error:
|
|
out = sys.stderr
|
|
else:
|
|
out = sys.stdout
|
|
out.write("%s [OPTIONS] FILENAME\n" % command)
|
|
out.write('-f '
|
|
'Specify conf filename other than ".editorconfig".\n')
|
|
out.write("-b "
|
|
"Specify version (used by devs to test compatibility).\n")
|
|
out.write("-h OR --help Print this help message.\n")
|
|
out.write("-v OR --version Display version information.\n")
|
|
|
|
|
|
def main():
|
|
command_name = sys.argv[0]
|
|
try:
|
|
opts, args = getopt.getopt(list(map(force_unicode, sys.argv[1:])),
|
|
"vhb:f:", ["version", "help"])
|
|
except getopt.GetoptError as e:
|
|
print(str(e))
|
|
usage(command_name, error=True)
|
|
sys.exit(2)
|
|
|
|
version_tuple = VERSION
|
|
conf_filename = '.editorconfig'
|
|
|
|
for option, arg in opts:
|
|
if option in ('-h', '--help'):
|
|
usage(command_name)
|
|
sys.exit()
|
|
if option in ('-v', '--version'):
|
|
version()
|
|
sys.exit()
|
|
if option == '-f':
|
|
conf_filename = arg
|
|
if option == '-b':
|
|
version_tuple = split_version(arg)
|
|
if version_tuple is None:
|
|
sys.exit("Invalid version number: %s" % arg)
|
|
|
|
if len(args) < 1:
|
|
usage(command_name, error=True)
|
|
sys.exit(2)
|
|
filenames = args
|
|
multiple_files = len(args) > 1
|
|
|
|
for filename in filenames:
|
|
handler = EditorConfigHandler(filename, conf_filename, version_tuple)
|
|
try:
|
|
options = handler.get_configurations()
|
|
except (ParsingError, PathError, VersionError) as e:
|
|
print(str(e))
|
|
sys.exit(2)
|
|
if multiple_files:
|
|
print("[%s]" % filename)
|
|
for key, value in options.items():
|
|
print("%s=%s" % (key, value))
|