Merge "Update the repo script to only list repos once"
authorRyota Mibu <r-mibu@cq.jp.nec.com>
Mon, 25 Jun 2018 10:14:31 +0000 (10:14 +0000)
committerGerrit Code Review <gerrit@opnfv.org>
Mon, 25 Jun 2018 10:14:31 +0000 (10:14 +0000)
releases/scripts/release-status.sh [changed mode: 0644->0755]
releases/scripts/repos.py

old mode 100644 (file)
new mode 100755 (executable)
index da66bc9..6790100
@@ -12,6 +12,8 @@ set -o pipefail
 TAG="${TAG:-opnfv-6.0.0}"
 RELEASE="${RELEASE:-fraser}"
 
+[ -a repos.txt ] && rm repos.txt
+
 for project in releases/$RELEASE/*; do
     python releases/scripts/repos.py -n -f $project >> repos.txt
 done
@@ -21,5 +23,3 @@ do
     tag="$(git ls-remote "https://gerrit.opnfv.org/gerrit/$repo.git" "refs/tags/$TAG")"
     echo "$repo $tag"
 done < repos.txt
-
-# rm repos.txt
index 0ded020..58454c3 100644 (file)
@@ -15,6 +15,38 @@ import argparse
 import yaml
 
 
+class Repo(object):
+    """Object representing a repo listed in the release file.
+
+    Includes eq, hash, and ne methods so set comparisons work
+    """
+
+    def __init__(self, repo=None, ref=None, version=None):
+        self.repo = repo
+        self.ref = ref
+        self.version = version
+
+    def __repr__(self):
+        if self.version:
+            return "%s %s %s" % (self.repo, self.ref, self.version)
+        elif self.ref:
+            return "%s %s" % (self.repo, self.ref)
+        return "%s" % self.repo
+
+    def __eq__(self, obj):
+        if isinstance(obj, Repo):
+            return ((self.repo == obj.repo) and
+                    (self.ref == obj.ref) and
+                    (self.version == obj.version))
+        return False
+
+    def __ne__(self, obj):
+        return (not self.__eq__(obj))
+
+    def __hash__(self):
+        return hash(self.__repr__())
+
+
 def main():
     """Given a release yamlfile list the repos it contains"""
 
@@ -45,15 +77,17 @@ def list_repos(project, args):
     if 'releases' not in project:
         exit(0)
 
+    repos = set()
     for item in lookup:
         repo, ref = next(iter(item['location'].items()))
         if args.names:
-            print(repo)
+            repos.add(Repo(repo))
         elif args.release and item['version'] == args.release:
-            print("%s %s" % (repo, ref))
+            repos.add(Repo(repo, ref))
         elif not args.release:
-            # Print all releases
-            print("%s %s %s" % (repo, item['version'], ref))
+            repos.add(Repo(repo, ref, item['version']))
+    for repo in repos:
+        print repo
 
 
 if __name__ == "__main__":