mirror of
				https://github.com/notepad-plus-plus/notepad-plus-plus.git
				synced 2025-11-04 05:23:56 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			115 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			115 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
#!/usr/local/bin/python3
 | 
						|
 | 
						|
import os
 | 
						|
import io
 | 
						|
import sys
 | 
						|
 | 
						|
import requests
 | 
						|
from hashlib import sha256
 | 
						|
from lxml import etree
 | 
						|
 | 
						|
api_url = os.environ.get('APPVEYOR_API_URL')
 | 
						|
has_error = False
 | 
						|
 | 
						|
 | 
						|
def post_error(message):
 | 
						|
    global has_error
 | 
						|
 | 
						|
    has_error = True
 | 
						|
 | 
						|
    message = {
 | 
						|
        "message": message,
 | 
						|
        "category": "error",
 | 
						|
        "details": ""
 | 
						|
    }
 | 
						|
 | 
						|
    if api_url:
 | 
						|
        requests.post(api_url + "api/build/messages", json=message)
 | 
						|
    else:
 | 
						|
        from pprint import pprint
 | 
						|
        pprint(message)
 | 
						|
 | 
						|
 | 
						|
def parse_xml_file(filename_xml):
 | 
						|
 | 
						|
    # open and read schema file
 | 
						|
    #with open(filename_xsd, 'r') as schema_file:
 | 
						|
        #schema_to_check = schema_file.read()
 | 
						|
 | 
						|
    # open and read xml file
 | 
						|
    #with open(filename_xml, 'r') as xml_file:
 | 
						|
    #    xml_to_check = xml_file.read()
 | 
						|
 | 
						|
    # parse xml
 | 
						|
    try:
 | 
						|
        doc = etree.parse(filename_xml)
 | 
						|
        #print(f'{filename_xml} XML well formed, syntax ok.')
 | 
						|
 | 
						|
    # check for file IO error
 | 
						|
    except IOError:
 | 
						|
        #print('Invalid File')
 | 
						|
        post_error(f'{filename_xml}: IOError Invalid File')
 | 
						|
 | 
						|
 | 
						|
    # check for XML syntax errors
 | 
						|
    except etree.XMLSyntaxError as err:
 | 
						|
        #print('XML Syntax Error, see error_syntax.log')
 | 
						|
        post_error(f'{filename_xml}: {str(err.error_log)}: XMLSyntaxError Invalid File')
 | 
						|
 | 
						|
    # check for general XML errors
 | 
						|
    except etree.LxmlError as err:
 | 
						|
        #print('XML Error, see error_syntax.log')
 | 
						|
        post_error(f'{filename_xml}: {str(err.error_log)}: LxmlError Invalid File')
 | 
						|
 | 
						|
    except:
 | 
						|
        #print('Unknown error.')
 | 
						|
        post_error(f'{filename_xml}: Unknown error. Maybe check that no xml version is in the first line.')
 | 
						|
 | 
						|
def parse_xml_files_from_APIs_dir():
 | 
						|
 | 
						|
    for file in os.listdir("PowerEditor/installer/APIs"):
 | 
						|
        if file.endswith(".xml"):
 | 
						|
            #print(os.path.join("PowerEditor/installer/APIs", file))
 | 
						|
            parse_xml_file(os.path.join("PowerEditor/installer/APIs", file))
 | 
						|
 | 
						|
def parse_xml_files_from_functionList_dir():
 | 
						|
 | 
						|
    for file in os.listdir("PowerEditor/installer/functionList"):
 | 
						|
        if file.endswith(".xml"):
 | 
						|
            #print(os.path.join("PowerEditor/installer/functionList", file))
 | 
						|
            parse_xml_file(os.path.join("PowerEditor/installer/functionList", file))
 | 
						|
 | 
						|
def parse_xml_files_from_nativeLang_dir():
 | 
						|
 | 
						|
    for file in os.listdir("PowerEditor/installer/nativeLang"):
 | 
						|
        if file.endswith(".xml"):
 | 
						|
            #print(os.path.join("PowerEditor/installer/nativeLang", file))
 | 
						|
            parse_xml_file(os.path.join("PowerEditor/installer/nativeLang", file))
 | 
						|
 | 
						|
def parse_xml_files_from_themes_dir():
 | 
						|
 | 
						|
    for file in os.listdir("PowerEditor/installer/themes"):
 | 
						|
        if file.endswith(".xml"):
 | 
						|
            #print(os.path.join("PowerEditor/installer/themes", file))
 | 
						|
            parse_xml_file(os.path.join("PowerEditor/installer/themes", file))
 | 
						|
 | 
						|
def parse_xml_files_from_src_dir():
 | 
						|
 | 
						|
    for file in os.listdir("PowerEditor/src"):
 | 
						|
        if file.endswith(".xml"):
 | 
						|
            #print(os.path.join("PowerEditor/src", file))
 | 
						|
            parse_xml_file(os.path.join("PowerEditor/src", file))
 | 
						|
 | 
						|
print('Start syntax check for xml files.')
 | 
						|
parse_xml_files_from_APIs_dir()
 | 
						|
parse_xml_files_from_functionList_dir()
 | 
						|
parse_xml_files_from_nativeLang_dir()
 | 
						|
parse_xml_files_from_themes_dir()
 | 
						|
parse_xml_files_from_src_dir()
 | 
						|
print('Done.')
 | 
						|
 | 
						|
if has_error:
 | 
						|
    sys.exit(-2)
 | 
						|
else:
 | 
						|
    sys.exit()
 |