summaryrefslogtreecommitdiffstats
path: root/build/ppCheck.py
diff options
context:
space:
mode:
authorNew Tobin Paradigm <email@mattatobin.com>2020-04-04 18:10:10 -0400
committerGitHub <noreply@github.com>2020-04-04 18:10:10 -0400
commitfd5e25ff472b3fd106c7028b150a637bd86e164f (patch)
treea2ed171cf86f72dbe79dcaad77a170c7ffea826d /build/ppCheck.py
parenta333257d762ccb56ea3d81cd748f132440f7e79e (diff)
downloadUXP-fd5e25ff472b3fd106c7028b150a637bd86e164f.tar
UXP-fd5e25ff472b3fd106c7028b150a637bd86e164f.tar.gz
UXP-fd5e25ff472b3fd106c7028b150a637bd86e164f.tar.lz
UXP-fd5e25ff472b3fd106c7028b150a637bd86e164f.tar.xz
UXP-fd5e25ff472b3fd106c7028b150a637bd86e164f.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