1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- import re
- import subprocess
- import checksymbolslib.br as br
- import checksymbolslib.kconfig as kconfig
- import checksymbolslib.makefile as makefile
- file_types = [
- kconfig,
- makefile,
- ]
- def get_list_of_files_in_the_repo():
- cmd = ['git', 'ls-files']
- p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
- stdout = p.communicate()[0]
- processed_output = [str(line.decode().rstrip()) for line in stdout.splitlines() if line]
- return processed_output
- def get_list_of_files_to_process(all_files):
- files_to_process = []
- for f in all_files:
- if br.file_belongs_to_an_ignored_diretory(f):
- continue
- for t in file_types:
- if t.check_filename(f):
- files_to_process.append(f)
- break
- return files_to_process
- def get_list_of_filenames_with_pattern(all_files, exclude_list, pattern):
- re_pattern = re.compile(r'{}'.format(pattern))
- matching_filenames = []
- for filename in all_files:
- if re_pattern.search(filename):
- if filename not in exclude_list:
- matching_filenames.append(filename)
- return matching_filenames
- def read_file(filename):
- file_content_raw = []
- with open(filename, 'r', errors='surrogateescape') as f:
- for lineno, text in enumerate(f.readlines()):
- file_content_raw.append([lineno + 1, text])
- return file_content_raw
- def cleanup_file_content(file_content_raw):
- cleaned_up_content = []
- continuation = False
- last_line = None
- first_lineno = None
- for cur_lineno, cur_line in file_content_raw:
- if continuation:
- line = last_line + cur_line
- lineno = first_lineno
- else:
- line = cur_line
- lineno = cur_lineno
- continuation = False
- last_line = None
- first_lineno = None
- clean_line = line.rstrip('\n')
- if clean_line.endswith('\\'):
- continuation = True
- last_line = clean_line.rstrip('\\')
- first_lineno = lineno
- continue
- cleaned_up_content.append([lineno, clean_line])
- return cleaned_up_content
- def populate_db_from_file(db, filename):
- file_content_raw = read_file(filename)
- file_content_to_process = cleanup_file_content(file_content_raw)
- for t in file_types:
- if t.check_filename(filename):
- t.populate_db(db, filename, file_content_to_process)
|