|  | # Copyright 2016 Google Inc. | 
|  | # | 
|  | # Use of this source code is governed by a BSD-style license that can be | 
|  | # found in the LICENSE file. | 
|  |  | 
|  | from _adb import Adb | 
|  | import re | 
|  | import subprocess | 
|  |  | 
|  | __ADB = None | 
|  |  | 
|  | def init(device_serial, adb_binary): | 
|  | global __ADB | 
|  | __ADB = Adb(device_serial, adb_binary) | 
|  |  | 
|  | def join(*pathnames): | 
|  | return '/'.join(pathnames) | 
|  |  | 
|  | def basename(pathname): | 
|  | return pathname.rsplit('/', maxsplit=1)[-1] | 
|  |  | 
|  | def find_skps(skps): | 
|  | # root first, in case skps reside in a protected directory | 
|  | __ADB.root() | 
|  | escapedskps = [re.sub(r'([^a-zA-Z0-9_/\.\*\?\[\!\]])', r'\\\1', x) | 
|  | for x in skps] | 
|  | return __ADB.check('''\ | 
|  | for PATHNAME in %s; do | 
|  | if [ -d "$PATHNAME" ]; then | 
|  | find "$PATHNAME" -maxdepth 1 -name '*.skp' -o -name '*.mskp' | 
|  | else | 
|  | echo "$PATHNAME" | 
|  | fi | 
|  | done''' % ' '.join(escapedskps)).splitlines() |