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