Blob Blame History Raw
commit c01c1bab3b3530e04d9cb13bcf03d6f1a95a7f33
Author: Michal Domonkos <mdomonko@redhat.com>
Date:   Fri Jun 22 22:39:30 2018 +0200

    repotrack: add --repofrompath option. BZ 1506205
    
    Code taken from repoquery.

diff --git a/docs/repotrack.1 b/docs/repotrack.1
index 6b46ed0..597b7a5 100644
--- a/docs/repotrack.1
+++ b/docs/repotrack.1
@@ -19,6 +19,10 @@ Act as if running the specified arch (default: current arch).
 .IP "\fB\-r REPOID, \-\-repoid=REPOID\fP"
 Specify repo ids to query, can be specified multiple times (default is
 all enabled).
+.IP "\fB\-\-repofrompath=<repoid>,<path/url>\fP"
+Specify repoid & paths of additional repositories - unique repoid and complete
+path required, can be specified multiple times.
+Example: --repofrompath=myrepo,/path/to/repo
 .IP "\fB\-t, \-\-tempcache\fP"
 Use a temp dir for storing/accessing yum-cache.
 .IP "\fB\-p DESTDIR, \-\-download_path=DESTDIR\fP"
diff --git a/repotrack.py b/repotrack.py
index 8dd8b9c..79b761f 100755
--- a/repotrack.py
+++ b/repotrack.py
@@ -87,6 +87,10 @@ def parseArgs():
         help='check as if running the specified arch (default: current arch)')
     parser.add_option("-r", "--repoid", default=[], action='append',
         help="specify repo ids to query, can be specified multiple times (default is all enabled)")
+    parser.add_option("--repofrompath", action="append",
+        help="specify repoid & paths of additional repositories - unique repoid "
+             "and complete path required, can be specified multiple times. "
+             "Example: --repofrompath=myrepo,/path/to/repo")
     parser.add_option("-t", "--tempcache", default=False, action="store_true", 
         help="Use a temp dir for storing/accessing yum-cache")
     parser.add_option("-p", "--download_path", dest='destdir', 
@@ -157,8 +161,33 @@ def main():
             repo.enable()
             my._getSacks(archlist=archlist, thisrepo=repo.id)
 
-    my.doRepoSetup()    
-    my._getSacks(archlist=archlist)
+    if opts.repofrompath:
+        for repo in opts.repofrompath:
+            tmp = tuple(repo.split(','))
+            if len(tmp) != 2:
+                my.logger.error("Error: Bad repofrompath argument: %s" %repo)
+                continue
+            repoid, repopath = tmp
+            if repopath and repopath[0] == '/':
+                baseurl = 'file://' + repopath
+            else:
+                baseurl = repopath
+            try:
+                my.add_enable_repo(repoid, baseurls=[baseurl],
+                                   basecachedir=my.conf.cachedir,
+                                   timestamp_check=False)
+            except yum.Errors.DuplicateRepoError, e:
+                my.logger.error(e)
+                sys.exit(1)
+            if not opts.quiet:
+                my.logger.info("Added %s repo from %s" % (repoid, repopath))
+
+    try:
+        my.doRepoSetup()
+        my._getSacks(archlist=archlist)
+    except yum.Errors.RepoError, e:
+        my.logger.error(e)
+        sys.exit(1)
     
     unprocessed_pkgs = {}
     final_pkgs = {}