2016-04-28 2 views
0

Ich möchte den Pfad eines Repository finden, das seinen Namen in einer Android Build-Umgebung hat.Wie arbeitet Croot in Android? Außerdem, wie repliziere ich diese Funktionalität in einem Python-Skript?

Derzeit ist dies, wie ich es tun:

  • Croot (Vielleicht Croot Quelle mir einen Hinweis dies in Python zu implementieren bekommen kann helfen?)
  • vi .repo/manifest.xml
  • grep für Repository-Namen und den entsprechenden Pfad
  • cd Repositorypfad

ich möchte erreichen diese Schritte mit einem python-Skript finden. Die Anforderung ist in der Lage, dies von überall in einem Android-Build-System zu tun angesichts der Name des Projekts (die ich von der Gerrit Ich möchte Cherry-Pick oder ziehen).

Dieser Befehl würde mich in das Projektverzeichnis bringen.

./test.py project_name

Irgendwelche Ideen oder alternative Methoden zu erreichen, auch dies hilfreich wäre. Vielen Dank im Voraus!

Antwort

0

Nun, das war der Trick!

import sys 
import os 
import xml.etree.ElementTree as ET 

def main(): 
    project_name=str(sys.argv[1]) 
    top_dir=os.environ['ANDROID_BUILD_TOP']  # There is a global variable that is set 
                # that will help you do croot while 
                # running in python shell. 
    manifest_file='.repo/manifests.xml' 

    os.chdir(top_dir) 
    tree = ET.parse(manifest_file) 
    root = tree.getroot() 
    for project in root.findall('project'): 
     if (project_name == project.get('name')): 
      print project.get('path') 
      exit() 

if __name__ == "__main__": 
    main() 

Das einzige Problem ist, ich nicht cd zum Projektpfad kann direkt, da Sie nicht in der Lage sind das Verzeichnis der Eltern an der Ausfahrt zu ändern. Ich kann damit leben.

Verwandte Themen