Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(895)

Unified Diff: third_party/WebKit/Source/devtools/scripts/jsdoc_validator/build_jsdoc_validator_jar.py

Issue 2464463002: Revert of DevTools: clean up scripts folder (Closed)
Patch Set: Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/devtools/scripts/jsdoc_validator/build_jsdoc_validator_jar.py
diff --git a/third_party/WebKit/Source/devtools/scripts/jsdoc_validator/build_jsdoc_validator_jar.py b/third_party/WebKit/Source/devtools/scripts/jsdoc_validator/build_jsdoc_validator_jar.py
deleted file mode 100755
index fd5f02def31825da2b320d296e12b3f96b1bacb4..0000000000000000000000000000000000000000
--- a/third_party/WebKit/Source/devtools/scripts/jsdoc_validator/build_jsdoc_validator_jar.py
+++ /dev/null
@@ -1,165 +0,0 @@
-#!/usr/bin/python
-
-import hashlib
-import operator
-import os
-import shutil
-import stat
-import subprocess
-import sys
-import tempfile
-
-
-def rel_to_abs(rel_path):
- return os.path.join(script_path, rel_path)
-
-
-java_bin_path = os.getenv('JAVA_HOME', '')
-if java_bin_path:
- java_bin_path = os.path.join(java_bin_path, 'bin')
-
-main_class = 'org.chromium.devtools.jsdoc.JsDocValidator'
-jar_name = 'jsdoc_validator.jar'
-hashes_name = 'hashes'
-src_dir = 'src'
-script_path = os.path.dirname(os.path.abspath(__file__))
-closure_jar_relpath = os.path.join('..', 'closure', 'compiler.jar')
-src_path = rel_to_abs(src_dir)
-hashes_path = rel_to_abs(hashes_name)
-
-
-def get_file_hash(file, blocksize=65536):
- sha = hashlib.sha256()
- buf = file.read(blocksize)
- while len(buf) > 0:
- sha.update(buf)
- buf = file.read(blocksize)
- return sha.hexdigest()
-
-
-def traverse(hasher, path):
- abs_path = rel_to_abs(path)
- info = os.lstat(abs_path)
- quoted_name = repr(path.replace('\\', '/'))
- if stat.S_ISDIR(info.st_mode) and not os.path.basename(path).startswith('.'):
- hasher.update('d ' + quoted_name + '\n')
- for entry in sorted(os.listdir(abs_path)):
- traverse(hasher, os.path.join(path, entry))
- elif stat.S_ISREG(info.st_mode) and path.endswith('.java'):
- hasher.update('r ' + quoted_name + ' ')
- hasher.update(str(info.st_size) + ' ')
- with open(abs_path, 'Ur') as file:
- f_hash = get_file_hash(file)
- hasher.update(f_hash + '\n')
-
-
-def get_src_dir_hash(dir):
- sha = hashlib.sha256()
- traverse(sha, dir)
- return sha.hexdigest()
-
-
-def get_actual_hashes():
- hashed_files = [(jar_name, True)]
- hashes = {}
- for (file_name, binary) in hashed_files:
- try:
- hash = get_file_hash(open(file_name, 'rb' if binary else 'r'))
- hashes[file_name] = hash
- except IOError:
- hashes[file_name] = '0'
- hashes[src_dir] = get_src_dir_hash(src_dir)
- return hashes
-
-
-def get_expected_hashes():
- try:
- with open(hashes_path, 'r') as file:
- return {file_name: hash for (file_name, hash) in [(name.strip(), hash.strip()) for (hash, name) in [line.split(' ', 1) for line in file]]}
- except:
- return None
-
-
-def run_and_communicate(command, error_template):
- proc = subprocess.Popen(command, stdout=subprocess.PIPE, shell=True)
- proc.communicate()
- if proc.returncode:
- print >> sys.stderr, error_template % proc.returncode
- sys.exit(proc.returncode)
-
-
-def build_artifacts():
- print 'Compiling...'
- java_files = []
- for root, dirs, files in sorted(os.walk(src_path)):
- for file_name in files:
- if file_name.endswith('.java'):
- java_files.append(os.path.join(root, file_name))
-
- bin_path = tempfile.mkdtemp()
- manifest_file = tempfile.NamedTemporaryFile(mode='wt', delete=False)
- try:
- manifest_file.write('Class-Path: %s\n' % closure_jar_relpath)
- manifest_file.close()
- javac_path = os.path.join(java_bin_path, 'javac')
- javac_command = '%s -d %s -cp %s %s' % (javac_path, bin_path, rel_to_abs(closure_jar_relpath), ' '.join(java_files))
- run_and_communicate(javac_command, 'Error: javac returned %d')
-
- print 'Building jar...'
- artifact_path = rel_to_abs(jar_name)
- jar_path = os.path.join(java_bin_path, 'jar')
- jar_command = '%s cvfme %s %s %s -C %s .' % (jar_path, artifact_path, manifest_file.name, main_class, bin_path)
- run_and_communicate(jar_command, 'Error: jar returned %d')
- finally:
- os.remove(manifest_file.name)
- shutil.rmtree(bin_path, True)
-
-
-def update_hashes():
- print 'Updating hashes...'
- with open(hashes_path, 'w') as file:
- file.writelines(['%s %s\n' % (hash, name) for (name, hash) in get_actual_hashes().iteritems()])
-
-
-def hashes_modified():
- expected_hashes = get_expected_hashes()
- if not expected_hashes:
- return [('<no expected hashes>', 1, 0)]
- actual_hashes = get_actual_hashes()
- results = []
- for name, expected_hash in expected_hashes.iteritems():
- actual_hash = actual_hashes.get(name)
- if expected_hash != actual_hash:
- results.append((name, expected_hash, actual_hash))
- return results
-
-
-def help():
- print 'usage: %s [option]' % os.path.basename(__file__)
- print 'Options:'
- print '--force-rebuild: Rebuild classes and jar even if there are no source file changes'
- print '--no-rebuild: Do not rebuild jar, just update hashes'
-
-
-def main():
- no_rebuild = False
- force_rebuild = False
-
- if len(sys.argv) > 1:
- if sys.argv[1] == '--help':
- help()
- return
- no_rebuild = sys.argv[1] == '--no-rebuild'
- force_rebuild = sys.argv[1] == '--force-rebuild'
-
- if not hashes_modified() and not force_rebuild:
- print 'No modifications found, rebuild not required.'
- return
- if not no_rebuild:
- build_artifacts()
-
- update_hashes()
- print 'Done.'
-
-if __name__ == '__main__':
- main()

Powered by Google App Engine
This is Rietveld 408576698