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