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