main.py 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. """EditorConfig command line interface
  2. Licensed under PSF License (see LICENSE.txt file).
  3. """
  4. import getopt
  5. import sys
  6. from editorconfig import __version__, VERSION
  7. from editorconfig.compat import force_unicode
  8. from editorconfig.versiontools import split_version
  9. from editorconfig.handler import EditorConfigHandler
  10. from editorconfig.exceptions import ParsingError, PathError, VersionError
  11. def version():
  12. print("EditorConfig Python Core Version %s" % __version__)
  13. def usage(command, error=False):
  14. if error:
  15. out = sys.stderr
  16. else:
  17. out = sys.stdout
  18. out.write("%s [OPTIONS] FILENAME\n" % command)
  19. out.write('-f '
  20. 'Specify conf filename other than ".editorconfig".\n')
  21. out.write("-b "
  22. "Specify version (used by devs to test compatibility).\n")
  23. out.write("-h OR --help Print this help message.\n")
  24. out.write("-v OR --version Display version information.\n")
  25. def main():
  26. command_name = sys.argv[0]
  27. try:
  28. opts, args = getopt.getopt(list(map(force_unicode, sys.argv[1:])),
  29. "vhb:f:", ["version", "help"])
  30. except getopt.GetoptError as e:
  31. print(str(e))
  32. usage(command_name, error=True)
  33. sys.exit(2)
  34. version_tuple = VERSION
  35. conf_filename = '.editorconfig'
  36. for option, arg in opts:
  37. if option in ('-h', '--help'):
  38. usage(command_name)
  39. sys.exit()
  40. if option in ('-v', '--version'):
  41. version()
  42. sys.exit()
  43. if option == '-f':
  44. conf_filename = arg
  45. if option == '-b':
  46. version_tuple = split_version(arg)
  47. if version_tuple is None:
  48. sys.exit("Invalid version number: %s" % arg)
  49. if len(args) < 1:
  50. usage(command_name, error=True)
  51. sys.exit(2)
  52. filenames = args
  53. multiple_files = len(args) > 1
  54. for filename in filenames:
  55. handler = EditorConfigHandler(filename, conf_filename, version_tuple)
  56. try:
  57. options = handler.get_configurations()
  58. except (ParsingError, PathError, VersionError) as e:
  59. print(str(e))
  60. sys.exit(2)
  61. if multiple_files:
  62. print("[%s]" % filename)
  63. for key, value in options.items():
  64. print("%s=%s" % (key, value))