2016-10-27 17:48:18 +00:00
|
|
|
#!/usr/bin/env python3
|
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
# vim: autoindent shiftwidth=4 expandtab textwidth=120 tabstop=4 softtabstop=4
|
|
|
|
|
|
|
|
###############################################################################
|
|
|
|
# OpenLP - Open Source Lyrics Projection #
|
|
|
|
# --------------------------------------------------------------------------- #
|
2017-12-29 09:15:48 +00:00
|
|
|
# Copyright (c) 2008-2018 OpenLP Developers #
|
2016-10-27 17:48:18 +00:00
|
|
|
# --------------------------------------------------------------------------- #
|
|
|
|
# This program is free software; you can redistribute it and/or modify it #
|
|
|
|
# under the terms of the GNU General Public License as published by the Free #
|
|
|
|
# Software Foundation; version 2 of the License. #
|
|
|
|
# #
|
|
|
|
# This program is distributed in the hope that it will be useful, but WITHOUT #
|
|
|
|
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or #
|
|
|
|
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for #
|
|
|
|
# more details. #
|
|
|
|
# #
|
|
|
|
# You should have received a copy of the GNU General Public License along #
|
|
|
|
# with this program; if not, write to the Free Software Foundation, Inc., 59 #
|
|
|
|
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
|
|
|
|
###############################################################################
|
|
|
|
|
|
|
|
import fnmatch
|
|
|
|
import os
|
|
|
|
|
|
|
|
from lxml import etree
|
|
|
|
|
2018-10-02 04:39:42 +00:00
|
|
|
|
2016-10-27 17:48:18 +00:00
|
|
|
resource_path = os.path.join('..', 'resources', 'images')
|
|
|
|
resource_file_path = os.path.join(resource_path, 'openlp-2.qrc')
|
|
|
|
src_directory = os.path.join('..', 'openlp')
|
|
|
|
|
|
|
|
RESOURCES_TO_IGNORE = [
|
|
|
|
'openlp.svg',
|
|
|
|
'OpenLP.ico',
|
|
|
|
'openlp-2.qrc',
|
|
|
|
'openlp-logo-16x16.png',
|
|
|
|
'openlp-logo-32x32.png',
|
|
|
|
'openlp-logo-48x48.png',
|
|
|
|
'openlp-logo-64x64.png',
|
|
|
|
'openlp-logo-128x128.png',
|
|
|
|
'README.txt'
|
|
|
|
]
|
|
|
|
|
|
|
|
tree = etree.parse(resource_file_path)
|
|
|
|
root = tree.getroot()
|
|
|
|
|
|
|
|
print('Looking for unused resources listed in openlp-2.qrc')
|
|
|
|
print('----------------------------------------------------------------')
|
|
|
|
resources = root.findall('.//file')
|
|
|
|
for current_dir, dirs, files in os.walk(src_directory):
|
|
|
|
for file_name in files:
|
|
|
|
if not fnmatch.fnmatch(file_name, '*.py'):
|
|
|
|
continue
|
|
|
|
file_path = os.path.join(current_dir, file_name)
|
|
|
|
with open(file_path) as source_file:
|
|
|
|
file_contents = source_file.read()
|
|
|
|
# Create a copy of the resources list so that we don't change the list while we're iterating through it!
|
|
|
|
for resource in list(resources):
|
|
|
|
if resource.text in file_contents:
|
|
|
|
resources.remove(resource)
|
|
|
|
if resources:
|
|
|
|
print('Unused resources listed in openlp-2.qrc:')
|
|
|
|
print(*(x.text for x in resources), sep='\n')
|
|
|
|
print('----------------------------------------------------------------')
|
|
|
|
remove = None
|
|
|
|
while remove != 'yes' and remove != 'no':
|
|
|
|
remove = input('Would you like to remove these files from openlp-2.qrc? (yes/no)')
|
|
|
|
if remove == 'yes':
|
|
|
|
for resource in resources:
|
|
|
|
parent = resource.find('..')
|
|
|
|
parent.remove(resource)
|
|
|
|
tree.write(resource_file_path, encoding='utf8')
|
|
|
|
else:
|
|
|
|
print('No unused resources listed in openlp-2.qrc')
|
|
|
|
print('----------------------------------------------------------------')
|
|
|
|
|
|
|
|
print('\nLooking for resource files which are not lited in openlp-2.qrc')
|
|
|
|
print('----------------------------------------------------------------')
|
|
|
|
resources = [x.text for x in root.findall('.//file')]
|
|
|
|
removable_resources = []
|
|
|
|
for resource_name in os.listdir(resource_path):
|
|
|
|
if resource_name not in RESOURCES_TO_IGNORE and resource_name not in resources:
|
|
|
|
removable_resources.append(resource_name)
|
|
|
|
if removable_resources:
|
|
|
|
print('Resource files not listed in openlp-2.qrc:')
|
|
|
|
print(*removable_resources, sep='\n')
|
|
|
|
print('----------------------------------------------------------------')
|
|
|
|
remove = None
|
|
|
|
while remove != 'yes' and remove != 'no':
|
|
|
|
remove = input('Would you like to delete these files from the resource folder? (yes/no)')
|
|
|
|
print('----------------------------------------------------------------')
|
|
|
|
if remove == 'yes':
|
|
|
|
for resource in removable_resources:
|
|
|
|
resource_file = os.path.join(resource_path, resource)
|
|
|
|
print('Removing {file}'.format(file=resource_file))
|
|
|
|
os.remove(resource_file)
|
|
|
|
else:
|
|
|
|
print('All resource files are listed!')
|