Repository: flink
Updated Branches:
  refs/heads/master 044bd42b4 -> 474153d4b


[hotfix] Add list_deps.py tool

The tool can be used to list the set of dependencies to make a diff
of dependencies between releases.


Project: http://git-wip-us.apache.org/repos/asf/flink/repo
Commit: http://git-wip-us.apache.org/repos/asf/flink/commit/474153d4
Tree: http://git-wip-us.apache.org/repos/asf/flink/tree/474153d4
Diff: http://git-wip-us.apache.org/repos/asf/flink/diff/474153d4

Branch: refs/heads/master
Commit: 474153d4b73503f341454ff46388b593a102d87f
Parents: 044bd42
Author: Aljoscha Krettek <aljoscha.kret...@gmail.com>
Authored: Mon Nov 2 14:52:00 2015 +0100
Committer: Aljoscha Krettek <aljoscha.kret...@gmail.com>
Committed: Tue Nov 3 10:48:01 2015 +0100

----------------------------------------------------------------------
 tools/list_deps.py | 62 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 62 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flink/blob/474153d4/tools/list_deps.py
----------------------------------------------------------------------
diff --git a/tools/list_deps.py b/tools/list_deps.py
new file mode 100755
index 0000000..aba92d5
--- /dev/null
+++ b/tools/list_deps.py
@@ -0,0 +1,62 @@
+#!/usr/bin/env python
+################################################################################
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+#  to you under the Apache License, Version 2.0 (the
+#  "License"); you may not use this file except in compliance
+#  with the License.  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################
+import xml.etree.ElementTree as ET
+import os
+import fnmatch
+import sys
+
+# This lists all dependencies in the Maven Project root given as first
+# argument. If a dependency is included in several versions it is listed once
+# for every version. The resul output is sorted. So this can be used
+# to get a diff between the Maven dependencies of two versions of a project.
+
+path = sys.argv[1]
+
+pomfiles = [os.path.join(dirpath, f)
+    for dirpath, dirnames, files in os.walk(path)
+    for f in fnmatch.filter(files, 'pom.xml')]
+
+deps = set()
+
+for pom in pomfiles:
+
+    root = ET.parse(pom).getroot()
+
+    for dep in root.iter('{http://maven.apache.org/POM/4.0.0}dependency'):
+        groupId = dep.find("{http://maven.apache.org/POM/4.0.0}groupId";).text
+        artifactId = 
dep.find("{http://maven.apache.org/POM/4.0.0}artifactId";).text
+        version = dep.find("{http://maven.apache.org/POM/4.0.0}version";)
+        # if it has no version tag it must be in dependencyManagement 
somewhere, with
+        # a version tag, so we already have it in our list
+        if version != None:
+            if "flink" in groupId: continue
+
+            depstring = groupId + " " + artifactId + " " + version.text
+            deps.add(depstring)
+
+deplist = list(deps)
+deplist.sort()
+
+for dep in deplist:
+    print dep
+
+
+
+#for atype in e.findall('dependency'):
+#    print(atype.get('foobar'))

Reply via email to