diff --git a/tools/validate-files.py b/tools/validate-files.py index 06f71d1..19cc97e 100755 --- a/tools/validate-files.py +++ b/tools/validate-files.py @@ -22,6 +22,7 @@ def exit_usage(): def validate_library_file(file_path, quiet): + with open(file_path) as f: file_content = f.read() if 'DOCUMENTATION = ' not in file_content \ @@ -32,6 +33,30 @@ def validate_library_file(file_path, quiet): return 0 +def validate_callback_file(file_path, quiet): + required_attributes = [ + 'CALLBACK_VERSION', + 'CALLBACK_NAME'] + + with open(file_path) as file: + file_content = file.read() + if any([attr not in file_content for attr in required_attributes]): + if quiet < 3: + print( + 'Missing required callback plugin attributes in {}'.format(file_path)) + return 1 + return 0 + + +def validate_file(file_path, quiet): + if os.path.split(file_path)[0].endswith('library'): + return validate_library_file(file_path, quiet) + elif os.path.split(file_path)[0].endswith('callback_plugins'): + return validate_callback_file(file_path, quiet) + else: + raise ValueError() + + def parse_args(): p = argparse.ArgumentParser() @@ -52,28 +77,32 @@ def main(): path_args = args.path_args quiet = args.quiet exit_val = 0 + scanned_subdirs = ['callback_plugins', 'library'] failed_files = [] for base_path in path_args: + scanned_paths = [ + os.path.join( + base_path, + 'validations_common', + path) for path in scanned_subdirs] + if os.path.isdir(base_path): for subdir, dirs, files in os.walk(base_path): if '.tox' in dirs: dirs.remove('.tox') if '.git' in dirs: dirs.remove('.git') - for f in files: - if f.endswith('.py') \ - and not f == '__init__.py' \ - and subdir in [os.path.join(base_path, - 'validations_common', - 'library')]: - file_path = os.path.join(subdir, f) - if quiet < 1: - print('Validating {}'.format(file_path)) - failed = validate_library_file(file_path, quiet) - if failed: - failed_files.append(file_path) - exit_val |= failed + if subdir in scanned_paths: + for f in files: + if f.endswith('.py') and f != '__init__.py': + file_path = os.path.join(subdir, f) + if quiet < 1: + print('Validating {}'.format(file_path)) + failed = validate_file(file_path, quiet) + if failed: + failed_files.append(file_path) + exit_val |= failed else: print('Unexpected argument {}'.format(base_path)) exit_usage()