scripts/test-hid-vs-ui.py | 174 ---------------------------------------------- 1 file changed, 174 deletions(-)
New commits: commit fe392d97b1bc49580a1bf48abbfd0e2c03ae35a8 Author: Caolán McNamara <caol...@redhat.com> Date: Fri Apr 18 10:49:42 2014 +0100 test-hid-vs-ui moved to core diff --git a/scripts/test-hid-vs-ui.py b/scripts/test-hid-vs-ui.py deleted file mode 100755 index f6ba14f..0000000 --- a/scripts/test-hid-vs-ui.py +++ /dev/null @@ -1,174 +0,0 @@ -#!/usr/bin/env python -# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- -# -# This file is part of the LibreOffice project. -# -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, you can obtain one at http://mozilla.org/MPL/2.0/. -# -# Parses all help files (.xhp) to check that hids referencing .ui are up-to-date -# From fdo#67350 - - -import sys -import argparse -import os -import subprocess -import xml.etree.ElementTree as ET -import collections -import re -import smtplib -import email -import email.mime.text -import time -import datetime - -# retrieve all hids related to .ui files -def init_hids(): - global args - repo_dir='/var/tmp/help.git' - if not os.path.exists(repo_dir):os.makedirs(repo_dir) - os.chdir(repo_dir) - - if not os.path.exists(os.path.join(repo_dir,'config')): - subprocess.call(['git','clone','--bare','git://gerrit.libreoffice.org/help',repo_dir]) - elif not args['git_static']: - subprocess.call(['git','fetch','origin']) - return subprocess.check_output(['git','grep','hid="[^"]*/[^"]*">','master','--']) - -# retrieve .ui files list from the core -def init_core_files(): - global core_repo_dir - core_repo_dir = args['core_repo_dir'] - if core_repo_dir is None: core_repo_dir = '/var/tmp/core.git' - - if not os.path.exists(core_repo_dir):os.makedirs(core_repo_dir) - os.chdir(core_repo_dir) - - if not os.path.exists(os.path.join(core_repo_dir,'.git')): - subprocess.call(['git','clone','git://gerrit.libreoffice.org/core',core_repo_dir]) - elif not args['git_static']: - subprocess.call(['git','fetch','origin']) - allfiles = subprocess.check_output(['git','ls-tree','--name-only','--full-name','-r','master']) - return re.findall('.*\.ui',allfiles) - - -if __name__ == "__main__": - - parser = argparse.ArgumentParser('hid for ui consistency parser') - parser.add_argument('-s', '--send-to', action='append', help='email address to send the report to. Use one flag per address.', required=False) - parser.add_argument('-g', '--git-static', action='store_true', help='to avoid contacting remote server to refresh repositories.', required=False) - parser.add_argument('-r', '--core-repo-dir', help='enforce path to core repository when analyzing .ui files.', required=False) - args=vars(parser.parse_args()) - - rows = init_hids().splitlines() - #<tree>:<relative_file>:<text> - # handled as sets to remove duplicates (and we don't need an iterator) - targets = collections.defaultdict(set) - origin = collections.defaultdict(set) - - # fill all matching hids and their parent file - for row in rows: - fname, rawtext = row.split(':',2)[1:] - hid = rawtext.split('hid="')[1].split('"')[0] - if hid.startswith('.uno'): continue - uifileraw, compname = hid.rsplit('/',1) - uifile = uifileraw + ".ui" - # map modules/ etc, which exist only in install - # back to their source location - if uifile.startswith("modules/scalc"): - uifile = "sc/scalc" + uifile[13:] - elif uifile.startswith("modules/swriter"): - uifile = "sw/swriter" + uifile[15:] - elif uifile.startswith("modules/schart"): - uifile = "chart2" + uifile[14:] - elif uifile.startswith("modules/smath"): - uifile = "starmath/smath" + uifile[13:] - elif uifile.startswith("modules/sdraw"): - uifile = "sd/sdraw" + uifile[13:] - elif uifile.startswith("modules/simpress"): - uifile = "sd/simpress" + uifile[16:] - elif uifile.startswith("modules/BasicIDE"): - uifile = "basctl/basicide" + uifile[16:] - elif uifile.startswith("modules/spropctrlr"): - uifile = "extensions/spropctrlr" + uifile[18:] - elif uifile.startswith("sfx"): - uifile = "sfx2" + uifile[3:] - elif uifile.startswith("svt"): - uifile = "svtools" + uifile[3:] - components = uifile.split('/',1); - uifile = components[0] + '/uiconfig/' + components[1] - targets[uifile].add(compname.split(':')[0]) - origin[uifile].add(fname) # help file(s) - - uifileslist = init_core_files() - # allfiles = init_core_files() - # uifileslist = '\n'.join(re.findall('.*\.ui',allfiles)) - errors = '' - # search in all .ui files referenced in help - # 2 possible errors: file not found in repo, id not found in file - for uikey in dict.keys(targets): - if uikey not in uifileslist: - if len(origin[uikey]) == 1: - errors += '\nFrom ' + origin[uikey].pop() - else: - errors += '\nFrom one of ' + str(origin[uikey]).replace('set(','').replace(')','') - errors += ', we did not find file '+ uikey+'.' - continue - - full_path = os.path.join(core_repo_dir,uikey) - # print full_path - root = ET.parse(full_path).getroot() - ids = [element.attrib['id'].split(':')[0] for element in root.findall('.//object[@id]') ] - # print targets[uikey] - missing_ids = [ element for element in targets[uikey] if element not in ids ] - if missing_ids: - if len(origin[uikey]) == 1: - errors += '\nFrom ' + origin[uikey].pop() - else: - errors += '\nFrom one of ' + str(origin[uikey]).replace('set(','').replace(')','') - errors += ', referenced items '+ str(missing_ids) + ' were not found inside '+ uikey+'.' - - if not errors: - errors = '\nall is clean\n' - - if args['send_to']: - msg_from = os.path.basename(sys.argv[0]) + '@libreoffice.org' - if isinstance(args['send_to'], basestring): - msg_to = [args['send_to']] - else: - msg_to = args['send_to'] - print "send to array " + msg_to[0] - - server = smtplib.SMTP('localhost') - body = ''' -Hello, - -Here is the report for wrong hids from help related to .ui files - -''' - body += errors - body += ''' - -Best, - -Your friendly LibreOffice Help-ids Checker - -Note: The bot generating this message can be found and improved here: - https://gerrit.libreoffice.org/gitweb?p=dev-tools.git;a=blob;f=scripts/test-hid-vs-ui.py''' - now = datetime.datetime.now() - msg = email.mime.text.MIMEText(body, 'plain', 'UTF-8') - msg['From'] = msg_from - msg['To'] = msg_to[0] - msg['Cc'] = ', '.join(msg_to[1:]) # Works only if at least 2 items in tuple - msg['Date'] = email.utils.formatdate(time.mktime(now.timetuple())) - msg['Subject'] = 'LibreOffice Gerrit News for python on %s' % (now.date().isoformat()) - msg['Reply-To'] = msg_to[0] - msg['X-Mailer'] = 'LibreOfficeGerritDigestMailer 1.1' - - server.sendmail(msg_from, msg_to, str(msg)) - else: - print errors - -# vim: set et sw=4 ts=4:
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits