Procházet zdrojové kódy

move logic to Class Properties

Tobias Simetsreiter před 5 roky
rodič
revize
b828f9c268
1 změnil soubory, kde provedl 28 přidání a 14 odebrání
  1. 28 14
      abe_setup.py

+ 28 - 14
abe_setup.py

@@ -21,16 +21,20 @@ def main():
         clone_repo_cached( args.output_dir, source_url.geturl(), args.tag,
             cache_dir=args.cache_dir, fetch_origin=(not args.no_fetch_origin))
     for ret in recurse_abe_submodules( args.output_dir, source_url, args.tag):
-        if args.execute_command:
+        if args.abe_command:
             executeAbeCommand( ret.path, args.execute_command )
         else:
             clone_repo_cached( ret.path, ret.remote, ret.ref,
                 cache_dir=args.cache_dir, fetch_origin=(not args.no_fetch_origin))
+        if args.execute_command:
+            from subprocess import run
+            run(args.execute_command, shell=True,check=True, cwd=ret.path)
 
 
 def parser():
     import argparse
     p = argparse.ArgumentParser()
+    p.add_argument('-a', '--abe_command', default=None)
     p.add_argument('-d', '--debug', action='count', default=1)
     p.add_argument('-q', '--quiet', action='store_true')
     p.add_argument('-o', '--output_dir', default='.')
@@ -58,13 +62,12 @@ def recurse_abe_submodules(path, remote, ref, parent=None):
     sub = AbeSubmodule([path, url.geturl(), ref], AbeSubType.SUBMODULE, parent)
     yield sub
 
-    subm = get_abe_tree( path )
+    subm = get_abe_subtree( path )
 
     for su in subm:
-        newpath = os.path.normpath(os.path.join( sub.path, su.path))
-        newurl = su.urlparse(url)
-        print(f"Repo: \"{path}\" has Submodule: \"{newpath}\" Type: \"{su.subtype}\" From: \"{newurl.geturl()}\"") if DEBUG else None
-        for ret in recurse_abe_submodules( newpath, newurl, su.ref, sub):
+        su.parent = sub
+        for ret in recurse_abe_submodules( su.fullpath, su.url, su.ref, sub):
+            print(f"Repo: \"{path}\" has Submodule: \"{su.fullpath}\" Type: \"{su.subtype}\" From: \"{su.url.geturl()}\"") if DEBUG else None
             yield ret
 
 
@@ -207,17 +210,28 @@ class AbeSubmodule():
     def __repr__(self):
         return f"AbeSubmodule(['{self.path}','{self.remote}','{self.ref}'], {self.subtype}, {self.parent})"
 
-    def urlparse(self, parent_url):
+    @property
+    def url(self):
         from urllib.parse import urlparse
-        suurl = urlparse(self.remote)
-        newurl = parent_url._replace(path=suurl.path)
-        if suurl.netloc:
-            newurl = newurl._replace(netloc=suurl.netloc)
-        if suurl.scheme:
-            newurl = newurl._replace(scheme=suurl.scheme)
+        if not self.parent:
+            return urlparse(self.remote)
+
+        surl = urlparse(self.remote)
+        newurl = self.parent.url._replace(path=surl.path)
+        if surl.netloc:
+            newurl = newurl._replace(netloc=surl.netloc)
+        if surl.scheme:
+            newurl = newurl._replace(scheme=surl.scheme)
         return newurl
 
-def get_abe_tree(repo_dir):
+    @property
+    def fullpath(self):
+        if not self.parent:
+            return self.path
+        import os.path
+        return os.path.normpath(os.path.join( self.parent.path, self.path))
+
+def get_abe_subtree(repo_dir):
     import itertools
     subfile_generators = [
         get_abe_bsps(repo_dir),