#!/usr/bin/env python # # Copyright (C) 2016 The CyanogenMod Project # Copyright (C) 2017-2020 The LineageOS Project # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # import os import sys from hashlib import sha1 DEVICE = 'sdm660-common' VENDOR = 'xiaomi' VENDOR_PATH = os.path.join( *['..', '..', '..', 'vendor', VENDOR, DEVICE, 'proprietary']) class Updater: def __init__(self, filename): self.filename = filename with open(self.filename, 'r') as f: self.lines = f.read().splitlines() def write(self): with open(self.filename, 'w') as f: f.write('\n'.join(self.lines) + '\n') def cleanup(self): for index, line in enumerate(self.lines): # Skip empty or commented lines if len(line) == 0 or line[0] == '#' or '|' not in line: continue # Drop SHA1 hash, if existing self.lines[index] = line.split('|')[0] self.write() def update(self): need_sha1 = False for index, line in enumerate(self.lines): # Skip empty lines if len(line) == 0: continue # Check if we need to set SHA1 hash for the next files if line[0] == '#': need_sha1 = (' - from' in line) continue if need_sha1: # Remove existing SHA1 hash line = line.split('|')[0] file_path = line.split(';')[0].split(':')[-1] if file_path[0] == '-': file_path = file_path[1:] with open(os.path.join(VENDOR_PATH, file_path), 'rb') as f: hash = sha1(f.read()).hexdigest() self.lines[index] = '{}|{}'.format(line, hash) self.write() for file in ['proprietary-files.txt', 'proprietary-files-fm.txt']: updater = Updater(file) if len(sys.argv) == 2 and sys.argv[1] == '-c': updater.cleanup() else: updater.update()