summaryrefslogtreecommitdiffstats
path: root/build/ppCheck.py
diff options
context:
space:
mode:
authorNew Tobin Paradigm <email@mattatobin.com>2020-04-04 18:10:10 -0400
committerwolfbeast <mcwerewolf@wolfbeast.com>2020-04-14 13:24:17 +0200
commitb470422d5a86f5e6c97bfe7a935b4abd9e167077 (patch)
tree7592e15af8d56f5822630d4df80e8fc8408028fe /build/ppCheck.py
parent449d530a3037e65cb045bcd2cb8a28d33ce1493a (diff)
downloadUXP-b470422d5a86f5e6c97bfe7a935b4abd9e167077.tar
UXP-b470422d5a86f5e6c97bfe7a935b4abd9e167077.tar.gz
UXP-b470422d5a86f5e6c97bfe7a935b4abd9e167077.tar.lz
UXP-b470422d5a86f5e6c97bfe7a935b4abd9e167077.tar.xz
UXP-b470422d5a86f5e6c97bfe7a935b4abd9e167077.zip
Issue #1497 - Re-implement an un-preprocessed file check
Diffstat (limited to 'build/ppCheck.py')
-rw-r--r--build/ppCheck.py72
1 files changed, 72 insertions, 0 deletions
diff --git a/build/ppCheck.py b/build/ppCheck.py
new file mode 100644
index 000000000..1e27ca171
--- /dev/null
+++ b/build/ppCheck.py
@@ -0,0 +1,72 @@
+#!/usr/bin/env python
+
+from __future__ import print_function
+import os, sys
+
+if not len(sys.argv) is 2 or not os.path.exists(sys.argv[1]):
+ print("\nYou did not supply a valid path to check.")
+ exit(1)
+else:
+ print("\nChecking for un-preprocessed files...", end = ' ')
+ DIST_PATH = sys.argv[1]
+
+PP_FILE_TYPES = (
+ '.css',
+ '.dtd',
+ '.html',
+ '.js',
+ '.jsm',
+ '.xhtml',
+ '.xml',
+ '.xul',
+ '.manifest',
+ '.properties',
+ '.rdf'
+)
+
+PP_SPECIAL_TYPES = ('.css')
+
+PP_DIRECTIVES = [
+ 'define',
+ 'if',
+ 'ifdef',
+ 'ifndef',
+ 'elif',
+ 'elifdef',
+ 'endif',
+ 'error',
+ 'expand',
+ 'filter',
+ 'include',
+ 'literal',
+ 'undef',
+ 'unfilter'
+]
+
+PP_FILES = []
+PP_BAD_FILES = []
+
+for root, directories, filenames in os.walk(DIST_PATH):
+ for filename in filenames:
+ if filename.endswith(PP_FILE_TYPES):
+ PP_FILES += [ os.path.join(root, filename).replace(os.sep, '/') ]
+
+for file in PP_FILES:
+ with open(file) as fp:
+ marker = '%' if file.endswith(PP_SPECIAL_TYPES) else '#'
+ directives = tuple(marker + directive for directive in PP_DIRECTIVES)
+ for line in fp:
+ if line.startswith(directives):
+ PP_BAD_FILES += [ file.replace(DIST_PATH + '/', '') ]
+ fp.close()
+
+PP_BAD_FILES = list(dict.fromkeys(PP_BAD_FILES))
+
+print('Done!')
+
+if len(PP_BAD_FILES) > 0:
+ print("\nWARNING: The following {0} file(s) in {1} may require preprocessing:\n".format(len(PP_BAD_FILES), DIST_PATH))
+ for file in PP_BAD_FILES:
+ print(file)
+
+exit(0) \ No newline at end of file