diff options
Diffstat (limited to 'scripts/check-viewer-xml')
-rwxr-xr-x | scripts/check-viewer-xml | 104 |
1 files changed, 0 insertions, 104 deletions
diff --git a/scripts/check-viewer-xml b/scripts/check-viewer-xml deleted file mode 100755 index 85366c02ae..0000000000 --- a/scripts/check-viewer-xml +++ /dev/null @@ -1,104 +0,0 @@ -#!/usr/bin/env python -from __future__ import print_function -import sys -import os -import argparse -import xml.etree.ElementTree as xml - -try: - from llbase import llsd -except ImportError: - try: - from indra.base import llsd - except ImportError: - sys.exit("""Failed to import python llsd module from llbase or indra.base. -Try - pip install llbase -or - sudo pip install llbase -""") - -def warning(*objs): - print(*objs, file=sys.stderr) - -def xml_is_ok(file): - # Check that the XML file is well formed. - try : - elements = xml.parse(file) - except IOError as read_error: - warning("XML not readable '%s':\n %s" % (file, read_error)) - return False - except xml.ParseError as parse_error : - warning("XML not well-formed '%s':\n %s" % (file, parse_error.msg)) - return False - - root = elements.getroot() - if root.tag == 'llsd': - # if it's LLSD, we should be able to also validate that - with open(file, "r") as llsd_file: - llsd_content=llsd_file.read() - try: - llsd.parse(llsd_content) - except Exception as validity_error: - warning("LLSD not valid '%s':\n %s" % (file, validity_error)) - return False - elif arg.verbosity == 'verbose': - warning(" %s is not a document type that can be validated" % root.tag) - - return True - -cmd_line = argparse.ArgumentParser(description='Checks all xml files found in viewer settings and cache directories ', - prog='check-viewer-xml', - ) -cmd_line.add_argument('directory', nargs='*', default=None, - help='additional directories to check') -verbosity_options=cmd_line.add_mutually_exclusive_group() -verbosity_options.add_argument('-v', '--verbose', - help='verbose output', action='store_const', const='verbose', dest='verbosity') -verbosity_options.add_argument('-q', '--quiet', - help='output errors only', action='store_const', const='quiet', dest='verbosity', default='normal') - -arg = cmd_line.parse_args() - -if sys.platform == 'darwin': - CheckDirs = [ os.path.expanduser('~/Library/Caches/SecondLife'), - os.path.expanduser('~/Library/Application Support/SecondLife'), - ] -elif sys.platform == 'linux2': - CheckDirs = [ os.path.expanduser('~/.secondlife'), - ] -elif sys.platform == 'win32' or sys.platform == 'cygwin': - if os.path.isdir(os.path.expanduser('~\\AppData\\Roaming')): - CheckDirs = [ os.path.expanduser('~\\Application\\Data\\Secondlife'), - os.path.expanduser('~\\AppData\\Roaming\\Secondlife'), - os.path.expanduser('~\\AppData\\Local\\Secondlife'), - ] - else: - sys.exit("No AppData\\Roaming directory found;\nThis script must be run in a native Windows command shell.\nRunning under cygwin does not work.") -else: - sys.exit("unrecognized platform '%s'" % sys.platform) - -if arg.directory: - CheckDirs.extend(arg.directory) - -checked_files = 0 -invalid_files = 0 -for root in filter(os.path.isdir, CheckDirs): - if arg.verbosity == 'verbose': - print("Searching '%s'" % root) - for directory, dirs, files in os.walk(root): - for file in files: - if file.endswith('.xml'): - xml_file = os.path.join(directory,file) - if arg.verbosity == 'verbose': - print("Checking '%s'" % xml_file) - checked_files += 1 - if not xml_is_ok(xml_file): - invalid_files += 1 - -if arg.verbosity != 'quiet': - print("Checked %d files, %d errors found." % (checked_files, invalid_files)) - -sys.exit(invalid_files) - - |