Home | History | Annotate | Download | only in sdk
      1 # Copyright 2015 The Chromium Authors. All rights reserved.
      2 # Use of this source code is governed by a BSD-style license that can be
      3 # found in the LICENSE file.
      4 
      5 import os
      6 
      7 from devil import devil_env
      8 from devil.utils import lazy
      9 
     10 with devil_env.SysPath(devil_env.DEPENDENCY_MANAGER_PATH):
     11   import dependency_manager  # pylint: disable=import-error
     12 
     13 
     14 def GetPath(build_tool):
     15   try:
     16     return devil_env.config.LocalPath(build_tool)
     17   except dependency_manager.NoPathFoundError:
     18     pass
     19 
     20   try:
     21     return _PathInLocalSdk(build_tool)
     22   except dependency_manager.NoPathFoundError:
     23     pass
     24 
     25   return devil_env.config.FetchPath(build_tool)
     26 
     27 
     28 def _PathInLocalSdk(build_tool):
     29   build_tools_path = _build_tools_path.read()
     30   return (os.path.join(build_tools_path, build_tool) if build_tools_path
     31           else None)
     32 
     33 
     34 def _FindBuildTools():
     35   android_sdk_path = devil_env.config.LocalPath('android_sdk')
     36   if not android_sdk_path:
     37     return None
     38 
     39   build_tools_contents = os.listdir(
     40       os.path.join(android_sdk_path, 'build-tools'))
     41 
     42   if not build_tools_contents:
     43     return None
     44   else:
     45     if len(build_tools_contents) > 1:
     46       build_tools_contents.sort()
     47     return os.path.join(android_sdk_path, 'build-tools',
     48                         build_tools_contents[-1])
     49 
     50 
     51 _build_tools_path = lazy.WeakConstant(_FindBuildTools)
     52