1*b7c941bbSAndroid Build Coastguard Worker#!/usr/bin/env python 2*b7c941bbSAndroid Build Coastguard Worker# 3*b7c941bbSAndroid Build Coastguard Worker# Copyright (C) 2014 The Android Open Source Project 4*b7c941bbSAndroid Build Coastguard Worker# 5*b7c941bbSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the 'License'); 6*b7c941bbSAndroid Build Coastguard Worker# you may not use this file except in compliance with the License. 7*b7c941bbSAndroid Build Coastguard Worker# You may obtain a copy of the License at 8*b7c941bbSAndroid Build Coastguard Worker# 9*b7c941bbSAndroid Build Coastguard Worker# http://www.apache.org/licenses/LICENSE-2.0 10*b7c941bbSAndroid Build Coastguard Worker# 11*b7c941bbSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software 12*b7c941bbSAndroid Build Coastguard Worker# distributed under the License is distributed on an 'AS IS' BASIS, 13*b7c941bbSAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14*b7c941bbSAndroid Build Coastguard Worker# See the License for the specific language governing permissions and 15*b7c941bbSAndroid Build Coastguard Worker# limitations under the License. 16*b7c941bbSAndroid Build Coastguard Worker# 17*b7c941bbSAndroid Build Coastguard Workerimport hashlib 18*b7c941bbSAndroid Build Coastguard Workerimport os 19*b7c941bbSAndroid Build Coastguard Workerimport subprocess 20*b7c941bbSAndroid Build Coastguard Workerimport sys 21*b7c941bbSAndroid Build Coastguard Worker 22*b7c941bbSAndroid Build Coastguard Workerdensities = [ 23*b7c941bbSAndroid Build Coastguard Worker "ldpi", 24*b7c941bbSAndroid Build Coastguard Worker "mdpi", 25*b7c941bbSAndroid Build Coastguard Worker "tvdpi", 26*b7c941bbSAndroid Build Coastguard Worker "hdpi", 27*b7c941bbSAndroid Build Coastguard Worker "xhdpi", 28*b7c941bbSAndroid Build Coastguard Worker "400dpi", 29*b7c941bbSAndroid Build Coastguard Worker "xxhdpi", 30*b7c941bbSAndroid Build Coastguard Worker "xxxhdpi" 31*b7c941bbSAndroid Build Coastguard Worker] 32*b7c941bbSAndroid Build Coastguard Worker 33*b7c941bbSAndroid Build Coastguard Worker# A script to find holo images which are duplicated in the landscape and 34*b7c941bbSAndroid Build Coastguard Worker# portrait folder. The landscape images will then be deleted as Android will 35*b7c941bbSAndroid Build Coastguard Worker# look up landscape resources in the portrait folder if it doesn't exist in the 36*b7c941bbSAndroid Build Coastguard Worker# landscape folder. This will reduce the size of the Holo test case. 37*b7c941bbSAndroid Build Coastguard Workerdef main(argv): 38*b7c941bbSAndroid Build Coastguard Worker run(True) 39*b7c941bbSAndroid Build Coastguard Worker run(False) 40*b7c941bbSAndroid Build Coastguard Worker 41*b7c941bbSAndroid Build Coastguard Workerdef run(sw): 42*b7c941bbSAndroid Build Coastguard Worker for density in densities: 43*b7c941bbSAndroid Build Coastguard Worker portDir = getDirName(density, sw, False) 44*b7c941bbSAndroid Build Coastguard Worker landDir = getDirName(density, sw, True) 45*b7c941bbSAndroid Build Coastguard Worker portrait = getAllHashes(portDir) 46*b7c941bbSAndroid Build Coastguard Worker landscape = getAllHashes(landDir) 47*b7c941bbSAndroid Build Coastguard Worker for f in portrait: 48*b7c941bbSAndroid Build Coastguard Worker if f in landscape and landscape[f] == portrait[f]: 49*b7c941bbSAndroid Build Coastguard Worker subprocess.call(["rm", landDir + "/" + f]) 50*b7c941bbSAndroid Build Coastguard Worker 51*b7c941bbSAndroid Build Coastguard Workerdef getAllHashes(dirName): 52*b7c941bbSAndroid Build Coastguard Worker files = {} 53*b7c941bbSAndroid Build Coastguard Worker for f in os.listdir(dirName): 54*b7c941bbSAndroid Build Coastguard Worker if f.endswith(".png"): 55*b7c941bbSAndroid Build Coastguard Worker files[f] = getHash(open(dirName + "/" + f, 'rb')) 56*b7c941bbSAndroid Build Coastguard Worker return files 57*b7c941bbSAndroid Build Coastguard Worker 58*b7c941bbSAndroid Build Coastguard Workerdef getHash(f): 59*b7c941bbSAndroid Build Coastguard Worker return hashlib.sha1(f.read()).hexdigest() 60*b7c941bbSAndroid Build Coastguard Worker 61*b7c941bbSAndroid Build Coastguard Workerdef getDirName(density, sw, land): 62*b7c941bbSAndroid Build Coastguard Worker name = "drawable-" 63*b7c941bbSAndroid Build Coastguard Worker if sw: 64*b7c941bbSAndroid Build Coastguard Worker name += "sw600dp-" 65*b7c941bbSAndroid Build Coastguard Worker if land: 66*b7c941bbSAndroid Build Coastguard Worker name += "land-" 67*b7c941bbSAndroid Build Coastguard Worker return name + density 68*b7c941bbSAndroid Build Coastguard Worker 69*b7c941bbSAndroid Build Coastguard Workerif __name__ == '__main__': 70*b7c941bbSAndroid Build Coastguard Worker main(sys.argv) 71