def search_db_files(self, _dst_filename_func): """ EXAMPLE RESULTS /Users/<someuser>/Library/Application Support/Google/Chrome//Profile 1/History /Users/<someuser>/Library/Application Support/Google/Chrome//Default/History /Users/<someuser>/Library/Application Support/Google/Chrome//Profile 3/History /Users/<someuser>/Library/Application Support/Google/Chrome//System Profile/History /Users/<someuser>/Library/Application Support/Google/Chrome//Guest Profile/History :param _dst_filename_func: :return: """ found_db_files = FileUtils.search_files(self.search_basedir, HISTORY_FILE_NAME) self.available_profiles = [ self.get_profile_from_file_path(file, to_lower=True) for file in found_db_files ] if not found_db_files: raise ValueError("Cannot find any {} under directory: {}".format( GOOGLE_CHROME_HIST_DB_TEXT, self.search_basedir)) LOG.info("Found DB files: \n%s", "\n".join(found_db_files)) if self.options.profile != ALL_PROFILES and self.options.profile.lower( ) not in self.available_profiles: raise ValueError("No {} found for profile: {}. " "Available profiles: {}".format( GOOGLE_CHROME_HIST_DB_TEXT, self.options.profile, self.available_profiles)) # Make a copy of each DB file as they might be locked by Chrome if running msg = "Copying {}.".format(GOOGLE_CHROME_HIST_DB_TEXT) + "\n {} -> {}" copied_db_files = [ FileUtils.copy_file_to_dir(db, self.db_copies_dir, _dst_filename_func, msg_template=msg) for db in found_db_files ] file_sizes = FileUtils.get_formatted_file_sizes_in_dir( self.db_copies_dir, since=DateUtils.get_current_time_minus(minutes=1)) LOG.info("Sizes of %s:\n%s", GOOGLE_CHROME_HIST_DB_TEXT, file_sizes) self.options.db_files.extend(copied_db_files)
def find_cdsw_runner_script(parent_dir): results = FileUtils.search_files(parent_dir, CDSW_RUNNER_PY) if not results: raise ValueError(f"Expected to find file: {CDSW_RUNNER_PY}") return results[0]