1*c8dee2aaSAndroid Build Coastguard Worker# Copyright 2016 Google Inc. 2*c8dee2aaSAndroid Build Coastguard Worker# 3*c8dee2aaSAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be 4*c8dee2aaSAndroid Build Coastguard Worker# found in the LICENSE file. 5*c8dee2aaSAndroid Build Coastguard Worker 6*c8dee2aaSAndroid Build Coastguard Workerfrom _adb import Adb 7*c8dee2aaSAndroid Build Coastguard Workerimport re 8*c8dee2aaSAndroid Build Coastguard Workerimport subprocess 9*c8dee2aaSAndroid Build Coastguard Worker 10*c8dee2aaSAndroid Build Coastguard Worker__ADB = None 11*c8dee2aaSAndroid Build Coastguard Worker 12*c8dee2aaSAndroid Build Coastguard Workerdef init(device_serial, adb_binary): 13*c8dee2aaSAndroid Build Coastguard Worker global __ADB 14*c8dee2aaSAndroid Build Coastguard Worker __ADB = Adb(device_serial, adb_binary) 15*c8dee2aaSAndroid Build Coastguard Worker 16*c8dee2aaSAndroid Build Coastguard Workerdef join(*pathnames): 17*c8dee2aaSAndroid Build Coastguard Worker return '/'.join(pathnames) 18*c8dee2aaSAndroid Build Coastguard Worker 19*c8dee2aaSAndroid Build Coastguard Workerdef basename(pathname): 20*c8dee2aaSAndroid Build Coastguard Worker return pathname.rsplit('/', maxsplit=1)[-1] 21*c8dee2aaSAndroid Build Coastguard Worker 22*c8dee2aaSAndroid Build Coastguard Workerdef find_skps(skps): 23*c8dee2aaSAndroid Build Coastguard Worker # root first, in case skps reside in a protected directory 24*c8dee2aaSAndroid Build Coastguard Worker __ADB.root() 25*c8dee2aaSAndroid Build Coastguard Worker escapedskps = [re.sub(r'([^a-zA-Z0-9_/\.\*\?\[\!\]])', r'\\\1', x) 26*c8dee2aaSAndroid Build Coastguard Worker for x in skps] 27*c8dee2aaSAndroid Build Coastguard Worker return __ADB.check('''\ 28*c8dee2aaSAndroid Build Coastguard Worker for PATHNAME in %s; do 29*c8dee2aaSAndroid Build Coastguard Worker if [ -d "$PATHNAME" ]; then 30*c8dee2aaSAndroid Build Coastguard Worker find "$PATHNAME" -maxdepth 1 -name '*.skp' -o -name '*.mskp' 31*c8dee2aaSAndroid Build Coastguard Worker else 32*c8dee2aaSAndroid Build Coastguard Worker echo "$PATHNAME" 33*c8dee2aaSAndroid Build Coastguard Worker fi 34*c8dee2aaSAndroid Build Coastguard Worker done''' % ' '.join(escapedskps)).splitlines() 35